社区
界面
帖子详情
重写DrawItem虚函数什么时候触发?
xiajun00
2007-12-04 06:57:26
做了个测试,运行后用其他软件的窗口去遮挡一下控件,好像需要完全覆盖才触发,如果只覆盖一小部分没有触发?
怎么会这样?
...全文
249
10
打赏
收藏
重写DrawItem虚函数什么时候触发?
做了个测试,运行后用其他软件的窗口去遮挡一下控件,好像需要完全覆盖才触发,如果只覆盖一小部分没有触发? 怎么会这样?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fei_xf
2007-12-17
打赏
举报
回复
不要忘了先在控件属性中勾上OwnerDraw
xiajun00
2007-12-10
打赏
举报
回复
jameshooo:
那就是说用一个窗口去覆盖再移开肯定会触发,可是测试的结果是颜色好像没有恢复。
jameshooo
2007-12-10
打赏
举报
回复
绘制消息肯定已经发送给你了,应该是你自己没有处理好具体的绘制
tccqs
2007-12-07
打赏
举报
回复
up and mark
jameshooo
2007-12-07
打赏
举报
回复
如果窗口被覆盖的过程是逐渐覆盖,则不会触发绘制消息,如果覆盖过程是逐渐出现,这时才会触发绘制消息。或者打个比方,月食,月亮越来越小时不会重绘,月亮越来越大时重绘
xiajun00
2007-12-06
打赏
举报
回复
bwmwm:我用的是dialogbar,基于单文档程序,dialogbar靠左停靠。
youyifang:自己发送,我如何判断合适发送?
youyifang
2007-12-06
打赏
举报
回复
系统发送wm_drawitem消息后就会有这个函数处理,你也可以自己发送,可以重绘很多东西,具体的可以看下msdn。
阜哥
2007-12-06
打赏
举报
回复
你是用什么控件?DrawItem 怎么写的?是不是对每一个item和每种状态都判断了呢?
QSmile
2007-12-05
打赏
举报
回复
DrawItem 好象是菜單與 Toolbar 重繪時觸發
leavef
2007-12-05
打赏
举报
回复
应该只要某一item无效时就会触发吧
解决C++中
Draw
Item
()函数不被调用的问题
当在自绘一个控件时,比如自绘一个CMyButton的时候,在
Draw
Item
()中改变了button的颜色,但是在程序执行时,
Draw
Item
()函数并没有被执行,原因在于按钮的类型并不是BS_OWNER
DRAW
,所以我们需要把它改为“所有者绘制”。 解决方法: 可以重载一个PreSubclassWindow()函数,在该函数中调用ModifyStyle()函数来设置类型,比如:
NM_CUSTOME
DRAW
(OnCustom
Draw
),WM_
DRAW
ITEM
(On
Draw
Item
)和
Draw
Item
(
Draw
Item
)的讨论
MFC自绘控件有很多函数 常见的有WM_
DRAW
ITEM
消息,
Draw
Item
虚函数
,还有一个NM_CUSTOM
DRAW
反射消息,NM_CUSTOM
DRAW
是通过WM_NOTIFY发送给父窗口的。我们可以在控件类里面反射调用次消息。 现在我们以CTListCtrl控件举例对比NM_CUSTOM
DRAW
和
Draw
Item
。 1.使用
Draw
Item
,你必须在创建CTListCtrl
Draw
Item
今天从CButton派生了一个类CUIButton,主要用于自绘,按照基本的流程,
重写
Draw
Item
方法。 步骤如下:点击CUIButton按钮,在右键弹出菜单中选择“add windows message Handler", 找到
Draw
Item
,为其添加消息映射,添加的代码如下: void CUIButton::On
Draw
Item
(int nIDCtl, LP
DRAW
ITEM
STRU
自绘控件时遇到的问题,如CListCtrl
在自绘CListBox的时候本人遇到过一件很头痛的事情,当然,这点小问题对于大牛来说,压根不屑一顾,可是初学者遇到的话,一时半会还真没什么办法解决。 自绘控件很简单,按照书上的步骤一步一步来操作即可,就拿自绘CListBox为例。 我们从CListBox派生出一个子类CListBoxEx,然后添加
Draw
Item
和Measure
Item
函数即可。我不知道有多少人和我
自绘控件时添加LBS_OWNER
DRAW
FIXED风格,离奇报错的解决方案!
在自绘CListBox的时候本人遇到过一件很头痛的事情,当然,这点小问题对于大牛来说,压根不屑一顾,可是初学者遇到的话,一时半会还真没什么办法解决。 自绘控件很简单,按照书上的步骤一步一步来操作即可,就拿自绘CListBox为例。 我们从CListBox派生出一个子类CListBoxEx,然后添加
Draw
Item
和Measure
Item
函数即可。我不知道有多少人和我一样,喜
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章