Clswidget = une class pour faire un widget avec infobulle et menu popup

Description

C'est un module de class qui peut servir de base pour faire un widget avec infobulle, menu popup, déplacement à la souris et transparence. Un widget est une fenêtre gadget d'aspect graphique non standard, pouvant être des outils interactifs virtuels offrant des services à usage unique. Parmi les plus connues, on trouve les widgets de yahoo. Ce code source permet de faire la base d'un widget. L'aspect graphique est réalisé à partir d'une image bitmap. La class permet également d'assigner un menu popup et de définir une infobulle. L'infobulle peut être de différent style. Le code de la class est organisé est trois parties. La première partie traite l'aspect graphique de la fenêtre. La seconde gère l'infobulle et la dernière, le menu popup. L'exemple fournis se limite juste à changer l'aspect graphique via le menu popup et affiche une infobulle. L'intérêt de la source n'est pas l'exemple fournis mais l'usage qu'on peut faire de la class CWidget. Les trois parties du code de la class ne sont pas de moi, merci à leurs auteurs. J'avais besoin de créer un widget pour mon programme vpn lifeguard.

// Utilisation de la class

L'image qui donnera son aspect à la fenêtre doit être dans un picturebox. Cette image devra contenir une couleur unique qui servira de masque pour rendre les contours de la fenêtre arrondis et invisible. La transparence du widget est définit par la propriété OpacityLevel qui définit l'opacité du widget de 0 à 255.

Dans les déclarations de la fenêtre à transformer en widget, ajouter :
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
Private Widget As CWidget
Private ColorMask As Long

Dans Form_Initialize, ajouter :
InitCommonControls

Dans Form_Load, ajouter :
Set Widget = New CWidget

' Définit la couleur de notre image qui sera transparente = le masque
ColorMask = &HFF4C& ' à vous de déterminer cette valeur

' Définit le niveau d'opacité de 0 à 255 = la transparence
Dim OpacityLevel As Byte: OpacityLevel = 200

' Change l'aspect de la fenêtre = la transparence et la forme
Widget.DoShape Me, Me.MonImagePourL_aspect, ColorMask, OpacityLevel

' Définit l'infobulle
Widget.ToolTipCreate Me.HWnd, "L'infobulle n'est pas vide"

' Crée les rubriques du menu popup
Widget.MenuPopupAdd "À propos", MF_STRING ' retour = 1
Widget.MenuPopupAdd "-", MF_SEPARATOR ' ret = 2
Widget.MenuPopupAdd "Option A", MF_STRING ' ret = 3
Widget.MenuPopupAdd "Option B", MF_STRING ' ret = 4
Widget.MenuPopupAdd "-", MF_SEPARATOR ' ret = 5
Widget.MenuPopupAdd "Quitter", MF_STRING ' ret = 6

Dans Form_MouseDown, ajouter :
' Déplace le widget avec un clic gauche
If Button = vbLeftButton Then Widget.Moving Me

Dans Form_MouseUp, ajouter :
If Button = vbRightButton Then
Dim RetourChoix As Long
' Affiche le menu popup
Widget.MenuPopup RetourChoix

' Action à faire en fonction de la rubrique cliquée
Select Case RetourChoix
Case 1 ' Placer les actions qui devront se produire
Case 2
End Select
End If

Dans Form_QueryUnload, ajouter :
Set Widget = Nothing

Codes Sources

A voir également

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.