CComboBox自绘

上图:
图片


头文件:

图片 


实现文件:
图片 


图片 


图片



引用实现: 
图片



注:
使用SetWindowPos设置控件位置的时候,高度必须足够,比如200等等,不然下拉框不会出现。
 

补充: 
按照上面的代码生成的CComboBox在用GetLBText函数获取字符串的时候会返回乱码,解决办法:
勾选CComboBox的“Has Strings”选项,如下图:
图片
然后,在图片函数里面,修改如下:图片
原因:
图片 
这个结构里面,itemData的官方说明如下:
Specifies the application-defined value associated with the menu item. For a control, this parameter specifies the value last assigned to the list box or combo box by the LB_SETITEMDATA or CB_SETITEMDATA message. If the list box or combo box has the LBS_HASSTRINGS or CBS_HASSTRINGS style, this value is initially zero. Otherwise, this value is initially the value that was passed to the list box or combo box in the lParam parameter of one of the following messages:
  • CB_ADDSTRING
  • CB_INSERTSTRING
  • LB_ADDSTRING
  • LB_INSERTSTRIN 
 
当为一个菜单时,itemData关联的是程序设定的菜单的数据;当为一个控件时,这个值指定了通过LB_SETITEMDATA或者CB_SETITEMDATA设定的数据。如果列表框或者组合框有LBS_HASSTRINGS或者CBS_HASSTRINGS风格,则itemData被置零,否则,itemData就被设置为指向通过如下消息发送的字符串数据的指针:
CB_ADDSTRING、CB_INSERTSTRING、LB_ADDSTRING、LB_INSERTSTRING。

所以,在没有勾选“Has Strings”选项的时候,可以通过itemData获取字符串数据,但是用GetLBText获得的字符串为空。勾选之后,通过itemData获取的数据为空(在没有SetItemData的情况下),而用GetLBText能正常获取字符串数据。 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值