Définit les informations d'un contrôle bouton scindé
#include <GuiButton.au3>
_GUICtrlButton_SetSplitInfo ( $hWnd [, $hImlGlyph = -1 [, $iSplitStyle = $BCSS_ALIGNLEFT [, $iWidth = 0 [, $iHeight = 0]]]] )
$hWnd | ID/handle du contrôle |
$hImlGlyph | [optionnel] Handle de la liste d'image |
$iSplitStyle | [optionnel] Le style du bouton scindé. La valeur doit être un ou plusieurs des commutateurs suivants: $BCSS_ALIGNLEFT - Aligne l'image ou le glyphe horizontalement sur la marge gauche $BCSS_IMAGE - Dessine une image d'icône comme le glyphe $BCSS_NOSPLIT - Pas de scission $BCSS_STRETCH - Elargit le glyphe, mais essaye de garder le ratio |
$iWidth | [optionnel] Largeur du glyphe |
$iHeight | [optionnel] Hauteur du glyphe |
Succès: | Retourne True. |
Échec: | Retourne False. |
Cette fonction opère uniquement avec les styles de bouton $BS_SPLITBUTTON et $BS_DEFSPLITBUTTON.
Windows Vista ou une version ultérieure.
Consultez BCM_SETSPLITINFO dans la librairie MSDN.
#include <GuiButton.au3> #include <GUIConstantsEx.au3> #include <GuiMenu.au3> #include <WindowsConstants.au3> Global $g_hBtn, $g_idMemo, $g_hBtn2 ; Notez que le handle de ces boutons ne peuvent pas être lu avec GUICtrlRead Example() Func Example() Local $hGUI, $aInfo $hGUI = GUICreate("Buttons", 400, 400) $g_idMemo = GUICtrlCreateEdit("", 10, 100, 390, 284, $WS_VSCROLL) GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New") $g_hBtn = _GUICtrlButton_Create($hGUI, "Split Button", 10, 10, 120, 30, $BS_SPLITBUTTON) _GUICtrlButton_SetSplitInfo($g_idBtn) $g_hBtn2 = _GUICtrlButton_Create($hGUI, "Split Button 2", 10, 50, 120, 30, $BS_SPLITBUTTON) GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") GUISetState(@SW_SHOW) $aInfo = _GUICtrlButton_GetSplitInfo($g_hBtn) MemoWrite("Split Info" & @CRLF & "----------------") For $x = 0 To 3 MemoWrite("$ainfo[" & $x & "] = " & $aInfo[$x]) Next MemoWrite("Split Info" & @CRLF & "----------------") Do Until GUIGetMsg() = $GUI_EVENT_CLOSE EndFunc ;==>Example ; Écrit une ligne dans le contrôle mémo Func MemoWrite($sMessage) GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1) EndFunc ;==>MemoWrite Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg, $wParam Local Const $BCN_HOTITEMCHANGE = -1249 Local $tNMBHOTITEM = DllStructCreate("hwnd hWndFrom;int IDFrom;int Code;dword dwFlags", $lParam) Local $nNotifyCode = DllStructGetData($tNMBHOTITEM, "Code") Local $nID = DllStructGetData($tNMBHOTITEM, "IDFrom") Local $hCtrl = DllStructGetData($tNMBHOTITEM, "hWndFrom") Local $iFlags = DllStructGetData($tNMBHOTITEM, "dwFlags") Local $sText = "" Switch $nNotifyCode Case $BCN_HOTITEMCHANGE ; Win XP et ultérieur If BitAND($iFlags, 0x10) = 0x10 Then $sText = "$BCN_HOTITEMCHANGE - En entrant: " & @CRLF ElseIf BitAND($iFlags, 0x20) = 0x20 Then $sText = "$BCN_HOTITEMCHANGE - En quittant: " & @CRLF EndIf MemoWrite($sText & _ "-----------------------------" & @CRLF & _ "WM_NOTIFY - Infos:" & @CRLF & _ "-----------------------------" & @CRLF & _ "Code" & @TAB & ":" & $nNotifyCode & @CRLF & _ "CtrlID" & @TAB & ":" & $nID & @CRLF & _ "CtrlHWnd:" & $hCtrl & @CRLF & _ _GUICtrlButton_GetText($hCtrl) & @CRLF) Case $BCN_DROPDOWN MemoWrite("$BCN_DROPDOWN") _Popup_Menu($hCtrl) EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY Func _Popup_Menu($hCtrl) Local $hMenu Local Enum $e_idOpen = 1000, $e_idSave, $e_idInfo $hMenu = _GUICtrlMenu_CreatePopup() _GUICtrlMenu_InsertMenuItem($hMenu, 0, "Open", $e_idOpen) _GUICtrlMenu_InsertMenuItem($hMenu, 1, "Save", $e_idSave) _GUICtrlMenu_InsertMenuItem($hMenu, 3, "", 0) _GUICtrlMenu_InsertMenuItem($hMenu, 3, "Info", $e_idInfo) Switch _GUICtrlMenu_TrackPopupMenu($hMenu, $hCtrl, -1, -1, 1, 1, 2) Case $e_idOpen MemoWrite("Open est sélectionné") Case $e_idSave MemoWrite("Save est sélectionné") Case $e_idInfo MemoWrite("Info est sélectionné") EndSwitch _GUICtrlMenu_DestroyMenu($hMenu) EndFunc ;==>_Popup_Menu ; Gestionnaire de l'événement clic de bouton Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg Local $nNotifyCode = BitShift($wParam, 16) Local $nID = BitAND($wParam, 0x0000FFFF) Local $hCtrl = $lParam Local $sText = "" Switch $hCtrl Case $g_hBtn, $g_hBtn2 Switch $nNotifyCode Case $BN_CLICKED $sText = "$BN_CLICKED" & @CRLF Case $BN_PAINT $sText = "$BN_PAINT" & @CRLF Case $BN_PUSHED, $BN_HILITE $sText = "$BN_PUSHED, $BN_HILITE" & @CRLF Case $BN_UNPUSHED, $BN_UNHILITE $sText = "$BN_UNPUSHED" & @CRLF Case $BN_DISABLE $sText = "$BN_DISABLE" & @CRLF Case $BN_DBLCLK, $BN_DOUBLECLICKED $sText = "$BN_DBLCLK, $BN_DOUBLECLICKED" & @CRLF Case $BN_SETFOCUS $sText = "$BN_SETFOCUS" & @CRLF Case $BN_KILLFOCUS $sText = "$BN_KILLFOCUS" & @CRLF EndSwitch MemoWrite($sText & _ "-----------------------------" & @CRLF & _ "WM_COMMAND - Infos:" & @CRLF & _ "-----------------------------" & @CRLF & _ "Code" & @TAB & ":" & $nNotifyCode & @CRLF & _ "CtrlID" & @TAB & ":" & $nID & @CRLF & _ "CtrlHWnd:" & $hCtrl & @CRLF & _ _GUICtrlButton_GetText($hCtrl) & @CRLF) Return 0 ; Seulement pour tester un clic sur le bouton EndSwitch ; Traite les commandes des messages internes AutoIt3 par défaut. ; Vous pouvez également modifier la ligne. ; !!! Mais seulement 'Return' (sans aucune valeur) ne traitera pas ; les messages AutoIt3 par défaut dans le futur!!! Return $GUI_RUNDEFMSG EndFunc ;==>WM_COMMAND