DRAWITEMSTRUCT 結構 (winuser.h)

提供擁有者視窗用來決定如何繪製擁有者繪製控件或功能表項的資訊。 擁有者繪製控件或功能表項的擁有者視窗會收到這個結構的指標,做為WM_DRAWITEM訊息的 lParam 參數。

語法

typedef struct tagDRAWITEMSTRUCT {
  UINT      CtlType;
  UINT      CtlID;
  UINT      itemID;
  UINT      itemAction;
  UINT      itemState;
  HWND      hwndItem;
  HDC       hDC;
  RECT      rcItem;
  ULONG_PTR itemData;
} DRAWITEMSTRUCT, *PDRAWITEMSTRUCT, *LPDRAWITEMSTRUCT;

成員

CtlType

類型: UINT

控制項類型。 這個成員可以是下列其中一個值。 請參閱<備註>。

意義
ODT_BUTTON
擁有者繪製按鈕
ODT_COMBOBOX
擁有者繪製的下拉式方塊
ODT_LISTBOX
擁有者繪製的清單框
ODT_LISTVIEW
清單檢視控件
ODT_MENU
擁有者繪製的功能表項
ODT_STATIC
擁有者繪製的靜態控件
ODT_TAB
索引標籤控制項

CtlID

類型: UINT

下拉式方塊、清單框、按鈕或靜態控件的標識碼。 此成員不會用於功能表項。

itemID

類型: UINT

功能表項的功能表項識別碼,或清單框或下拉式方塊中專案的索引。 如果是空的清單盒或下拉式方塊,這個成員可以是 -1。 這可讓應用程式只在 rcItem 成員指定的座標上繪製焦點矩形,即使控件中沒有專案也一樣。 這表示使用者清單框或下拉式方塊是否具有焦點。 itemAction 成員中設定位的方式會決定矩形是否要繪製為清單框或下拉式方塊具有焦點。

itemAction

類型: UINT

必要的繪圖動作。 這個成員可以是一或多個值。

意義
ODA_DRAWENTIRE
必須繪製整個控件。
ODA_FOCUS
控件遺失或取得鍵盤焦點。 應該檢查 itemState 成員,以判斷控件是否具有焦點。
ODA_SELECT
選取狀態已變更。 應該檢查 itemState 成員以判斷新的選取狀態。

itemState

類型: UINT

目前繪圖動作之後項目的視覺狀態。 此成員可以是下表所示值的組合。

意義
ODS_CHECKED
要檢查功能表項。 此位元只用在功能表中。
ODS_COMBOBOXEDIT
繪圖會在選取欄位中發生, (編輯控件) 擁有者繪製下拉式方塊。
ODS_DEFAULT
專案是預設專案。
ODS_DISABLED
專案會繪製為停用。
ODS_FOCUS
專案具有鍵盤焦點。
ODS_GRAYED
項目會呈現灰色。 此位元只用在功能表中。
ODS_HOTLIGHT
專案正在熱追蹤中,也就是說,當滑鼠位於專案上時,專案將會反白顯示。
ODS_INACTIVE
專案為非使用中,且與功能表相關聯的視窗為非使用中。
ODS_NOACCEL
控制件是在沒有鍵盤快捷鍵提示的情況下繪製。
ODS_NOFOCUSRECT
控件是在沒有焦點指標提示的情況下繪製。
ODS_SELECTED
已選取功能表項的狀態。

hwndItem

類型: HWND

下拉式方塊、清單框、按鈕和靜態控件之控件的句柄。 對於功能表,這個成員是包含專案的功能表句柄。

hDC

類型: HDC

裝置內容的句柄;在控件上執行繪圖作業時,必須使用此裝置內容。

rcItem

類型: RECT

矩形,定義要繪製之控件的界限。 此矩形位於 hDC 成員指定的裝置內容中。 系統會自動裁剪擁有者視窗在下拉式方塊、清單框和按鈕的裝置內容中繪製的任何專案,但不會裁剪功能表項。 繪製功能表項時,擁有者視窗不得繪製超出 rcItem 成員所定義之矩形的界限。

itemData

類型: ULONG_PTR

與功能表項相關聯的應用程式定義值。 針對控件,此參數會指定 LB_SETITEMDATACB_SETITEMDATA 訊息最後指派給清單框或下拉式方塊的值。 如果清單框或下拉式方塊具有 LBS_HASSTRINGSCBS_HASSTRINGS 樣式,則此值一開始為零。 否則,這個值一開始是傳遞至下列其中一個訊息 之 lParam 參數中清單框或下拉式方塊的值:

如果 CtlType是ODT_BUTTONODT_STATIC,itemData 會是零。

備註

某些控制項類型,例如狀態列,不會設定 CtlType 的值。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
標頭 winuser.h (包括 Windows.h)

另請參閱

CB_ADDSTRING

CB_INSERTSTRING

CB_SETITEMDATA

LB_ADDSTRING

LB_INSERTSTRING

LB_SETITEMDATA

參考

WM_DRAWITEM