[ windows程序设计(programing windows) ] - 控制项之组合框扩展

本文深入探讨了Windows程序设计中的拥有者绘制组合框,涉及CBS_OWNERDRAWFIXED和CBS_OWNERDRAWVARIABLE风格。重点讲解了WM_MEASUREITEM和WM_DRAWITEM消息的处理,包括控件标识符、MEASUREITEMSTRUCT结构体及其各项含义,以及如何指定项目尺寸。文章适合对WinAPI有一定了解的开发者阅读。
摘要由CSDN通过智能技术生成

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

拥有者绘制组合框在建立时需要包含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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值