Windows mfc对话框闪烁Invalidate

时间:2014-07-21 06:18:55

标签: c++ mfc

我有一个基于对话框的MFC应用程序,它有很多文本编辑和其他一些东西。

我打电话给Invalidate();因为所有这些文本编辑都需要更新(它们都与线程中设置的全局变量相关联),所以每秒大约10x /秒

我原本只希望文本编辑字段闪一点,但整个对话框都闪烁,这不太好。

有更好的方法吗? UpdateData()只是崩溃了

1 个答案:

答案 0 :(得分:2)

  1. 无效只是在从消息泵生成下一个WM_PAINT消息时重新显示内容。
  2. 如果您在Dialog本身上调用Invalidate对话框的背景,那么当您没有定义WS_CLIPCHILDREN时,所有孩子都会被背景画笔覆盖。
  3. 如果要强制立即重绘所有窗口,减少闪烁,请在对话框中定义WS_CLIPCHILDREN,并使用带有RDW_UPDATENOW RDW_ALLCHILDREN的RedrawWindow。当编辑控件被更改时,它们将在此时重新显示。

    但是,每秒更新控件十次可能不是使用UI通知用户的好方法。

    BTW:当UpdateData崩溃时,你的程序中有一个大错误。你应该解决它。 UpdateData不会立即重新显示编辑和静态。