我们在MSDN中调用UpdateWindows()时调用了哪些方法?
What are the methods that are called when we invoke UpdateWindows() in MSDN?
我有一个应用程序,我在其中传递 window 的句柄 ID 并在 that.The 上调用 UpdateWindow() 方法问题是对于像记事本这样的小型应用程序,它几乎不需要大约 100 毫秒就可以完成更新 window,对于我的应用程序,完成 window.
的更新需要 1 分钟
因此,我想知道在后台调用了哪些方法,以便我可以确定我的应用程序的时间延迟在哪里。
UpdateWindow 所做的主要事情是发送 WM_PAINT 消息,这可能会导致 WM_ERASEBKNGD 和 WM_NCPAINT 消息(可以在没有这些消息的情况下进行绘制,但您必须避免 BeginPaint/EndPaint 并使用 GetDC() 中的 HDC 并改为调用 ValidateRect 或 ValidateRegion。
您的 WM_PAINT 处理程序不需要计算它需要绘制的内容(这样做很可能是绘制如您描述的那样慢的原因),该工作应该在绘制开始之前就已经完成了。如果您的 window 是一个更大的虚拟 space 的视图,则只绘制实际可见的区域。
我有一个应用程序,我在其中传递 window 的句柄 ID 并在 that.The 上调用 UpdateWindow() 方法问题是对于像记事本这样的小型应用程序,它几乎不需要大约 100 毫秒就可以完成更新 window,对于我的应用程序,完成 window.
的更新需要 1 分钟因此,我想知道在后台调用了哪些方法,以便我可以确定我的应用程序的时间延迟在哪里。
UpdateWindow 所做的主要事情是发送 WM_PAINT 消息,这可能会导致 WM_ERASEBKNGD 和 WM_NCPAINT 消息(可以在没有这些消息的情况下进行绘制,但您必须避免 BeginPaint/EndPaint 并使用 GetDC() 中的 HDC 并改为调用 ValidateRect 或 ValidateRegion。
您的 WM_PAINT 处理程序不需要计算它需要绘制的内容(这样做很可能是绘制如您描述的那样慢的原因),该工作应该在绘制开始之前就已经完成了。如果您的 window 是一个更大的虚拟 space 的视图,则只绘制实际可见的区域。