AnimateWindow中CEdit绘图问题

wuqiangu 2009-07-24 01:43:33
测试环境: window xp ,VS 2008

现状:准备一个对话框CTestDlg,,该对话框上有个CEdit(状态值按默认设置).
主程序中用AnimateWindow函数使对话框CTestDlg 动态弹出时,CEdit边框效果发生了变化。
弹出后,把鼠标放在CEdit上,或重新刷新窗口,,CEdit的边框恢复默认效果。。。

问题:怎样可以阻止此类事件发生。即,动态弹出对话框时,上面的控件要保持原样。。。

...全文
159 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuqiangu 2009-07-27
  • 打赏
  • 举报
回复
继续探讨
wuqiangu 2009-07-27
  • 打赏
  • 举报
回复
刚发现,,和Windows的主题也有些关系。
老的经典主题的话,不会出现这个问题。。
用XP主题的话,就有问题。
wuqiangu 2009-07-24
  • 打赏
  • 举报
回复
刷新CEdit可以想到的方法,
重写WindowProc函数,在里面截获WM_PRINTCLIENT消息,调用Invalidate(),
但是不管用。。。

唉,马上就要下班了,家里没环境,等到周一上班再来请教。。。

。。。。
请各路高手多多留言啊

有兴趣的同胞可以具体做一下这个例子(几分钟就能做出来吧)看看效果。。。
oyljerry 2009-07-24
  • 打赏
  • 举报
回复
对Edit控件刷新一下Invalidate()
wuqiangu 2009-07-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 eagerle01 的回复:]
不明白LZ的意思,刷新了就重绘下
[/Quote]
就是动态弹出对话框时,不想让该对话框上的默认CEdit发生任何变化。。
可是现在,弹出过程中,可以看到CEdit的蓝色边框没有了。

eagerle01 2009-07-24
  • 打赏
  • 举报
回复
不明白LZ的意思,刷新了就重绘下
wuqiangu 2009-07-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fengrx 的回复:]
下面是MSDN上的解释:
The window procedures for the window and its child windows may need to handle any WM_PRINT or WM_PRINTCLIENT messages. Dialog boxes, controls, and common controls already handle WM_PRINTCLIENT. The default window procedure already handles WM_PRINT.

好像使用此函数时要主动发送子窗口或控件paint消息。
[/Quote]
谢谢。。。这个解释好像是说,默认的系统控件,系统已经自动给paint了。。自定义控件要发送重绘消息。。。
dulvtianya 2009-07-24
  • 打赏
  • 举报
回复
学习啊学习
迷途的书童 2009-07-24
  • 打赏
  • 举报
回复
可以在窗口重新刷新的时候, 设定CEdit 的 效果!
fengrx 2009-07-24
  • 打赏
  • 举报
回复
下面是MSDN上的解释:
The window procedures for the window and its child windows may need to handle any WM_PRINT or WM_PRINTCLIENT messages. Dialog boxes, controls, and common controls already handle WM_PRINTCLIENT. The default window procedure already handles WM_PRINT.

好像使用此函数时要主动发送子窗口或控件paint消息。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧