You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows设置深色模式后如何强制重绘标题栏?

强制标题栏重绘的解决方案

调用DwmSetWindowAttribute设置DWMWA_USE_IMMERSIVE_DARK_MODE后,DWM不会自动触发标题栏的即时重绘——常规的UpdateWindow和RedrawWindow仅作用于客户区,无法影响标题栏这类非客户区域。

你可以通过SetWindowPos并指定SWP_FRAMECHANGED标志,强制窗口重新计算并绘制非客户区,无需调整窗口大小或触发其他多余事件:

// 设置深色模式后执行以下代码
BOOL dark = TRUE;
DwmSetWindowAttribute(hwnd, DWMWA_USE_IMMERSIVE_DARK_MODE, &dark, sizeof(dark));

// 强制标题栏重绘
SetWindowPos(hwnd, nullptr, 0, 0, 0, 0, 
    SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);

参数说明:

  • SWP_FRAMECHANGED:通知窗口管理器,窗口的框架样式已更改,触发非客户区的重绘逻辑
  • SWP_NOMOVE/SWP_NOSIZE:保持窗口位置和大小不变
  • SWP_NOZORDER/SWP_NOACTIVATE:不改变窗口的Z序和激活状态,避免干扰窗口当前状态

这种方法比调整窗口大小的方案更高效且无视觉闪烁,直接命中非客户区重绘的触发点。

内容的提问来源于stack exchange,提问作者steveo225

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 17:10:36