C / C ++ / C#:如何在Windows 7上强制重绘窗口铬?

时间:2010-08-20 03:15:21

标签: c# .net c++ windows-7 window-chrome

我的应用程序有一个应用程序的标准顶级窗口。我需要强制重新绘制窗口chrome(也称为窗口的非客户区域)。我不关心客户区是否也被重新粉刷,但是铬本身需要被迫重新粉刷。

特别是我需要这个在Windows 7上工作。在我的特定情况下,它是否适用于其他操作系统版本并不重要。解决方案可以是C,C ++,C#或任何其他语言。

2 个答案:

答案 0 :(得分:3)

根据MSDN,似乎

RedrawWindow( hWnd, NULL, NULL, RDW_INVALIDATE | RDW_FRAME );

正是您要找的。

RDW_FRAME导致窗口的非客户区域的任何与更新区域相交的部分接收WM_NCPAINT消息。还必须指定RDW_INVALIDATE标志;否则,RDW_FRAME无效。除非指定了RDW_UPDATENOW或RDW_ERASENOW,否则在执行RedrawWindow期间通常不会发送WM_NCPAINT消息。

答案 1 :(得分:-2)

也许您可以将WM_NCPAINT消息发送到窗口

http://msdn.microsoft.com/en-us/library/dd145212%28VS.85%29.aspx