|
自绘制按钮
通过指定BS_OWNERDRAW风格,可以完全控制按钮的外观。当按钮被指定为自绘制风格,则由拥有按钮的窗口负责绘制按钮可能出现的所有状态。当窗口包含有自绘制按钮时,会收到一个WM_DRAWITME消息,用来通知窗口有一个按钮需要绘制。对于该消息,wParam参数包含有按钮ID,lParam则指向一个DRAWITEMSTRUCT结构,该结构定义如下:
typedef struct tagDRAWITEMSTRUCT
{
UINT CtlType;
UINT CtlID;
UINT itemID;
UINT itemAction;
UINT itemState;
HWND hwndItem;
HDC hDC;
RECT rcItem;
DWORD itemData;
} DRAWITEMSTRUCT;
CtlType设置为ODT_BUTTON(自绘制按钮),CtlID则和wParam一样,包含有按钮ID。itemAction包含标志位,指出需要绘制什么和为什么绘制。这些域中最重要的是itemState,它包含了按钮选择、失效等状态。hDC包含了按钮窗口的设备描述表句柄,rcItem则包含了按钮的尺寸。对自绘制按钮来说,itemDate应该设置为NULL。
WM_DRAWITEM处理程序中包含有许多GDI函数,用来绘制线条、矩形以及绘制按钮所需要的一切。绘制按钮的一个重要方面是要和系统中其它窗口的标准颜色匹配。因为这些颜色是可变的,所以不能硬编码到程序里。您可以通过GetSysColor函数来查询出合适的颜色。 |
|