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

发布于 2024-09-15 13:58:20 字数 171 浏览 5 评论 0原文

我的应用程序有一个标准的应用程序顶级窗口。我需要强制重新绘制窗口镶边(也称为窗口的非客户区域)。我不在乎客户区域是否也重新绘制,但镀铬本身需要强制重新绘制。

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

My application has a standard top level window for the application. I need to force a repaint of the window chrome (otherwise known as the non-client area of the window). I do not care if the client area is also repainted or not but the chrome itself needs to be forced to repaint.

In particular I need this to work on Windows 7. Whether it works on other OS versions does not matter in my particular case. The solution can be C, C++, C# or any other language.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

隐诗 2024-09-22 13:58:20

根据MSDN,似乎

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

就是这样你正在寻找。

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

According to MSDN, it seems that

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

is what you are looking for.

RDW_FRAME causes any part of the nonclient area of the window that intersects the update region to receive a WM_NCPAINT message. The RDW_INVALIDATE flag must also be specified; otherwise, RDW_FRAME has no effect. The WM_NCPAINT message is typically not sent during the execution of RedrawWindow unless either RDW_UPDATENOW or RDW_ERASENOW is specified.

萝莉病 2024-09-22 13:58:20

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

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

maybe you could send the WM_NCPAINT message to the window

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文