不显示CreateWindowW函数中定义的Windows标题

时间:2019-03-21 19:41:03

标签: windows winapi

我使用"name": "CONTAMINATION_SCORE"函数创建了一个窗口(在注册Windows类等之后),并且可以正常工作,但是未显示窗口标题。我可以使用CreateWindowW函数来解决问题,但我仍然想知道为什么它不能正常工作。

那是我的注册功能:

SetWindowTextW

我的创建功能…:

ATOM MainWindow::RegisterMainWindow(HINSTANCE hInstance)
{
WNDCLASSEXW wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = MainWndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APP_ICON));
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = windowsClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

return RegisterClassExW(&wcex);
}

还有我的构造函数:

BOOL MainWindow::CreateMainWindow(HINSTANCE hInstance)
{
hwnd = CreateWindowW(windowsClass, L"FLY", WS_OVERLAPPEDWINDOW,
    PublicMainClass::userData.MainWindow.left, PublicMainClass::userData.MainWindow.top,
    PublicMainClass::userData.MainWindow.right, PublicMainClass::userData.MainWindow.bottom, nullptr, nullptr, hInstance, NULL/*this*/);

SetWindowTextW(hwnd, windowsTitle);

if (!hwnd)
{
    return FALSE;
}

ShowWindow(hwnd, SW_NORMAL);
UpdateWindow(hwnd);
return TRUE;
}

这就是wWinMain函数调用类的方式:

MainWindow::MainWindow(HINSTANCE hInstance)
{
PublicMainClass::userData.NewUser();

PublicMainClass::PublicMainClassConstructor(hInstance);

LoadStringW(hInstance, MAIN_WINDOW_CLASS, windowsClass, MAX_LOADSTRING);
LoadStringW(hInstance, APP_TITLE, windowsTitle, MAX_LOADSTRING);
}

这是我的窗口过程:

MainWindow* mainWindow = new MainWindow(hInstance);
mainWindow->RegisterMainWindow(hInstance);
mainWindow->CreateMainWindow(hInstance);

1 个答案:

答案 0 :(得分:0)

问题在于,由于我在窗口的过程中处理了WM_NCCREATE消息,因此DefWindowProc()函数并未对其进行处理。 WM_NCCREATE函数应按以下方式处理:

case WM_NCCREATE:
{
    CREATESTRUCTW* create = (CREATESTRUCTW*)lParam;
    SetWindowTextW(hWnd, create->lpszName);
    return TRUE;
}