Sidebar en .net2

Soyez le premier à donner votre avis sur cette source.

Vue 14 369 fois - Téléchargée 1 022 fois

Description

Cette source en .net2 ma première sur ce site (il y a longtemps j'étais inscrit en tant que misterglacon :p) est une sorte de SDK pour creer une SideBar comme la future de windows vista ?

Il y a longtemps j'avais tenté d'en faire une, en vb.net mais c'était pas façil, mon problème était de réorganiser les fenêtres du bureau au chargement de la SideBar. En effet quand la SideBar se charge elle réduit le "WorkSpace" de windows, pour que les icones ainsi que les fenêtres maximisées n'empietent pas sur celle-ci.
Si vous comprenez pas (normal je pense)
avant : http://perso.wanadoo.fr/vod-k/shot.jpg
maintenant : http://perso.wanadoo.fr/vod-k/shot2.jpg

Récemment j'ai intégralement recommencé le projet et en passant trouvé une solution qui marche à merveille pour ne pas chambouler le bureau au chargement/déchargement de la barre.
Je vous propose donc cette assembly "Core.dll" avec un exemple. L'exemple n'est pas du tout terminé je n'ai même pas commencé la gestion de plugins...

Pour les API et la class Rectangle, ainsi que l'idée, je me suis inspiré de la source de Richard Clark ici (en c#...) : http://www.c2i.fr/code.aspx?IDCode=530<

L'assembly VodK.dll c'est mon petit framework... (ne contenant rien d'extraordinaire d'ailleur mais bien pratique)

Source / Exemple :


'Core.dll permet de transformer n'importe quelle form en sidebar !

'Un exemple...
'Creer un nouveau projet, ajouter une form (form1)
'Ajouter Core.dll en référence
'Ajouter une "application setting" de nom "WSS", type "String" et scope "User"(pour éviter le readonly ^^)
'Mettre la propriété de la Form "TopMost" à true (j'aurais du le faire dans l'assembly directement, un petit oublis..)

Public Class Form1
    Public WithEvents Screen As New Core.Screen 'la class Screen
    Public Windows As New Core.Windows 'la class Windows

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        'on décharge de la SideBar (sinon votre bureau se vera réduit...)
        Screen.Clear(Settings.Default.WSS) 'la restauration de la taille du bureau...
        Windows.Move(Me, Settings.Default.WSS, True, False) 'le déplacement de toutes les fenêtres du bureau (remaximiser les fenêtres...)
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'on charge la sidebar
        ' ! la largeur de votre sidebar sera la largeur de la form ici form1
        Screen.Initialize(Me, Settings.Default.WSS, True) 'chargement de la sidebar
        Windows.Move(Me, Settings.Default.WSS, True, True) 'déplacement des fenêtres du bureau (remaximiser les fenêtres...)
    End Sub

    Private Sub Screen_UpdateWSS(ByVal NewValue As String) Handles Screen.UpdateWSS
        Settings.Default.WSS = NewValue 'sans ça rien ne marchera
        'Settings.default.WSS c'est une "application setting" de type "string" et scope "user"
        'elle stocke la taille de votre workspace (sans la sidebar)
        'quand la sidebar se décharge la taille du workspace est réinitialisée à cette taille...
    End Sub
End Class

Conclusion :


je pense que l'exemple est suffisament commenté, contrairement à ma source :p
la source est un exemple beaucoup plus complet, qui gère les skins et la position (gauche/droite) de la sidebar sur le bureau
Essayez vous verrez...

Ah oui j'oubliais, j'ai utilisé la beta 2 de visual studio 2005 pour l'assembly et le projet exemple (sidebar.exe)

n'hésitez pas à donner votre avis :d
(désolé pour les fautes d'orthographes)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cYoann
Messages postés
6
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mars 2006

2 déc. 2005 à 21:17
Salut Pym Corp,
Ta "classe spéciale" c'est l'API SHAppBarMessage de shell32.exe
Mais personnellement je n'ai jamais réussi à la faire marcher en .net et je ne suis pas sur que c'est une manière "plus propre" de créer une sidebar.
Sinon pour les quelques bug genre avec la barre du menu démarrer en haut de l'écran ça doit se corriger... je n'y avais pas pensé ni pour les doubles écrans
je vais essayer de corriger tout ça merci pour les commentaires :)
cs_badrbadr
Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
3 novembre 2008
1
30 nov. 2005 à 16:51
ouais ouais ouais
moi j'ai trouvé la fonction SystemParametersInfo(...) de Win32 qui est capable de réduire le workspace de Windows
Pym Corp
Messages postés
167
Date d'inscription
jeudi 9 décembre 2004
Statut
Membre
Dernière intervention
18 novembre 2007
1
30 nov. 2005 à 13:23
Ouaip ben je sais pas en fait :\
Je viens de retester l'exe et ça ne me fait plus le bug d'hier (le truc pas propre).
Par contre c'est pas terrible aussi pour ceux qui ont la barre démarrer en haut par exemple, là c'est pas jolie.

Je posterais quand même ma source à l'occasion, mais je ne dit pas que ça sera pour bientôt.
Je développais une sidebar avec plugins à l'époque, mais bon j'accumule les projets plus ou moins abandonnés.. Il faudrait que je reprenne le tout, mais je n'ai pas vraiment le temps.

Ecrivez moi si vous êtes intéressé
Neo.balastik
Messages postés
796
Date d'inscription
jeudi 17 mai 2001
Statut
Membre
Dernière intervention
5 mai 2009
7
30 nov. 2005 à 10:26
Pym Corp > la critique est toujours facile. En attendant, tu ne nous démontres pas ce qu'est la définition du 'propre' pour toi ! Poste ton code et l'on verra enfin ta mystérieuse classe spéciale... Ceci dit, on attend de voir...
cs_badrbadr
Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
3 novembre 2008
1
30 nov. 2005 à 01:51
hey Pym Corp
pendant que t'es de passage, tu peux me dire le nom de la classe spéciale
merci
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.