Advertisement
BugFix

Tab-Item-Colored

Jun 30th, 2012
381
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 2.76 KB | None | 0 0
  1. #include <FontConstants.au3>
  2. #include <TabConstants.au3>
  3. #include <WinAPI.au3>
  4. #include <GuiConstantsEx.au3>
  5. #include <WindowsConstants.au3>
  6. #include <GuiTab.au3>
  7.  
  8. Global Const $ODT_TAB        = 101
  9. Global Const $ODS_SELECTED   = 0x0001
  10. Global Const $ODA_DRAWENTIRE = 0x1
  11. Global Const $ODS_FOCUS      = 0x0010
  12.  
  13. Global $aColTabItem[3][2] = [['Item1',0x11AADD],["Item2",0xEEBB99],["Item3",0x4763FF]] ; [[TabItem-Bezeichnung,TabItem-Color]]
  14. Global $hFont, $iBrush
  15.  
  16. $hGUI = GUICreate("Draw Tab", 300, 200)
  17. $hTab = GUICtrlCreateTab(10, 10, 280, 180, $TCS_OWNERDRAWFIXED)
  18. $TabItem_1 = GUICtrlCreateTabItem("Item1")
  19. GUICtrlCreateLabel("L1", 10, 33, 277, 155)
  20.  
  21. $TabItem_2 = GUICtrlCreateTabItem("Item2")
  22. GUICtrlCreateLabel("L2", 10, 33, 277, 155)
  23.  
  24. $TabItem_2 = GUICtrlCreateTabItem("Item3")
  25. GUICtrlCreateLabel("L3", 10, 33, 277, 155)
  26. GUICtrlCreateTabItem("")
  27.  
  28. GUISetState()
  29.  
  30. GUIRegisterMsg($WM_DRAWITEM, "WM_DRAWITEM")
  31.  
  32. _GUICtrlTab_SetCurSel($hTab, 2)
  33. _GUICtrlTab_SetCurSel($hTab, 1)
  34. _GUICtrlTab_SetCurSel($hTab, 0)
  35. _GUICtrlTab_SetCurFocus($hTab, 1)
  36.  
  37. Do
  38. Until GUIGetMsg() = -3
  39. _WinAPI_DeleteObject($hFont)
  40. _WinAPI_DeleteObject($iBrush)
  41.  
  42. Func WM_DRAWITEM($hWnd, $Msg, $wParam, $lParam)
  43.     Local $DRAWITEMSTRUCT = DllStructCreate("uint cType;uint cID;uint itmID;uint itmAction;uint itmState;" & _
  44.                             "hwnd hItm;hwnd hDC;dword itmRect[4];dword itmData", $lParam)
  45.     If DllStructGetData($DRAWITEMSTRUCT, "cType") <> $ODT_TAB Then Return $GUI_RUNDEFMSG
  46.     If DllStructGetData($DRAWITEMSTRUCT, "itmAction") <> $ODA_DRAWENTIRE Then Return $GUI_RUNDEFMSG
  47.     Local $itmID = DllStructGetData($DRAWITEMSTRUCT, "itmID")
  48.  
  49.     Local $hDC   = DllStructGetData($DRAWITEMSTRUCT, "hDC")
  50.     Local $hItm  = DllStructGetData($DRAWITEMSTRUCT, "hItm")
  51.  
  52.     Local $itmText = $aColTabItem[$itmID][0], $iBrushColor = $aColTabItem[$itmID][1]
  53.  
  54.     DLLCall("gdi32.dll","int","SetBkMode", "hwnd", $hDC, "int", 1)
  55.  
  56.     Local $iBrush = DLLCall("gdi32.dll","hwnd","CreateSolidBrush", "int", $iBrushColor)
  57.     $iBrush = $iBrush[0]
  58.  
  59.     Local $iBrushOld = _WinAPI_SelectObject($hDC, $iBrush)
  60.     DLLCall("user32.dll","int","FillRect", "hwnd", $hDC, "ptr", DllStructGetPtr($DRAWITEMSTRUCT, "itmRect"), "hwnd", $iBrush)
  61.     Local $tBuffer = DllStructCreate("char[256]")
  62.     DllStructSetData($tBuffer, 1, $itmText)
  63.     $itmText = DllStructGetData($tBuffer, 1)
  64.  
  65.     DllStructSetData($DRAWITEMSTRUCT, "itmRect", DllStructGetData($DRAWITEMSTRUCT, "itmRect", 1) + 10, 1)
  66.     DllStructSetData($DRAWITEMSTRUCT, "itmRect", DllStructGetData($DRAWITEMSTRUCT, "itmRect", 2) + 5, 2)
  67.  
  68.     DllCall("user32.dll", "int", "DrawText", "hwnd", $hDC, "str", $itmText, "int", StringLen($itmText), _
  69.             "ptr", DllStructGetPtr($DRAWITEMSTRUCT, "itmRect"), "int", $DT_LEFT)
  70.     Return $GUI_RUNDEFMSG
  71. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement