UDF > GUI > GuiTab >


_GUICtrlTab_Create

Crée un contrôle à onglet (TabControl)

#include <GuiTab.au3>
_GUICtrlTab_Create ( $hWnd, $iX, $iY [, $iWidth = 150 [, $iHeight = 150 [, $iStyle = 0x00000040 [, $iExStyle = 0x00000000]]]] )

Paramètres

$hWnd Handle de la fenêtre parent ou propriétaire
$iX Position horizontale du contrôle
$iY Position verticale du contrôle
$iWidth [optionnel] Largeur du contrôle
$iHeight [optionnel] Hauteur du contrôle
$iStyle [optionnel] Styles du contrôle:
    $TCS_BOTTOM - Les onglets apparaissent dans le bas du contrôle
    $TCS_BUTTONS - Les onglets apparaissent sous forme de boutons, et aucune bordure est dessinée autour de la zone d'affichage
    $TCS_FIXEDWIDTH - Tous les onglets sont de la même largeur
    $TCS_FLATBUTTONS - Les onglets sélectionnés apparaissent comme étant en retrait par rapport à l'arrière-plan tandis que les autres onglets apparaissent comme étant dans le même plan que l'arrière-plan.
        Cela affecte uniquement les contrôles à onglet avec le style $TCS_BUTTONS.
    $TCS_FOCUSNEVER - Le contrôle ne reçoit pas le focus d'entrée lorsque vous cliquez dessus
    $TCS_FOCUSONBUTTONDOWN - Le contrôle reçoit le focus d'entrée lorsque vous cliquez dessus
    $TCS_FORCEICONLEFT - Les icônes sont alignés avec le bord gauche de chaque onglet de largeur fixe.
        Ce style ne peut être utilisé qu'avec le style $TCS_FIXEDWIDTH.
    $TCS_FORCELABELLEFT - Les étiquettes sont alignées sur le bord gauche de chaque onglet de largeur fixe.
        L'étiquette est affichée immédiatement à la droite de l'icône au lieu d'être centrée.
        Ce style ne peut être utilisé qu'avec
    le style $TCS_FIXEDWIDTH et il implique le style $TCS_FORCEICONLEFT.
    $TCS_HOTTRACK - Les éléments sous le pointeur son automatiquement mis en surbrillance.
        Vous pouvez vérifier si oui ou non HotTrack est activé en appelant SystemParametersInfo.
    $TCS_MULTILINE - Plusieurs lignes d'onglets sont affichés, si nécessaire, de sorte que tous les onglets sont visibles à la fois
    $TCS_MULTISELECT - Plusieurs onglets peuvent être sélectionnés en maintenant la touche CTRL enfoncée lorsque vous cliquez.
        Ce style doit être utilisé avec le style $TCS_BUTTONS.
    $TCS_OWNERDRAWFIXED - La fenêtre parente est responsable du dessin des onglets
    $TCS_RAGGEDRIGHT - Les rangées d'onglet ne seront pas étirées pour remplir toute la largeur du contrôle.
        Ce style est la valeur par défaut.
    $TCS_RIGHT - Les onglets apparaissent verticalement sur le côté droit du contrôle qui utilise le style $TCS_VERTICAL.
        Cette valeur est égale à $TCS_BOTTOM. Ce style n'est pas pris en charge si vous utilisez des styles visuels.
    $TCS_RIGHTJUSTIFY - La largeur de chaque onglet est augmentée, si nécessaire, de sorte que chaque rangée d'onglets remplit toute la largeur du contrôle Tab.
        Ce style est ignoré sauf si le style $TCS_MULTILINE est également spécifié.
    $TCS_SCROLLOPPOSITE - Les onglets superflus défile vers le côté opposé du contrôle lorsqu'un onglet est sélectionné
    $TCS_SINGLELINE - Une seule rangée d'onglet s'affiche. L'utilisateur peut faire défiler pour voir plus d'onglets, si nécessaire.
        Ce style est le style par défaut.
    $TCS_TABS - Les onglets apparaissent sous forme d'onglets, et une bordure est dessinée autour de la zone d'affichage.
        Ce style est le style par défaut.
    $TCS_TOOLTIPS - Le contrôle à onglet dispose d'un contrôle d'info-bulle qui lui est associé
    $TCS_VERTICAL - Les onglets apparaissent sur le côté gauche du contrôle avec le texte de l'onglet vertical.
        Ce style n'est valable que lorsqu'il est utilisé avec le style $TCS_MULTILINE.
        Pour que les onglets apparaissent sur le côté droit du contrôle, utilisez aussi le style $TCS_RIGHT.

Par défaut: $TCS_HOTTRACK
Forçé: $WS_CHILD, $WS_CLIPSIBLINGS $WS_VISIBLE
$iExStyle [optionnel] Styles étendus du contrôle:
    $TCS_EX_FLATSEPARATORS - Le contrôle dessinera des séparateurs entre les éléments d'un onglet
    $TCS_EX_REGISTERDROP - La contrôle génère un messages de notification $TCN_GETOBJECT pour demander l'objet cible où déposer lorsque l'objet est tiré sur les éléments de l'onglet.

Valeur de retour

Succès: Retourne le handle du contrôle à onglet
Échec: Retourne 0

Remarque

Cette fonction est destinée aux utilisateurs avertis et à ceux qui veulent comprendre comment fonctionne le contrôle.

En relation

_GUICtrlTab_Destroy

Exemple

#include <GUIConstantsEx.au3>
#include <GuiTab.au3>
#include <WindowsConstants.au3>

Global $g_hTab

Example()

Func Example()
    Local $hGUI

    ; Crée une GUI
    $hGUI = GUICreate("(UDF Created) Tab Control Create", 400, 300)
    $g_hTab = _GUICtrlTab_Create($hGUI, 2, 2, 396, 296)
    GUISetState(@SW_SHOW)

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    ; Ajoute des onglets
    _GUICtrlTab_InsertItem($g_hTab, 0, "Tab 1")
    _GUICtrlTab_InsertItem($g_hTab, 1, "Tab 2")
    _GUICtrlTab_InsertItem($g_hTab, 2, "Tab 3")

    ; Boucle jusqu'à ce que l'utilisateur quitte.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
EndFunc   ;==>Example

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndTab
    $hWndTab = $g_hTab
    If Not IsHWnd($g_hTab) Then $hWndTab = GUICtrlGetHandle($g_hTab)

    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")

    Switch $hWndFrom
        Case $hWndTab
            Switch $iCode
                Case $NM_CLICK 
                    ; L'utilisateur a cliqué le bouton gauche de la souris à l'intérieur du contrôle
                    _DebugPrint("$NM_CLICK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _
                            "-->Code:" & @TAB & $iCode)
                    ; La valeur retournée est ignorée par le contrôle à onglet

                Case $NM_DBLCLK 
                    ; L'utilisateur a double-cliqué le bouton gauche de la souris à l'intérieur du contrôle
                    _DebugPrint("$NM_DBLCLK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _
                            "-->Code:" & @TAB & $iCode)
                    ; Return 1 ; non nul pour ne pas permettre le traitement par défaut
                    Return 0 ; zéro pour permettre le traitement par défaut

                Case $NM_RCLICK 
                    ; L'utilisateur a cliqué le bouton droit de la souris à l'intérieur du contrôle
                    _DebugPrint("$NM_RCLICK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _
                            "-->Code:" & @TAB & $iCode)
                    ; Return 1 ; non nul pour ne pas permettre le traitement par défaut
                    Return 0 ; zéro pour permettre le traitement par défaut
                    
                Case $NM_RDBLCLK 
                    ; L'utilisateur a double-cliqué le bouton droit de la souris à l'intérieur du contrôle
                    _DebugPrint("$NM_RDBLCLK" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _
                            "-->Code:" & @TAB & $iCode)
                    ; Return 1 ; non nul pour ne pas permettre le traitement par défaut
                    Return 0 ; zéro pour permettre le traitement par défaut                    

                Case $NM_RELEASEDCAPTURE 
                    ; Le contrôle est en train de mettre à jour la capture de la souris
                    _DebugPrint("$NM_RELEASEDCAPTURE" & @CRLF & "--> hWndFrom:" & @TAB & $hWndFrom & @CRLF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @CRLF & _
                            "-->Code:" & @TAB & $iCode)
                    ; Aucune valeur retournée
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Func _DebugPrint($s_Text, $sLine = @ScriptLineNumber)
    ConsoleWrite( _
            "!===========================================================" & @CRLF & _
            "+======================================================" & @CRLF & _
            "-->Line(" & StringFormat("%04d", $sLine) & "):" & @TAB & $s_Text & @CRLF & _
            "+======================================================" & @CRLF)
EndFunc   ;==>_DebugPrint