现在有A,B,C三个窗口,A是view型主界面,B是与A并行的非模态对话框,C是模态对话框,三个窗口同时存在,现在C上点了一个按钮响应触发了对主界面A上InvalidateRect(&rect);实现刷新了主界面A上一个区域。可是为什么每按下C上那个按钮,界面A,B,C上其他的控件都会闪一次?

解决方案 »

  1.   

    A是view型主界面, 刷新了主界面A上一个区域 子窗口 会收到 重绘 消息, 除非 WS_CLIPCHILDREN 
      

  2.   

    我在界面A的属性中加入了WS_CLIPCHILDREN,还是会有那个现象,界面B和C是不是也要有什么设置?
      

  3.   

    InvalidateRect(&rect, FALSE)  试试看
      

  4.   

    InvalidateRect(&rect,FALSE);我试了,还是不行,控件还是会闪。
      

  5.   

    "界面A,B,C上其他的控件" 要 保证 不重绘 !
    用 对话框 上 按钮 控制 主界面 的 逻辑 是不是 合理 ?
      

  6.   

    你好,怎么才能让A,B,C界面上的控件不重绘呢?可以详细说一下吗?子对话框上的按钮控制主界面这个是要求要实现的,合理不合理我还没有想过
      

  7.   

    添加WM_ERASEBACKGROUND(名字大概是这样子的,估计不完全对,但你找一下应该能找到)的处理函数,其中返回FALSE
      

  8.   

    这个是WM_ERASEBKGND吧,在消息响应函数OnEraseBkgnd(CDC* pDC)中return TRUE;和return FALSE;都不行,控件都会闪
      

  9.   

    你好,刷新的就只有Invalidate(&rect);这一句,没有必要自定义一个消息吧
      

  10.   

    你好,刷新的就只有Invalidate(&rect);这一句,没有必要自定义一个消息吧
      

  11.   

    你好,刷新的就只有Invalidate(&rect);这一句,没有必要自定义一个消息吧