我的应用程序有一个标准的顶级应用程序窗口。我需要强制重新绘制窗口镶边(也称为窗口的非客户区)。我不在乎客户区是否也被重新粉刷,但 chrome 本身需要被迫重新粉刷。
特别是我需要它在 Windows 7 上运行。在我的特定情况下,它是否适用于其他操作系统版本并不重要。解决方案可以是 C、C++、C# 或任何其他语言。
我的应用程序有一个标准的顶级应用程序窗口。我需要强制重新绘制窗口镶边(也称为窗口的非客户区)。我不在乎客户区是否也被重新粉刷,但 chrome 本身需要被迫重新粉刷。
特别是我需要它在 Windows 7 上运行。在我的特定情况下,它是否适用于其他操作系统版本并不重要。解决方案可以是 C、C++、C# 或任何其他语言。
根据MSDN,似乎
RedrawWindow( hWnd, NULL, NULL, RDW_INVALIDATE | RDW_FRAME );
就是你要找的。
RDW_FRAME 导致与更新区域相交的窗口非客户区的任何部分接收 WM_NCPAINT 消息。还必须指定 RDW_INVALIDATE 标志;否则,RDW_FRAME 无效。除非指定了 RDW_UPDATENOW 或 RDW_ERASENOW,否则 WM_NCPAINT 消息通常不会在 RedrawWindow 的执行期间发送。
也许您可以将 WM_NCPAINT 消息发送到窗口
http://msdn.microsoft.com/en-us/library/dd145212%28VS.85%29.aspx