VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 437|回复: 13

[求助] 组合框GetComboBoxInfo的使用

[复制链接]
71_avatar_middle
在线会员 zzw843 发表于 2018-2-6 17:54:50 | 显示全部楼层 |阅读模式
3驿站币
各位大虾,最近想学习一下使用GetComboBoxInfo重绘组合框,思路是这样的:
1、重载CComboBox类、CEdit类和CListBox类,
2、在自己的ComboBox类中定义新建的CEidt和CListBox成员变量,
3、在自己的ComboBox类PreSubclassWindow函数中使用GetComboBoxInfo函数得到编辑框和列表框的句柄,然后使用SubclassWindow子类化编辑框和列表框,代码如下
      void CMyCombo::PreSubclassWindow()
      {
        // TODO:  在此添加专用代码和/或调用基类
        ModifyStyle(0, BS_OWNERDRAW);
        COMBOBOXINFO  info = { sizeof(COMBOBOXINFO) };
        GetComboBoxInfo(&info);
        CComboBox::PreSubclassWindow();
        m_box.SubclassWindow(info.hwndList);
        m_edit.SubclassWindow(info.hwndItem);
      }
在运行的时候,编辑框的自绘效果有了,但是列表框自绘效果没有,断点调试时已经进入列表框自绘程序,但是没有显示,请高手指点,谢谢!!!!





上一篇:为什么DLL加载资源文件失败
下一篇:怎样将最小化后的对话框激活并置顶显示?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

01_avatar_middle
online_admins admin 发表于 2018-2-6 20:09:56 | 显示全部楼层
光看这一小段代码还真是看不出什么问题,楼主方便的话把整个工程传上来吧,我本地试试

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

71_avatar_middle
ico_lz  楼主| zzw843 发表于 2018-2-7 08:27:52 | 显示全部楼层
admin 发表于 2018-2-6 20:09
光看这一小段代码还真是看不出什么问题,楼主方便的话把整个工程传上来吧,我本地试试

谢谢admin,我后来在继承的ListBox类添加鼠标移动刷新的功能效果出来了,但是会闪一下,你帮忙看看,还有我想是不是可以使用类似的方法将列表子类化成树形控件,但是运行时没出现预期的效果(这部分代码注释起来了),现上传上工程,请帮忙指点,谢谢!!

MFCApplication4.zip

146.07 KB, 下载次数: 1

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-2-7 10:56:31 | 显示全部楼层
zzw843 发表于 2018-2-7 08:27
谢谢admin,我后来在继承的ListBox类添加鼠标移动刷新的功能效果出来了,但是会闪一下,你帮忙看看,还有 ...

可以考虑在 CMyListBox::OnMouseMove 中将 Invalidate 的调用改成 InvalidateRect 刷新指定的矩形区域,而不是刷新整个ListBox,这样是不是效果能好点

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

71_avatar_middle
ico_lz  楼主| zzw843 发表于 2018-2-7 11:32:10 | 显示全部楼层
Syc 发表于 2018-2-7 10:56
可以考虑在 CMyListBox::OnMouseMove 中将 Invalidate 的调用改成 InvalidateRect 刷新指定的矩形区域, ...

谢谢Syc,我试了一下,还得全部重绘,因为在移动鼠标是需要对整个ListBox背景进行重绘。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-2-7 11:36:29 | 显示全部楼层
zzw843 发表于 2018-2-7 11:32
谢谢Syc,我试了一下,还得全部重绘,因为在移动鼠标是需要对整个ListBox背景进行重绘。

如果你的ListBox中有10条记录,移动鼠标的话,不就是将之前的选中背景色改下,再改下当前鼠标所在的单元格的背景色吗,其他8个就不用重绘了吧?状态也没改变

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

71_avatar_middle
ico_lz  楼主| zzw843 发表于 2018-2-7 14:56:58 | 显示全部楼层
Syc 发表于 2018-2-7 11:36
如果你的ListBox中有10条记录,移动鼠标的话,不就是将之前的选中背景色改下,再改下当前鼠标所在的单元 ...

明白了,呵呵,开始没有理解你的意思。
还想问一下我仿照子类化CListBox的方法将列表子类化成CTreeCtrl类,会不会下拉列表就是树形控件?这个思路不知道对不对,我模仿的做了一下,发现能够响应树形控件的OnEraseBkgnd,但却显示不出效果,Syc帮忙给分析一下。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-2-7 15:04:30 | 显示全部楼层
zzw843 发表于 2018-2-7 14:56
明白了,呵呵,开始没有理解你的意思。
还想问一下我仿照子类化CListBox的方法将列表子类化成CTreeCtrl ...

可以啊,实际上你就是将树形控件的目录树结构描绘在了ListBox中,但是你的数据内容就要有层级才行

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

71_avatar_middle
ico_lz  楼主| zzw843 发表于 2018-2-7 16:31:33 | 显示全部楼层
Syc 发表于 2018-2-7 15:04
可以啊,实际上你就是将树形控件的目录树结构描绘在了ListBox中,但是你的数据内容就要有层级才行

你的意思是数据录入的时候人为的做成树形结构?我是想直接嵌入树控件,然后显示出来,感觉应该可以,但是就是实现不了。

还有再请教一下,子类化ListBox后,控件的高度随着数据的增加也在增加,我想控制控件高度,但是子类化后不响应OnCreate,不知道怎么办,还请Syc指点一下,菜鸟请多包涵。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-2-7 17:01:10 | 显示全部楼层
zzw843 发表于 2018-2-7 16:31
你的意思是数据录入的时候人为的做成树形结构?我是想直接嵌入树控件,然后显示出来,感觉应该可以,但是 ...

ListBox 中嵌入树形控件这个恐怕实现不了。
那么你就重载添加数据的函数,在这里面处理,是显示滚动条还是怎么的就可以了!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

71_avatar_middle
ico_lz  楼主| zzw843 发表于 2018-2-7 17:48:53 | 显示全部楼层
Syc 发表于 2018-2-7 17:01
ListBox 中嵌入树形控件这个恐怕实现不了。
那么你就重载添加数据的函数,在这里面处理,是显示滚动条还 ...

好的,明白了,那我要控制ListBox的高度该如何实现呢?现在是随着添加数据的增加ListBox的高度也在增加,我想控制他的高度,数据多是通过滚动条来查看

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-2-7 18:00:16 | 显示全部楼层
zzw843 发表于 2018-2-7 17:48
好的,明白了,那我要控制ListBox的高度该如何实现呢?现在是随着添加数据的增加ListBox的高度也在增加, ...


那就只能自己再绘制个滚动条了~

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

71_avatar_middle
ico_lz  楼主| zzw843 发表于 2018-2-7 20:26:38 | 显示全部楼层
Syc 发表于 2018-2-7 18:00
那就只能自己再绘制个滚动条了~

哦,好的,谢谢Syc

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

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

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

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

GMT+8, 2018-10-22 19:16

Powered by Discuz! X3.4

© 2009-2018 cctry.com

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