[ windows程序设计(programing windows) ]

来源:互联网 发布:海量数据备份 编辑:程序博客网 时间:2024/06/05 17:04

本片文章建立在组合框入门的文章之上,将会介绍拥有者绘制组合框。

拥有者绘制组合框在建立时需要包含CBS_OWNERDRAWFIXED风格或者CBS_OWNERDRAWVARIBLE风格。

对于拥有者绘制组合框来说,你需要处理在父窗口处理两个消息,一个是WM_MEASUREITEM消息,这个消息的wParam参数是控件标识符,lParam是一个指向MEASUREITEMSTRUCT结构体的指针,

typedef struct MEASUREITEMSTRUCT {  UINT      CtlType;  UINT      CtlID;  UINT      itemID;  UINT      itemWidth;  UINT      itemHeight;  ULONG_PTR itemData;} MEASUREITEMSTRUCT;

这个结构体的CtlType是控件类型,有ODT_COMBOBOX,ODT_LISTBOX,ODT_LISTVIEW,ODT_MENU四种,分别代表组合框,列表框,列表视图控件和菜单;

CtlID是控件标识符,只对组合框和列表框有意义;

itemID是项目标识符,只有当风格是CBS_OWNERDRAWVARIBLE,LBS_OWNERDRAWVARIBLE或者是CtlType是ODT_MENU才有意义;

itemWidth,是一个菜单项目的宽度,以像素为单位,程序要指定这个值;

itemHeight,一个独立项目在列表框,组合框或者菜单的高度,以像素为单位,程序要指定这个值;

itemData,对于菜单来说,这个值是程序指定的和菜单项目联系的的值,对于控件来说,这个成员指定上次通过LB_SETITEMDATA或者CB_SETITEMDATA消息分配给组合框或者列表框的值,如果列表框或者组合框有HASSTRINGS风格,那么这个值初始为零。

注:如果风格中带有VARIABLE,那么这个消息会为了每一个项目都发送一次这个消息,否则,只会发送一次。

另一个需要处理的消息是WM_DRAWITEM,wParam参数是控件标识符,lParam参数是DRAWITEMSTRUCT结构体,这部分和之前在讲按钮的时候差不多,我就不多说了,文章链接放上。

以上便是本文的全部内容,欢迎评论。

0 0
原创粉丝点击