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
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_SETITEMDATA或CB_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