Windows Programing OwnDarw Button中的DRAWITEMSTRUCT结构体~

王朝网络·vc·作者佚名  2006-01-09
宽屏版  字体: |||超大  

看本文先打开《Programming Windows程式开发设计指南》

好书~,ISBN:957-8239-73-4,原作者:Charles

Petzold 第一部分第九章“子视窗控制项”。

按钮类别共有10种,分别是:

BS_PUSHBUTTON

BS_DEFPUSHBUTTON

BS_CHECKBOX

BS_AUTOCHECKBOX

BS_RADIOBUTTON

BS_3STATE

BS_AUTO3STATE

BS_GROUPBOX

BS_AUTORADIOBUTTON

BS_OWNERDRAW

我在学习这一章处看到了建立BS_OWNERDRAW样式的按钮,程序代码上书中都有,其中有一处有一结构体,

LPDRAWITEMSTRUCT,书中没有明确给出,后面不知道有没有给我,我还没有看呢

查MSDN 如下:

typedef struct tagDRAWITEMSTRUCT { ;// dis

UINT ;CtlType; //控件类型

UINT ;CtlID; ; //控件的ID

UINT ;itemID; ;//控件内部的ID号

UINT ;itemAction; //在什么情况下绘制控件

UINT ;itemState; //当前模式

HWND ;hwndItem; //控件名柄

HDC ; hDC; //设备句柄

RECT ;rcItem; //控件范围

DWORD itemData; //数据

} DRAWITEMSTRUCT; 具体见MSDN,查DRAWITEMSTRUCT就可以了~

此程序的重点代码就是 WM_DRAWITEM消息处,按下按钮时,它们就会产生WM_COMMAND讯息,那么

WM_DRAWITEM消息在什么时候会发生呢?只要系统需要重新绘制该控件就会发出该消息,如切换窗口,菜

单下拉等。还有一个坐标的定位~

“在处理WM_DRAWITEM讯息处理期间,lParam讯息参数是指向型态DRAWITEMSTRUCT结构的指标”

“FillRect用白色画刷抹掉按钮的内面,呼叫FrameRect在按钮的周围画上黑框,由此OWNDRAW便启动了

WM_DRAWITEM处理过程。”FillRect和FrameRect分别是两个API,

如果哪一个按纽得到焦点,“呼叫DrawFocusRect,在按钮的边界内画一个虚线的矩形。”

感觉就是是使用OWNERDRAW 样式的button 时,DRAWITEMSTRUCT这个结构体必须深刻理解~

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有