Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <FontConstants.au3>
- #include <TabConstants.au3>
- #include <WinAPI.au3>
- #include <GuiConstantsEx.au3>
- #include <WindowsConstants.au3>
- #include <GuiTab.au3>
- Global Const $ODT_TAB = 101
- Global Const $ODS_SELECTED = 0x0001
- Global Const $ODA_DRAWENTIRE = 0x1
- Global Const $ODS_FOCUS = 0x0010
- Global $aColTabItem[3][2] = [['Item1',0x11AADD],["Item2",0xEEBB99],["Item3",0x4763FF]] ; [[TabItem-Bezeichnung,TabItem-Color]]
- Global $hFont, $iBrush
- $hGUI = GUICreate("Draw Tab", 300, 200)
- $hTab = GUICtrlCreateTab(10, 10, 280, 180, $TCS_OWNERDRAWFIXED)
- $TabItem_1 = GUICtrlCreateTabItem("Item1")
- GUICtrlCreateLabel("L1", 10, 33, 277, 155)
- $TabItem_2 = GUICtrlCreateTabItem("Item2")
- GUICtrlCreateLabel("L2", 10, 33, 277, 155)
- $TabItem_2 = GUICtrlCreateTabItem("Item3")
- GUICtrlCreateLabel("L3", 10, 33, 277, 155)
- GUICtrlCreateTabItem("")
- GUISetState()
- GUIRegisterMsg($WM_DRAWITEM, "WM_DRAWITEM")
- _GUICtrlTab_SetCurSel($hTab, 2)
- _GUICtrlTab_SetCurSel($hTab, 1)
- _GUICtrlTab_SetCurSel($hTab, 0)
- _GUICtrlTab_SetCurFocus($hTab, 1)
- Do
- Until GUIGetMsg() = -3
- _WinAPI_DeleteObject($hFont)
- _WinAPI_DeleteObject($iBrush)
- Func WM_DRAWITEM($hWnd, $Msg, $wParam, $lParam)
- Local $DRAWITEMSTRUCT = DllStructCreate("uint cType;uint cID;uint itmID;uint itmAction;uint itmState;" & _
- "hwnd hItm;hwnd hDC;dword itmRect[4];dword itmData", $lParam)
- If DllStructGetData($DRAWITEMSTRUCT, "cType") <> $ODT_TAB Then Return $GUI_RUNDEFMSG
- If DllStructGetData($DRAWITEMSTRUCT, "itmAction") <> $ODA_DRAWENTIRE Then Return $GUI_RUNDEFMSG
- Local $itmID = DllStructGetData($DRAWITEMSTRUCT, "itmID")
- Local $hDC = DllStructGetData($DRAWITEMSTRUCT, "hDC")
- Local $hItm = DllStructGetData($DRAWITEMSTRUCT, "hItm")
- Local $itmText = $aColTabItem[$itmID][0], $iBrushColor = $aColTabItem[$itmID][1]
- DLLCall("gdi32.dll","int","SetBkMode", "hwnd", $hDC, "int", 1)
- Local $iBrush = DLLCall("gdi32.dll","hwnd","CreateSolidBrush", "int", $iBrushColor)
- $iBrush = $iBrush[0]
- Local $iBrushOld = _WinAPI_SelectObject($hDC, $iBrush)
- DLLCall("user32.dll","int","FillRect", "hwnd", $hDC, "ptr", DllStructGetPtr($DRAWITEMSTRUCT, "itmRect"), "hwnd", $iBrush)
- Local $tBuffer = DllStructCreate("char[256]")
- DllStructSetData($tBuffer, 1, $itmText)
- $itmText = DllStructGetData($tBuffer, 1)
- DllStructSetData($DRAWITEMSTRUCT, "itmRect", DllStructGetData($DRAWITEMSTRUCT, "itmRect", 1) + 10, 1)
- DllStructSetData($DRAWITEMSTRUCT, "itmRect", DllStructGetData($DRAWITEMSTRUCT, "itmRect", 2) + 5, 2)
- DllCall("user32.dll", "int", "DrawText", "hwnd", $hDC, "str", $itmText, "int", StringLen($itmText), _
- "ptr", DllStructGetPtr($DRAWITEMSTRUCT, "itmRect"), "int", $DT_LEFT)
- Return $GUI_RUNDEFMSG
- EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement