cpaintdc
场景:CPaintDC CClientDC区别解决方法
CPaintDC CClientDC区别
CPaintDC dc (this);
CRect rect;
GetClientRect (&rect);
dc.DrawText (_T ("Hello, MFC"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
换成CClientDC 就会不停闪烁
是因为引起WM_PAINT消息的死循环
哪里引起的呢?
------解决方案--------------------
闪烁是如何出现的呢?
谢谢
-----------------
因为你没把无效区域变成有效的,换句话说你没把WM_PAINT消息从队列中取走。
CPaintDC 是BeginPaint()和Endpaint()的封装,CPaintDC一般是用在OnPaint函数里的,OnPaint是响应WM_PAINT消息的消息响应函数,CPaintDC对象一构造,消息队列中的WM_PAINT会被取走, 而CClientDC是用在非OnPaint函数里画图用的,把SDK基础打好咯。
CPaintDC CClientDC区别
CPaintDC dc (this);
CRect rect;
GetClientRect (&rect);
dc.DrawText (_T ("Hello, MFC"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
换成CClientDC 就会不停闪烁
是因为引起WM_PAINT消息的死循环
哪里引起的呢?
------解决方案--------------------
闪烁是如何出现的呢?
谢谢
-----------------
因为你没把无效区域变成有效的,换句话说你没把WM_PAINT消息从队列中取走。
CPaintDC 是BeginPaint()和Endpaint()的封装,CPaintDC一般是用在OnPaint函数里的,OnPaint是响应WM_PAINT消息的消息响应函数,CPaintDC对象一构造,消息队列中的WM_PAINT会被取走, 而CClientDC是用在非OnPaint函数里画图用的,把SDK基础打好咯。