我正在Flutter中开发一个跨平台应用程序,我想启动一个没有标题栏和窗口控制按钮的半透明背景应用程序。在屏幕的右下角。
它似乎工作得很好,但当启动应用程序时,它会首先显示边框和标题栏。然后当我开始调整窗口大小时,它看起来就像我想要的那样。
这是我用于效果的代码:
HWND window = CreateWindow(
window_class, title.c_str(), WS_OVERLAPPEDWINDOW,
Scale(origin.x, scale_factor), Scale(origin.y, scale_factor),
Scale(size.width, scale_factor), Scale(size.height, scale_factor),
nullptr, nullptr, GetModuleHandle(nullptr), this);
// Hide the window control buttons (minimize, maximize, close)
SetWindowLong(window, GWL_STYLE, GetWindowLong(window, GWL_STYLE) & ~WS_SYSMENU);
// Hide the window titlebar
SetWindowLong(window, GWL_STYLE, GetWindowLong(window, GWL_STYLE) & ~WS_CAPTION);
这是应用程序启动时的样子:
这是我希望应用程序启动的方式(调整大小后,它看起来像这样):
1条答案
按热度按时间mkshixfv1#
你应该在
CreateWindow()
调用本身中只指定你实际需要的样式,而不是在窗口创建后删除不需要的样式。例如,您可以执行以下操作:
其等同于:
但是,由于没有使用
WS_SYSMENU
,因此可以省略2个WS_...BOX
样式:而且,由于您无论如何都要禁用标题栏,因此您并不真的需要
WS_OVERLAPPED
(它有标题栏),因此您可能应该使用WS_POPUP
来代替,正如@user20716902所提到的: