Code : Tout sélectionner
#include <GUIConstants.au3>
Global Const $TCM_SETIMAGELIST = 0x1303
Global Const $TCM_SETITEM = 0x1306
; Disable visual styles for controls
;DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 1)
Global $hImageList = 0
$main_GUI = GUICreate("Tab Sample", 400, 300, -1, -1);, BitOr($GUI_SS_DEFAULT_GUI,$WS_CLIPSIBLINGS))
$ok_button = GUICtrlCreateButton("OK", 110, 270, 70, 20)
$cancel_button = GUICtrlCreateButton("Cancel", 220, 270, 70, 20)
GUISetState()
; Creates the first child window that is implemented into the main GUI
$child1 = GUICreate("", 370, 215, 15, 40, BitOr($WS_CHILD,$WS_TABSTOP), -1, $main_GUI)
;GUISetBkColor(0x257788); just for dimensing the child
$child1_tab = GUICtrlCreateTab(0, 0, 370, 215)
$child1_tabitem1 = GUICtrlCreateTabItem("Child1Tab1")
$child1_tabitem2 = GUICtrlCreateTabItem("Child1Tab2")
$child1_tabitem3 = GUICtrlCreateTabItem("Child1Tab3")
GUICtrlCreateTabItem("")
GUISetState()
; Creates the second child window that is implemented into the main GUI
$child2 = GUICreate("", 370, 215, 15, 40, BitOr($WS_CHILD,$WS_TABSTOP), -1, $main_GUI)
;GUISetBkColor(0x257788); just for dimensing the child
$child3 = GUICreate("", 210, 220, 158, 0, BitOr($WS_CHILD,$WS_TABSTOP), -1, $child2)
;GUISetBkColor(0x257788)
$listview = GUICtrlCreateListView("Col1|Col2", 0, 2, 210, 211, BitOr($LVS_NOSORTHEADER,$LVS_SHOWSELALWAYS,$WS_TABSTOP), $WS_EX_CLIENTEDGE)
GUICtrlCreateListViewItem("ItemLong1|ItemLong2", $listview)
GUICtrlCreateListViewItem("ItemLong3|ItemLong4", $listview)
GUICtrlCreateListViewItem("ItemLong5|ItemLong6", $listview)
GUISetState()
GUISwitch($child2)
$child2_tab = GUICtrlCreateTab(0, 0, 156, 215)
$child2_tabitem1 = GUICtrlCreateTabItem("Child2Tab1")
$child2_tabitem2 = GUICtrlCreateTabItem("Child2Tab2")
GUICtrlCreateTabItem("")
; Switch back the main GUI and create the tabs
GUISwitch($main_GUI)
$main_tab = GUICtrlCreateTab(10, 10, 380, 250)
$main_tabitem1 = GUICtrlCreateTabItem("MainTab1")
$main_tabitem2 = GUICtrlCreateTabItem("MainTab2")
GUICtrlCreateTabItem("")
GUICtrlSetState($main_tabitem1,$GUI_SHOW)
Bind_ImageList($main_tab)
While 1
$msg = GUIGetMsg(1)
Select
Case $msg[0] = $GUI_EVENT_CLOSE Or $msg[0] = $cancel_button
ExitLoop
Case $msg[0] = $main_tab
$tabidx = GUICtrlRead($main_tab)
Select
Case $tabidx = 0
GUISetState(@SW_HIDE, $child2)
GUISetState(@SW_SHOW, $child1)
Case $tabidx = 1
GUISetState(@SW_HIDE, $child1)
GUISetState(@SW_SHOW, $child2)
EndSelect
EndSelect
WEnd
DllCall("comctl32.dll", "int", "ImageList_Destroy", "hwnd", $hImageList)
Exit
Func ImageList_Create()
$hImageList = DllCall("comctl32.dll", "hwnd", "ImageList_Create", "int", 16, "int", 16, "int", 0x0021, "int", 0, "int", 1)
$hImageList = $hImageList[0]
Return $hImageList
EndFunc
Func Bind_ImageList($nCtrl)
$hImageList = ImageList_Create()
GUICtrlSendMsg($nCtrl, $TCM_SETIMAGELIST, 0, $hImageList)
$szIconFile = "shell32.dll"
$tcitem = DllStructCreate("uint;dword;dword;ptr;int;int;int")
DllStructSetData($tcitem, 1, 0x0002)
DllStructSetData($tcitem, 6, 0)
AddImageToTab($nCtrl, 0, $tcitem, $szIconFile, 12)
DllStructSetData($tcitem, 6, 1)
AddImageToTab($nCtrl, 1, $tcitem, $szIconFile,21)
EndFunc
Func AddImageToTab($nCtrl, $nTabIndex, $nItem, $szIconFile, $nIconID)
$hIcon = DllStructCreate("int")
$result = DllCall("shell32.dll", "int", "ExtractIconEx", "str", $szIconFile, "int", $nIconID, "hwnd", 0, "ptr", DllStructGetPtr($hIcon), "int", 1)
$result = $result[0]
If $result > 0 Then
DllCall("comctl32.dll", "int", "ImageList_AddIcon", "hwnd", $hImageList, "hwnd", DllStructGetData($hIcon,1))
DllCall("user32.dll", "int", "SendMessage", "hwnd", ControlGetHandle($main_GUI, "", $nCtrl), "int", $TCM_SETITEM, "int", $nTabIndex, "ptr", DllStructGetPtr($nItem))
DllCall("user32.dll", "int", "DestroyIcon", "hwnd", $hIcon)
EndIf
EndFunc