定义
typedef struct tagDRAWITEMSTRUCT {
UINT CtlType;
UINT CtlID;
UINT itemID;
UINT itemAction;
UINT itemState;
HWND hwndItem;
HDC hDC;
RECT rcItem;
ULONG_PTR itemData;
} DRAWITEMSTRUCT, NEAR *PDRAWITEMSTRUCT, FAR *LPDRAWITEMSTRUCT;
参数:
CtlType
控件类型。 控件类型的值如下所示:
ODT_BUTTON
所有者描述的按钮
ODT_COMBOBOX
所有者描述的组合框
ODT_LISTBOX
所有者描述的列表框
ODT_MENU
所有者描述的菜单
ODT_LISTVIEW
列表视图控件
ODT_STATIC
所有者描述的静态控件
ODT_TAB
选项卡控件
CtlID
组合框控件 ID,列表框或按钮。 此成员 菜单不使用。
itemID
菜单或项的索引的菜单项 ID 在列表框或组合框中。 对于空列表框或组合框,此成员是负值,使应用程序仅绘制焦点矩形。 rcItem 成员指定坐标,即使控件中没有项。 用户可能从而显示列表框或组合框是否具有输入焦点。 将 itemAction 成员的位确定是否将绘制矩形,就象列表框或组合框输入焦点。
itemAction
定义需要的绘制事件。 这将是以下一个或多个:
- 在绘制时,ODA_DRAWENTIRE 此位设置整个。
- 当控件获取或失去输入焦点时,ODA_FOCUS 此位设置。 itemState 成员都应检查以确定控件是否具有焦点。
- 只有选择状态更改时,ODA_SELECT 此位设置。 itemState 成员都应检查以确定新选定状态。
itemState
在当前绘制事件发生后,以指定项的可视状态。 也就是说,如果菜单项将显示为灰色,状态标志 ODS_GRAYED
将设置为。 状态标志如下所示:
- 如果菜单项将检查,ODS_CHECKED
此位设置。 此位在菜单仅使用。
- 如果项目中绘制为禁用,ODS_DISABLED
此位设置。
- 如果项目输入焦点,ODS_FOCUS
此位设置。
- 如果该项目将显示为灰色,ODS_GRAYED
此位设置。 此位在菜单仅使用。
- 如果项的状态时,ODS_SELECTED
此位设置。
- ODS_COMBOBOXEDIT
绘制在选择字段发生 (编辑控件) 的 ownerdrawn
组合框。
- ODS_DEFAULT
该项目是默认项目。
hwndItem
为组合框中指定控件的窗口句柄,列表框和按钮。 指定包含菜单项的菜单 (HMENU) 的句柄。
hDC
标识设备上下文。 此设备上下文,当对控件时,中的绘制操作必须使用。
rcItem
一个矩形在定义要绘制的控件边界的 hDC 成员指定的设备上下文。 窗口将自动剪切所有者在组合框的设备上下文绘制,列表框的任何内容和按钮,但是,它不会剪裁菜单项。 在绘制菜单项时,所有者无法在 rcItem 成员定义的矩形边界外绘制。
itemData
对于组合框或列表框,此成员包含传递到列表框下列操作之一的值:
CComboBox::AddString
CComboBox::InsertString
CListBox::AddString
CListBox::InsertString
对于菜单,此成员包含传递到菜单下列操作之一的值:
CMenu::AppendMenu
CMenu::InsertMenu
CMenu::ModifyMenu