MFC中的InvalidateRect问题

我用InvalidateRect(pDoc->rect,TRUE)将pDoc->rect区域擦除,但是结果却与InvalidateRect(pDoc->rect,FALS... 我用InvalidateRect(pDoc->rect,TRUE)将pDoc->rect区域擦除,但是结果却与InvalidateRect(pDoc->rect,FALSE)一样,不会擦除rect区域;
但是InvalidateRect(NULL,TRUE)与InvalidateRect(NULL,FALSE)的结果却是不同的,一个有擦除,另一个没有,和我自己想的结果相同。
请问各位高手,这是什么原因?
&(pDoc->rect)和pDoc->rect效果一样,我试过
第二个我知道,第一个InvalidateRect(&(pDoc->rect),TRUE)是怎么回事,我无法理解,请高手指点
展开
 我来答
汲翠阳wa
2009-05-03 · 超过17用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:0
展开全部
第二个参数是指示使矩形区域无效时,是否擦除矩形区域的背景的,TRUE的话就擦除背景,FALSE就不擦除,InvalidateRect(NULL,TRUE)表示擦除整个窗口的背景,InvalidateRect(NULL,FALSE)则不是。
MSDN上是这么说的:
CWnd::InvalidateRect
void InvalidateRect( LPCRECT lpRect, BOOL bErase = TRUE );

The bErase parameter specifies whether the background within the update area is to be erased when the update region is processed. If bErase is TRUE, the background is erased when the BeginPaint member function is called; if bErase is FALSE, the background remains unchanged. If bErase is TRUE for any part of the update region, the background in the entire region is erased, not just in the given part.

Windows sends a WM_PAINT message whenever the CWnd update region is not empty and there are no other messages in the application queue for that window.
十指跳舞的男人
2009-05-03 · TA获得超过250个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:0
展开全部
你这个搞错了,第一个参数是一个指针而不是一个对象,取你的矩形地址就行了,比如&(pDoc->rect),应该是这样,我没试!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式