首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

Invalidate & SendMessage的有关问题

2012-01-24 
Invalidate & SendMessage的问题在某函数A里{m_rectCRect(20,20,210,210)Invalidate()//SendMessage(WM

Invalidate & SendMessage的问题
在某函数A里
{
      m_rect   =   CRect(20,   20,   210,   210);
      Invalidate();
//       SendMessage(WM_PAINT);     ///****///
      m_rect   =   CRect(300,   20,   510,   210);
}

而在OnDraw里
{
      ...
      pDC-> Draw3dRect(m_rect,   0x00FF0000,   0x0000FF00);
}
当触发A函数时绘出的矩形位置在(300,   20,   510,   210),但是当加上//的那句后
却绘出在(20,   20,   210,   210),这是为什么?

[解决办法]
SendMessage会等到WM_PAINT执行完后再返回
在调用SendMessage前m_rect = CRect(20, 20, 210, 210)

也就是WM_PAINT, 用的是CRect(20, 20, 210, 210)
[解决办法]
把WM_PAINT发送到视图框架内,需要等A函数结束后才执行WM_PAINT这个响应,此时只有m_rect = CRect(300, 20, 510, 210);被记录,所以绘出在(20, 20, 210, 210)

热点排行