关于WM_PAINT消息的问题

yueshihun 2009-01-12 05:43:55
自定义控件MyButton继承于Button,在WndProc的WM_PAINT消息中,对button的外观进行了改变。
自定义控件MyForm继承于Form,在WndProc的WM_PAINT消息中,对Form的外观进行了改变。

建立一个测试工程,Form1继承于MyForm,里面加入MyButton按钮,但是用鼠标拖动Form1,改变大小的时候,发现那个Button按钮在闪动,发现是因为在改变Form1大小时,响应WM_PAINT消息进行重绘所致。但是如果Form1不是继承于MyForm,而是系统的Form,拖动鼠标改变Form1大小,那个Button按钮就不会闪动,请问各位知道是什么原因么?如何禁止闪动呢?不甚感激。
...全文
121 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddeng 2009-01-13
  • 打赏
  • 举报
回复
DoubleBuffered = true;
但最好你能优化WM_PAINT消息处理。
EveryCase 2009-01-13
  • 打赏
  • 举报
回复
ding
ares128 2009-01-13
  • 打赏
  • 举报
回复
有一个doublebuffer 还是backbuffer的属性
Control.SetStyle (ControlStyles.DoubleBuffer)
用这个属性还要配合其他属性 请自行查找msdn
null1 2009-01-13
  • 打赏
  • 举报
回复
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.ResizeRedraw, true);

就不闪烁了,实际上还是在重画,只不过不闪烁就不注意了
lange_love 2009-01-12
  • 打赏
  • 举报
回复
up

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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