OnPaint触发问题

wzw200 2009-07-04 11:08:54
我在MFC里OnPaint函数里写了绘窗体为黑的一段代码,窗体最大,最小化时都绘黑,可是现在有一个问题,就是窗体失去焦点和得到焦点切换时(其他窗口影响的)这个函数又调用了一次(一闪一下),我想知道那位怎么不让他再调用这个OnPaint函数呢,当切换焦点时,谢谢各位了
...全文
340 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenfh2020 2009-07-08
  • 打赏
  • 举报
回复
那就在 OnPaint 里面处理 失去焦点和获得焦点的情况,让它不要将画面刷黑。
wzw200 2009-07-08
  • 打赏
  • 举报
回复
//除非你的窗体被盖住了,产生了无效区。
对 就是这样
xylicon 2009-07-04
  • 打赏
  • 举报
回复
把绘窗体为黑的一段代码放到别的函数,当需要把绘窗体为黑的时候调用这个函数。
wzw200 2009-07-04
  • 打赏
  • 举报
回复
而是你的窗口被遮住了再显示出来后导致窗口区域无效才这样的
对 就是这样
wzw200 2009-07-04
  • 打赏
  • 举报
回复
1楼说对 我的程序就是这样
oyljerry 2009-07-04
  • 打赏
  • 举报
回复
OnPaint是会当窗口需要刷新时就会调用,如切换窗口,窗口大小变化等
你可以在OnPaint中,在判断条件,只有窗口最大,最小化时,才调用你的画黑的代码部分
orangeam 2009-07-04
  • 打赏
  • 举报
回复
void CformviewView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码

CRect rect;
GetClientRect(&rect);
dc.FillSolidRect(&rect, 0);
}

上面是画黑窗口的代码,我试过,不会闪烁,所以,闪烁的原因不在这里
arong1234 2009-07-04
  • 打赏
  • 举报
回复
你不能控制的,OnPaint在窗口区域被无效后总会被重绘
这不是失去焦点或者得到焦点导致的,而是你的窗口被遮住了再显示出来后导致窗口区域无效才这样的
wltg2001 2009-07-04
  • 打赏
  • 举报
回复
,可是现在有一个问题,就是窗体失去焦点和得到焦点切换时(其他窗口影响的)这个函数又调用了一次(一闪一下),我想知道那位怎么不让他再调用这个OnPaint函数呢
==============
焦点的变换不应该产生WM_PAINT消息的,所以不可能出现你所说的情况,除非你的窗体被盖住了,产生了无效区。

15,979

社区成员

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

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