VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 546|回复: 6

[已解决]CComboBox不响应MeasureItem

[复制链接]
49_avatar_middle
最佳答案
0 
在线会员 发表于 2021-8-20 19:02:03 | 显示全部楼层 |阅读模式
练习自绘控件
写了一个myComboBox, 继承自CCombobox
确认修改了owner draw为variable
还特地在presubwindow里使用getStyle()确认了是variable

但是如图 我在measureItem设置的断点一次也没有进去
列表打开也不正常

好难受啊   有大佬们知道是为什么吗T T
CComboBox不响应MeasureItem
CComboBox不响应MeasureItem
CComboBox不响应MeasureItem
最佳答案
31_avatar_small
2021-8-22 14:04:43
本帖最后由 cpp2019 于 2021-8-22 14:15 编辑
O一发入魂O 发表于 2021-8-22 09:29
大佬  这个控件我getstyle的值和cbs_ownerdrawvariable的值与运算后   得到的是true  说明这个style我是 ...


cbs_ownerdrawvariable这个样式就是设置自绘的,自绘的就带这个样式,调用一次AddString()就会调用一次MeasureItem。
CComboBox不响应MeasureItem
CComboBox不响应MeasureItem CComboBox.7z (70.69 KB, 下载次数: 1)




上一篇:数组储存中文
下一篇:这有什么错误???
31_avatar_middle
最佳答案
62 
在线会员 发表于 2021-8-22 14:04:43 | 显示全部楼层    本楼为最佳答案   
bestAnswer
本帖最后由 cpp2019 于 2021-8-22 14:15 编辑
O一发入魂O 发表于 2021-8-22 09:29
大佬  这个控件我getstyle的值和cbs_ownerdrawvariable的值与运算后   得到的是true  说明这个style我是 ...


cbs_ownerdrawvariable这个样式就是设置自绘的,自绘的就带这个样式,调用一次AddString()就会调用一次MeasureItem。
CComboBox不响应MeasureItem
CComboBox不响应MeasureItem CComboBox.7z (70.69 KB, 下载次数: 1)

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small thzzl + 2 + 2

查看全部评分

31_avatar_middle
最佳答案
62 
在线会员 发表于 2021-8-21 20:51:55 | 显示全部楼层
官方文档中的说明                          
  1. Remarks
  2. By default, this member function does nothing. Override this member function and fill in the MEASUREITEMSTRUCT structure to inform Windows of the dimensions of the list box in the combo box. If the combo box is created with the CBS_OWNERDRAWVARIABLE style, the framework calls this member function for each item in the list box. Otherwise, this member is called only once.
复制代码

解决方法
1、动态创建,增加 CBS_OWNERDRAWVARIABLE 样式。
2、在OnInitDialog中给控件增加  CBS_OWNERDRAWVARIABLE 样式。

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small thzzl + 2 + 2 学习了

查看全部评分

49_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-8-22 09:29:02 来自手机 | 显示全部楼层
cpp2019 发表于 2021-8-21 20:51
官方文档中的说明                          

解决方法

大佬  这个控件我getstyle的值和cbs_ownerdrawvariable的值与运算后   得到的是true  说明这个style我是有的
49_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-8-23 08:58:05 | 显示全部楼层
cpp2019 发表于 2021-8-22 14:04
cbs_ownerdrawvariable这个样式就是设置自绘的,自绘的就带这个样式,调用一次AddString()就会调用一次 ...

谢谢大佬提醒
我是测试的时候为了方便直接在控件的data中加数据的
没有使用addstring()
感谢耐心解答哈大佬!!
49_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-8-23 10:44:49 | 显示全部楼层
cpp2019 发表于 2021-8-22 14:04
cbs_ownerdrawvariable这个样式就是设置自绘的,自绘的就带这个样式,调用一次AddString()就会调用一次 ...

大佬 可以额外再请教一下吗
addstring后确实触发了measureitem
但是我原来用来绘制下拉列表里的drawitem不触发了
49_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-8-23 13:00:36 | 显示全部楼层
cpp2019 发表于 2021-8-22 14:04
cbs_ownerdrawvariable这个样式就是设置自绘的,自绘的就带这个样式,调用一次AddString()就会调用一次 ...

大佬  我试了一个上午自己解决了
自己试下来是这样的:
想要同时触发measureitem和drawitem, 控件要用create动态创建, 不能用ui拖进来绑定变量
然后就是combobox好像和其他控件不一样, 我设置成fixed, 反而自己画的全部正确了
设置成variable之后, 每次drawitem进来的参数itemID都是-1

再次谢谢大佬
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-12-11 10:58

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表