Aujourd'hui je vous propose la création simple de gadgets en utilisant Le CanvasGadget() comme support et les fonctions de VectorDrawing pour obtenir un joli rendu. C'est une manière simple de faire une interface d'application qui retient l'oeil et agréable à utiliser.
Vous pouvez très facilement modifier les fonctions créées pour vous les approprier et les ajuster à vos besoins, voire en créer de nouvelles. Tout est modifiable vu qu'au final ce n'est que du dessin.
Voici donc 5 fonctions sous forme de procédures et un exemple d'utilisation :
+ LargeGradientButton() = Créer de larges boutons avec images et textes aux couleurs en mode dégradées, option vertical ou horizontal pour le dégradé.
+ ButtonMovementEffect() = Donne un effet de mouvement aux boutons lors du survol de la souris
+ GradientTextArea() = Création d'une Zone de texte + image, en couleurs dégradées
+ GradientHeaderBar() = Créer une barre d'entête de fenêtre avec icone et textes de couleurs différentes
+ GradientExpanderBar() = Créer une barre de simulation de pliage de zone
- Testé sur Windows 11 pro, 64 bits avec PB 6.30b7 32 et 64 bits.
- Les icônes et images utilisées sont chargées depuis le système (Shell32.dll)
Code : Tout sélectionner
;-ID PROGRAM
;==============================================================
; Library functions: + LargeGradientButton() = Créer de larges boutons avec images et textes aux couleurs en mode dégradées
; + ButtonMovementEffect() = Donne un effet de mouvement aux boutons lors du survol de la souris
; + GradientTextArea() = Création d'une Zone de texte + image, en couleurs dégradées
; + GradientHeaderBar() = Créer une barre d'entête de fenêtre avec icone et textes de couleurs différentes
; + GradientExpanderBar() = Créer une barre de simulation de pliage de zone
;
; Version:.................1.0
; Author:..................Jacobus
; Date:....................11 janvier, 2026
; Target OS:...............Microsoft Windows 10 & 11 (All ??)
; Target Compiler:.........PureBasic 6.30 Beta 7
; License:.................Free, unrestricted, no warranty
;==============================================================
;- CONSTANTES
Enumeration Fenetres
#MAIN_WINDOW
EndEnumeration
Enumeration Gadgets
#CANVAS_HEADER
#TEXT_CANVAS
#CANVAS_BTN_ONE
#CANVAS_BTN_TWO
#CANVAS_TEXTAREA
#CANVAS_EXPAND
#CONTAINER_EXPAND
#EDITORNOTES
#BTN_QUIT
#STATUS
EndEnumeration
;-DPI (prise en compte nécessaire pour les grands écrans)
CompilerIf #PB_Compiler_DPIAware = 1
Global dpix.d = DesktopResolutionX()
Global dpiy.d = DesktopResolutionY()
CompilerElse
Global dpix.d = 1
Global dpiy.d = 1
CompilerEndIf
;-FONTS
Global Font0 = LoadFont(0, "Bahnschrift Light SemiCondensed", 9, #PB_Font_Bold|#PB_Font_HighQuality)
Global Font1 = LoadFont(1, "Segoe UI Semibold", 10, #PB_Font_HighQuality|#PB_Font_Underline)
Global Font2 = LoadFont(2, "Segoe UI Semibold", 9, #PB_Font_HighQuality)
Global TEXTAREA$ ; extrait de l'Apocalypse selon St Jean.
;{
TEXTAREA$ = "Chapitre 12"+#CRLF$
TEXTAREA$ + "La femme, le dragon et l'enfant"+#CRLF$
TEXTAREA$ + "1 Un grand signe parut dans le ciel: une femme enveloppée du soleil, la lune sous ses pieds, et une couronne de douze étoiles sur sa tête."+#CRLF$
TEXTAREA$ + "2 Elle était enceinte, et elle criait, étant en travail et dans les douleurs de l'enfantement."+#CRLF$
TEXTAREA$ + "3 Un autre signe parut encore dans le ciel; et voici, c'était un grand dragon rouge, ayant sept têtes et dix cornes, et sur ses têtes sept diadèmes."+#CRLF$
; TEXTAREA$ + "4 Sa queue entraînait le tiers des étoiles du ciel, et les jetait sur la terre. Le dragon se tint devant la femme qui allait enfanter, afin de dévorer son enfant, lorsqu'elle aurait enfanté."+#CRLF$
; TEXTAREA$ + "5 elle enfanta un fils, qui doit paître toutes les nations avec une verge de fer. Et son enfant fut enlevé vers Dieu et vers son trône."+#CRLF$
; TEXTAREA$ + "6 et la femme s'enfuit dans le désert, où elle avait un lieu préparé par Dieu, afin qu'elle y fût nourrie pendant mille deux cent soixante jours."+#CRLF$
; TEXTAREA$ + "7 et il y eut guerre dans le ciel. Michel et ses anges combattirent contre le dragon. Et le dragon et ses anges combattirent,"+#CRLF$
; TEXTAREA$ + "8 mais ils ne furent pas les plus forts, et leur place ne fut plus trouvée dans le ciel."+#CRLF$
; TEXTAREA$ + "9 et il fut précipité, le grand dragon, le serpent ancien, appelé le diable et Satan, celui qui séduit toute la terre, il fut précipité sur la terre, et ses anges furent précipités avec lui."+#CRLF$
; TEXTAREA$ + "10 et j'entendis dans le ciel une voix forte qui disait: Maintenant le salut est arrivé, et la puissance, et le règne de notre Dieu, et l'autorité de son Christ; car il a été précipité, l'accusateur de nos frères, celui qui les accusait devant notre Dieu jour et nuit."+#CRLF$
; TEXTAREA$ + "11 ils l'ont vaincu à cause du sang de l'agneau et à cause de la parole de leur témoignage, et ils n'ont pas aimé leur vie jusqu'à craindre la mort."+#CRLF$
; TEXTAREA$ + "12 c'est pourquoi réjouissez-vous, cieux, et vous qui habitez dans les cieux. Malheur à la terre et à la mer! car le diable est descendu vers vous, animé d'une grande colère, sachant qu'il a peu de temps."+#CRLF$
; TEXTAREA$ + "13 quand le dragon vit qu'il avait été précipité sur la terre, il poursuivit la femme qui avait enfanté l'enfant mâle."+#CRLF$
; TEXTAREA$ + "14 et les deux ailes du grand aigle furent données à la femme, afin qu'elle s'envolât au désert, vers son lieu, où elle est nourrie un temps, des temps, et la moitié d'un temps, loin de la face du serpent."+#CRLF$
; TEXTAREA$ + "15 et, de sa bouche, le serpent lança de l'eau comme un fleuve derrière la femme, afin de l'entraîner par le fleuve."+#CRLF$
; TEXTAREA$ + "16 et la terre secourut la femme, et la terre ouvrit sa bouche et engloutit le fleuve que le dragon avait lancé de sa bouche."+#CRLF$
; TEXTAREA$ + "17 et le dragon fut irrité contre la femme, et il sen alla faire la guerre aux restes de sa postérité, à ceux qui gardent les commandements de Dieu et qui ont le témoignage de Jésus."
;}
;-PROCEDURES
; Avec VectorDrawing, les couleurs sont de type RGBA (RGB + Canal Alpha) pour un meilleur rendu.
; ex: RGBA(125, 141, 172, 253) ou RGBA(213, 228, 223, 103)
Procedure GradientHeaderBar(canvasID, ColorZero, ColorOne, Title$, Text$, Enterprise$, ImageHeader, HV = 1)
; canvasID:...............N° ID du CanvasGadget()
; ColorZero:..............Couleur du début du gradient, ex: RGBA(99, 184, 255, 255)
; ColorOne:...............Couleur de fin du gradient, ex: RGBA(0, 0, 128, 255)
; Title$:.................Titre affiché en haut à gauche de la barre d'entête de fenêtre
; Text$:..................Texte affiché en bas à gauche, sous le titre.
; Enterprise$:............Texte ou nom qui sera affiché au milieu à droite de la barre d'entête de fenêtre
; ImageHeader:............Image qui sera affichée à gauche de la barre d'entête de fenêtre
; HV:.....................Option: HV = 1 gradient vertical (par défaut) ou HV = 0 gradient horizontal
Protected wc = GadgetWidth(canvasID)
Protected hc = GadgetHeight(canvasID)
Protected outputc = CanvasVectorOutput(canvasID, #PB_Unit_Pixel)
If StartVectorDrawing(outputc)
; Choix de l'orientation du dégradé de couleur
If HV = 0 ; Fond gradient Horizontal (par défaut)
VectorSourceLinearGradient(0, 0, wc*dpix, hc*dpiy)
VectorSourceGradientColor(ColorZero, 0.0)
VectorSourceGradientColor(ColorOne, 1.0)
ElseIf HV = 1 ; Fond gradient vertical
VectorSourceLinearGradient(1, hc*dpiy, 1, 1 )
VectorSourceGradientColor(ColorZero, 0.0)
VectorSourceGradientColor(ColorOne, 1.0)
EndIf
FillVectorOutput() ; remplissage
If ImageHeader <> 0
MovePathCursor(10, 4)
DrawVectorImage(ImageHeader, 255)
EndIf
If Title$ <> ""
VectorFont(Font0, 20)
VectorSourceColor(RGBA(231, 234, 238, 255)) ; gris clair
MovePathCursor(70, 5)
DrawVectorText(Title$)
EndIf
If Text$ <> ""
;VectorFont(Font2)
;VectorSourceColor(RGBA(231, 234, 238, 255)) ; gris clair
MovePathCursor(70, 30)
DrawVectorText(Text$)
EndIf
If Enterprise$ <> ""
; Modification de la couleur pour le texte Enterprise$
VectorSourceColor(RGBA(145, 0, 0, 255)) ; rouge foncé
MovePathCursor((wc*dpix)-(VectorTextWidth(Enterprise$)+30), 20) ; positionnement à droite de la barre
DrawVectorText(Enterprise$)
EndIf
StopVectorDrawing()
EndIf
EndProcedure
Procedure LargeGradientButton(canvasID, ColorZero, ColorOne, Title$, Text$, Image, PosImage = 0, HV = 1)
; canvasID:...............N° ID du CanvasGadget()
; ColorZero:..............Couleur du début du gradient, ex: RGBA(105, 133, 187, 255)
; ColorOne:...............Couleur de fin du gradient, ex: RGBA(213, 228, 223, 255)
; Title$:.................Titre affiché en haut à gauche du bouton et à droite de l'icône
; Text$:..................Texte affiché en bas à gauche, sous le titre.
; Image:..................Image qui sera affichée sur le bouton, à gauche du titre et du texte ou du côté droit du bouton
; PosImage:...............Option position de l'icône, 0 = à gauche, 1 = à droite
; HV:.....................Option: HV = 1 gradient horizontal (par défaut) ou HV = 0 gradient vertical
Protected w = GadgetWidth(canvasID)
Protected h = GadgetHeight(canvasID)
Protected output = CanvasVectorOutput(canvasID, #PB_Unit_Pixel)
If StartVectorDrawing(output)
; Choix de l'orientation du dégradé de couleur
If HV = 1 ; Fond gradient Horizontal (par défaut)
VectorSourceLinearGradient(0, 0, w*dpix, h*dpiy)
VectorSourceGradientColor(ColorZero, 0.0) ; 0,0 (le début du gradient)
VectorSourceGradientColor(ColorOne, 1.0) ; 1.0 (la fin du gradient).
ElseIf HV = 0 ; Fond gradient vertical
VectorSourceLinearGradient(1, h*dpiy, 1, 1 )
VectorSourceGradientColor(ColorOne, 1.0)
VectorSourceGradientColor(ColorZero, 0.0)
EndIf
FillVectorOutput()
If PosImage = 0 ; l'image sera placée à gauche
MovePathCursor(10, 10)
DrawVectorImage(Image, 255)
VectorSourceColor(RGBA(0, 0, 0, 255)) ; noir
MovePathCursor(100, 40)
DrawVectorText(Text$)
VectorFont(Font1, 20)
VectorSourceColor(RGBA(28, 113, 218, 255)) ; bleu
MovePathCursor(100, 7)
DrawVectorText(Title$)
ElseIf PosImage = 1 ; positionnement à droite
MovePathCursor((w*dpix)-(48+10), 10)
DrawVectorImage(Image, 255)
VectorSourceColor(RGBA(0, 0, 0, 255)) ; noir
MovePathCursor(10, 40)
DrawVectorText(Text$)
VectorFont(Font1, 20)
VectorSourceColor(RGBA(28, 113, 218, 255)) ; bleu
MovePathCursor(10, 7)
DrawVectorText(Title$)
EndIf
StopVectorDrawing()
EndIf
EndProcedure
Procedure GradientTextArea(canvasID, ColorZero, ColorOne, Title$, Text$, Image, ImgWidth, ImgHeight, HV = 1)
; canvasID:...............N° ID du CanvasGadget()
; ColorZero:..............Couleur du début du gradient, ex: RGBA(105, 133, 187, 255)
; ColorOne:...............Couleur de fin du gradient, ex: RGBA(213, 228, 223, 255)
; Title$:.................Titre affiché en haut à gauche du bouton et à droite de l'icône
; Text$:..................Texte affiché en bas à gauche, sous le titre.
; Image:..................Image qui sera affichée
; ImgWidth:...............Largeur de l'image
; ImgHeight:..............Hauteur de l'image
; HV:.....................Option: HV = 1 gradient horizontal (par défaut) ou HV = 0 gradient vertical
Protected w = GadgetWidth(canvasID)
Protected h = GadgetHeight(canvasID)
Protected output = CanvasVectorOutput(canvasID, #PB_Unit_Pixel)
If StartVectorDrawing(output)
; Chargement d'une police préalablement déclarée en Global
VectorFont(Font0, 20)
; Choix de l'orientation du dégradé de couleur
If HV = 1 ; Fond gradient Horizontal (par défaut)
VectorSourceLinearGradient(0, 0, w*dpix, h*dpiy)
VectorSourceGradientColor(ColorZero, 0.0) ; 0,0 (le début du gradient)
VectorSourceGradientColor(ColorOne, 1.0) ; 1.0 (la fin du gradient).
ElseIf HV = 0 ; Fond gradient vertical
VectorSourceLinearGradient(1, h*dpiy, 1, 1 )
VectorSourceGradientColor(ColorOne, 1.0)
VectorSourceGradientColor(ColorZero, 0.0)
EndIf
FillVectorOutput()
If Image <> 0
If ImgWidth < 24 Or ImgHeight < 24
ImgWidth = 24 : ImgHeight = 24 ; On donne une taille minimale de 24x24 à l'image
ElseIf ImgWidth >= 24 And ImgHeight >= 24
ImgWidth = ImgWidth : ImgHeight = ImgHeight
EndIf
MovePathCursor(10, 10)
DrawVectorImage(Image, 255, ImgWidth*dpix, ImgHeight*dpiy)
EndIf
If Title$ <> ""
VectorFont(Font0, 20)
VectorSourceColor(RGBA(255, 0, 0, 255)) ; rouge
MovePathCursor((ImgWidth*dpix)+30, 30)
DrawVectorText(Title$)
EndIf
If Text$ <> ""
VectorSourceColor(RGBA(0,0,0,255)) ; texte en noir
MovePathCursor(20, (ImgHeight*dpiy)+30)
; Le texte peut être long, il est placé dans un paragraphe avec retour à la ligne automatique
DrawVectorParagraph(Text$, w*dpix, h*dpiy)
EndIf
StopVectorDrawing()
EndIf
EndProcedure
Procedure GradientExpanderBar(canvasIDexp, ColorZero, ColorOne, Text$, ImageExp, HV = 1)
; canvasID:...............N° ID du CanvasGadget()
; ColorZero:..............Couleur du début du gradient, ex: RGBA(99, 184, 255, 255)
; ColorOne:...............Couleur de fin du gradient, ex: RGBA(0, 0, 128, 255)
; Text$:..................Texte affiché en bas à gauche, sous le titre.
; Image:..................Image qui sera affichée du côté droit
; HV:.....................Option: HV = 1 gradient horizontal (par défaut) ou HV = 0 gradient vertical
Protected wexp = GadgetWidth(canvasIDexp)
Protected hexp = GadgetHeight(canvasIDexp)
Protected outputexp = CanvasVectorOutput(canvasIDexp, #PB_Unit_Pixel)
If StartVectorDrawing(outputexp)
; Choix de l'orientation du dégradé de couleur
If HV = 1 ; Fond gradient Horizontal (par défaut)
VectorSourceLinearGradient(0, 0, wexp*dpix, hexp*dpiy)
VectorSourceGradientColor(ColorZero, 0.0) ; 0,0 (le début du gradient)
VectorSourceGradientColor(ColorOne, 1.0) ; 1.0 (la fin du gradient).
ElseIf HV = 0 ; Fond gradient vertical
VectorSourceLinearGradient(1, hexp*dpiy, 1, 1 )
VectorSourceGradientColor(ColorOne, 1.0)
VectorSourceGradientColor(ColorZero, 0.0)
EndIf
FillVectorOutput()
VectorFont(Font0, 20)
VectorSourceColor(RGBA(117, 136, 157, 255)) ; gris clair
MovePathCursor(10, 5)
DrawVectorText(Text$)
MovePathCursor((wexp-30)*dpix, 5)
DrawVectorImage(ImageExp, 255, 24, 24) ; image redimensionnée en 24x24
StopVectorDrawing()
EndIf
EndProcedure
Procedure ButtonMovementEffect(CanvasID, x1, y1, x2, y2)
; Lorsque la souris survole le bouton il est déplacé de x1 en x2 et de y1 en y2
; Lorsque la souris quitte le bouton il revient à sa place initiale
; donnant un effet de mouvement du gadget.
If EventType() = #PB_EventType_MouseEnter ;#CUSTOM_MSG_MOUSEENTER
ResizeGadget(CanvasID, x2, y2, #PB_Ignore, #PB_Ignore)
ElseIf EventType() = #PB_EventType_MouseLeave ;#CUSTOM_MSG_MOUSELEAVE
ResizeGadget(CanvasID, x1, y1, #PB_Ignore, #PB_Ignore)
EndIf
EndProcedure
Procedure Resize_MAIN_WINDOW()
WinWidth = WindowWidth(#MAIN_WINDOW,#PB_Window_InnerCoordinate)
WinHeight = WindowHeight(#MAIN_WINDOW,#PB_Window_InnerCoordinate)
ResizeGadget(#CANVAS_HEADER, #PB_Ignore, PB_Ignore, WinWidth, #PB_Ignore)
GradientHeaderBar(#CANVAS_HEADER, RGBA(99, 184, 255, 255), RGBA(0, 0, 128, 255), "Fenêtre principale", "Création d'un bouton avec un Canvas. Lecteur de fichiers musicaux MP3 et WMA. (Ctrl+M)", "Jacobus Software", ExtractIcon_(GetModuleHandle_(#Null), "Shell32.dll",207))
ResizeGadget(#CANVAS_TEXTAREA, #PB_Ignore, #PB_Ignore, WinWidth-524, WinHeight-110)
GradientTextArea(#CANVAS_TEXTAREA, RGBA(125, 141, 172, 253), RGBA(213, 228, 223, 103)," --\\-- TEST IMAGE ET TEXTE --//--", TEXTAREA$, ExtractIcon_(GetModuleHandle_(#Null), "Shell32.dll",13), 64, 64)
ResizeGadget(#BTN_QUIT, #PB_Ignore, WinHeight-50, #PB_Ignore, #PB_Ignore)
EndProcedure
;- Interface graphique
If OpenWindow(#MAIN_WINDOW, 0, 0, 1024, 300, "Fenêtre principale", #PB_Window_SystemMenu | #PB_Window_ScreenCentered|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SizeGadget)
WindowBounds(#MAIN_WINDOW, 1024, 300, 1280, 600)
WidthWMain = WindowWidth(#MAIN_WINDOW, #PB_Window_InnerCoordinate)
HeightWMain = WindowHeight(#MAIN_WINDOW, #PB_Window_InnerCoordinate)
CanvasGadget(#CANVAS_HEADER, 0, 0, WidthWMain, 40)
GradientHeaderBar(#CANVAS_HEADER, RGBA(99, 184, 255, 255), RGBA(0, 0, 128, 255), "Fenêtre principale", "Création d'un bouton avec un Canvas. Lecteur de fichiers musicaux MP3 et WMA. (Ctrl+M)", "WolfoRan Software", ExtractIcon_(GetModuleHandle_(#Null), "Shell32.dll",207))
TextGadget(#TEXT_CANVAS, 10, 50, 500, 20, "Utilisation de CanvasGadget() pour la création de gadgets...")
SetGadgetFont(#TEXT_CANVAS, FontID(0))
CanvasGadget(#CANVAS_BTN_ONE, 10, 80, 500, 60)
LargeGradientButton(#CANVAS_BTN_ONE, RGBA(213, 228, 223, 255), RGBA(105, 133, 187, 255),"Jacobus Mp3 Player", "Création d'un bouton avec un CanvasGadget()"+#CRLF$+"Ceci est peut-être un lecteur de fichiers MP3. (Ctrl+M)", ExtractIcon_(GetModuleHandle_(#Null), "Shell32.dll",13), 0, 0)
CanvasGadget(#CANVAS_BTN_TWO, 10, 145, 500, 60, #PB_Canvas_Border)
LargeGradientButton(#CANVAS_BTN_TWO, RGBA(125, 141, 172, 255), RGBA(213, 228, 223, 255), "Création d'un gros bouton long", "avec un CanvasGadget()"+#CRLF$+"Ceci est peut-être un lecteur de fichiers MP3, ou pas. (Ctrl+M)", ExtractIcon_(GetModuleHandle_(#Null), "Shell32.dll",80), 1, 1)
CanvasGadget(#CANVAS_EXPAND, 10, 210, 500, 25, #PB_Canvas_DrawFocus)
GradientExpanderBar(#CANVAS_EXPAND, RGBA(213, 228, 223, 255), RGBA(105, 133, 187, 255), "Ouvrir l'accès aux autres fonctions", ExtractIcon_(GetModuleHandle_(#Null), "Shell32.dll",247))
ContainerGadget(#CONTAINER_EXPAND, 10, 235, 500, 300, #PB_Container_Single) ;{
EditorGadget(#EDITORNOTES, 0, 0, 500, 300, #PB_Editor_WordWrap)
SetGadgetColor(#EDITORNOTES, #PB_Gadget_BackColor, RGB(255, 250, 205))
SetGadgetColor(#EDITORNOTES, #PB_Gadget_FrontColor, RGB(40, 56, 86))
;}
CloseGadgetList()
HideGadget(#CONTAINER_EXPAND, #True)
CanvasGadget(#CANVAS_TEXTAREA, 520, 80, 500, HeightWMain-110, #PB_Canvas_Border|#PB_Canvas_DrawFocus)
GradientTextArea(#CANVAS_TEXTAREA, RGBA(125, 141, 172, 253), RGBA(213, 228, 223, 103), "TEST IMAGE ET TEXTE", TEXTAREA$, ExtractIcon_(GetModuleHandle_(#Null), "Shell32.dll",13), 64, 64)
ButtonGadget(#BTN_QUIT, 10, HeightWMain-50, 60, 25, "Quitter")
;-Statusbar
If CreateStatusBar(#STATUS, WindowID(#MAIN_WINDOW)) ;{
AddStatusBarField(150)
AddStatusBarField(#PB_Ignore)
StatusBarText(#STATUS, 0, "Fenêtre principale", #PB_StatusBar_Center|#PB_StatusBar_Raised)
StatusBarText(#STATUS, 1, "Information", #PB_StatusBar_Raised)
SendMessage_(StatusBarID(#STATUS),#WM_SETFONT,FontID(0),0) ; modifie la police de caractère de la statusbar
;}
EndIf
;-Curseur
Curseur = LoadCursor_(0, #IDC_HAND) ; Charge le curseur main
SetGadgetCursor(#CANVAS_BTN_ONE, Curseur) ; Applique le curseur aux gadgets voulus
SetGadgetCursor(#CANVAS_BTN_TWO, Curseur)
SetGadgetCursor(#CANVAS_EXPAND, Curseur)
;Redimensionnement de la fenêtre et des gadgets
BindEvent(#PB_Event_SizeWindow, @Resize_MAIN_WINDOW())
;- Boucle principale
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #CANVAS_BTN_ONE ;{
ButtonMovementEffect(#CANVAS_BTN_ONE, 10, 80, 12, 78)
If EventType() = #PB_EventType_MouseEnter ;#CUSTOM_MSG_MOUSEENTER
StatusBarText(#STATUS, 1, "Démarrer l'application de lecture des mp3 et autres fichiers audio wma", #PB_StatusBar_Raised)
ElseIf EventType() = #PB_EventType_MouseLeave ;#CUSTOM_MSG_MOUSELEAVE
StatusBarText(#STATUS, 1, "Zone d'information", #PB_StatusBar_Raised)
ElseIf EventType() = #PB_EventType_LeftClick
AddGadgetItem(#EDITORNOTES, -1, "Démarrer l'application de lecture des mp3 et autres fichiers audio wma")
EndIf
;}
Case #CANVAS_BTN_TWO ;{
ButtonMovementEffect(#CANVAS_BTN_TWO, 10, 145, 12, 143)
If EventType() = #PB_EventType_MouseEnter
StatusBarText(#STATUS, 1, "Démarrer DirAnalyser qui fait l'invetaire des fichiers se trouvant sur votre PC.", #PB_StatusBar_Raised)
ElseIf EventType() = #PB_EventType_MouseLeave
StatusBarText(#STATUS, 1, "Zone d'information", #PB_StatusBar_Raised)
ElseIf EventType() = #PB_EventType_LeftClick
AddGadgetItem(#EDITORNOTES, -1, "Démarrer DirAnalyser qui fait l'invetaire des fichiers se trouvant sur votre PC.")
EndIf
;}
Case #CANVAS_EXPAND ;{
If EventType() = #PB_EventType_MouseEnter
StatusBarText(#STATUS, 1, "Extension de la fenêtre et affichage d'autres fonctions disponibles", #PB_StatusBar_Raised)
ElseIf EventType() = #PB_EventType_MouseLeave
StatusBarText(#STATUS, 1, "Zone d'information", #PB_StatusBar_Raised)
ElseIf EventType() = #PB_EventType_LeftClick
If WindowHeight(#MAIN_WINDOW) = 300
GradientExpanderBar(#CANVAS_EXPAND, RGBA(213, 228, 223, 255), RGBA(105, 133, 187, 255), "Refermer l'accès aux autres fonctions", ExtractIcon_(GetModuleHandle_(#Null), "Shell32.dll",246))
ResizeWindow(#MAIN_WINDOW, #PB_Ignore, #PB_Ignore, #PB_Ignore, WindowHeight(#MAIN_WINDOW)+300)
HideGadget(#CONTAINER_EXPAND, #False)
AddGadgetItem(#EDITORNOTES, -1, "Ouverture de l'éditeur de texte.")
ElseIf WindowHeight(#MAIN_WINDOW) > 300 And WindowHeight(#MAIN_WINDOW) <= 600
GradientExpanderBar(#CANVAS_EXPAND, RGBA(213, 228, 223, 255), RGBA(105, 133, 187, 255), "Ouvrir l'accès aux autres fonctions", ExtractIcon_(GetModuleHandle_(#Null), "Shell32.dll",247))
ResizeWindow(#MAIN_WINDOW, #PB_Ignore, #PB_Ignore, #PB_Ignore, 300)
HideGadget(#CONTAINER_EXPAND, #True)
AddGadgetItem(#EDITORNOTES, -1, "Fermeture de l'éditeur de texte.")
EndIf
EndIf
;}
Case #BTN_QUIT
Break
EndSelect
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndIf C'est réparé