自绘按钮的实现
2008-01-19 20:25:45 来源:WEB开发网核心提示:typedef struct tagDRAWITEMSTRUCT {UINT CtlType;UINT CtlID;UINT itemID;UINT itemAction;UINT itemState;HWND hwndItem;HDC hDC;RECT rcItem;ULONG_PTR itemData;} DRAW
typedef struct tagDRAWITEMSTRUCT {
UINT CtlType;
UINT CtlID;
UINT itemID;
UINT itemAction;
UINT itemState;
HWND hwndItem;
HDC hDC;
RECT rcItem;
ULONG_PTR itemData;
} DRAWITEMSTRUCT;
结构成员:
CtlType
指定了控件的类型,其取值如下表所示。
取值
描述
ODT_BUTTON
按钮控件
ODT_COMBOBOX
组合框控件
ODT_LISTBOX
列表框控件
ODT_LISTVIEW
列表视图控件
ODT_MENU
菜单项
ODT_STATIC
静态文本控件
ODT_TAB
Tab控件
CtlID
指定了自绘控件的ID值,而对于菜单项则不需要使用该成员
itemID
表示菜单项ID,也可以表示列表框或者组合框中某项的索引值。对于一个空的列表框或组合框,该成员的值为–1。这时应用程序只绘制焦点矩形(该矩形的坐标由rcItem 成员给出)虽然此时控件中没有需要显示的项,但是绘制焦点矩形还是很有必要的,因为这样做能够提示用户该控件是否具有输入焦点。当然也可以设置itemAction 成员为合适值,使得无需绘制焦点。
itemAction
指定绘制行为,其取值可以为下表中所示值的一个或者多个的联合。
取值
描述
ODA_DRAWENTIRE
当整个控件都需要被绘制时,设置该值
ODA_FOCUS
如果控件需要在获得或失去焦点时被绘制,则设置该值。此时应该检查itemState成员,以确定控件是否具有输入焦点。
ODA_SELECT
如果控件需要在选中状态改变时被绘制,则设置该值。此时应该检查itemState 成员,以确定控件是否处于选中状态。
更多精彩
赞助商链接