我想立即在HWND
上绘制图像(当函数返回时,图像就会被绘制)。所以我正在考虑使用UpdateWindow()
来做,正如我所读到的,UpdateWindow()
将通过直接调用Window Procedure发送WM_PAINT消息,而不是通过在消息队列中放置WM_PAINT消息。 / p>
但有人认为我不确定,UpdateWindow()
文件说明如下:
如果更新区域为空,则不会发送任何消息。
什么"空"手段?这是否意味着验证?如果是,我应该在致电InvalidateRect()
之前致电UpdateWindow()
吗?
答案 0 :(得分:1)
如果没有标记为无效的更新区域,则UpdateWindow
不执行任何操作,正如文档所述。如果您先拨打InvalidateRect
,则更新区域不会为空,UpdateWindow
会按预期触发WM_PAINT
。
如果您想立即强制重绘,最简单的方法是使用RedrawWindow
功能。这使您可以同时将区域标记为无效,并在命令返回之前强制重绘。例如,这将强制重绘整个客户区:
RedrawWindow(hWnd, 0, 0, RDW_INVALIDATE | RDW_UPDATENOW);