如何在 windows c++ 中创建带标题栏的无边框 window

How to create a borderless window with titlebar in windows c++

我正在尝试创建一个 Direct3D 应用程序,它在 windowed 模式下运行,带有标题栏和 minimize/quit 按钮。但是,我真的很想能够取消 window.

周围的边界

我想这样做是因为当应用程序水平填充主显示器(有空间垂直移动应用程序)时,它在双显示器上看起来很俗气,但它的 window 边框溢出到辅助显示器上屏幕。我已经尝试了 setwindowlongGWL_STYLEGWL_EXSTYLE 的一堆组合,但似乎无法取得进展,除非我禁用标题栏。

我见过很多无边框的应用程序,但它们似乎模仿了标题栏,而不是使用 Microsoft 提供的内置应用程序。

感谢任何建议。

您不能删除边框并保留标题栏 AFAIK。

您可以使用 WM_NCHITTEST 重新实现标题栏,但您仍然需要自己绘制它,如果您希望 D3D 应用程序看起来最好,这不是一个坏主意。

Visual Studio,我上次检查时,它的边框透明分层 windows 位于主要边框后面。他们就是你看到的影子。