windows mfc对话框闪烁在无效

windows mfc dialog flashes on Invalidate

本文关键字:无效 闪烁 对话框 mfc windows      更新时间:2023-10-16

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

我调用Invalidate();大约每秒10次,因为所有这些文本编辑都需要更新(它们都绑定到线程中设置的全局变量)

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

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

  1. Invalidate只是在消息泵生成下一个WM_PAINT消息时重新显示内容。
  2. 如果你在对话框本身上调用Invalidate,当你没有定义WS_CLIPCHILDREN时,对话框的背景和所有子框都会被背景刷覆盖。

如果你想强制立即重绘所有减少闪烁的窗口,在对话框中定义WS_CLIPCHILDREN并使用带有RDW_UPDATENOW RDW_ALLCHILDREN的RedrawWindow。当编辑控件被更改时,它们将立即重新显示。

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

顺便说一句:当UpdateData崩溃时,你的程序中有一个巨大的错误。你应该把它修好。UpdateData不会立即重新显示编辑和静态信息