我需要一个没有标题栏的窗口,没有控制框,没有系统菜单,没有框架(所有的功能都提供了单独的控制)。
我怀疑这可能与
CreateWindowExA
的“窗口样式”参数
dwStyle
还有可能
lpWindowName
,如下所述:
https://docs.microsoft.com/en-us/windows/desktop/winmsg/window-styles
HWND hwnd = CreateWindowEx(
0, // Optional window styles.
CLASS_NAME, // Window class.
L"", // No window name (title text).
WS_OVERLAPPEDWINDOW, // Window style.
// Size and position.
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, // Parent window.
NULL, // Menu.
hInstance, // Instance handle.
NULL // Additional application data.
);
然而,在
dwStyle公司
WS_OVERLAPPEDWINDOW
定义为
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX
具有
WS_OVERLAPPED
0x00000000L
仅仅提供0而忽略其余部分是行不通的,正如文档所暗示的:“窗口是一个重叠的窗口。重叠窗口有标题栏和边框。“
ControlBox
属性到
False
然后用
Text = ""
,所以我强烈怀疑,如果可能的话,在VB中…)
我将如何在C++中完成任务?
以防万一
WindowProc
为了处理一个不同的信息,它是最简单的版本:
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
FillRect(hdc, &ps.rcPaint, (HBRUSH)(COLOR_WINDOW + 1));
EndPaint(hwnd, &ps);
return 0;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}