我使用"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);
答案 0 :(得分:0)
问题在于,由于我在窗口的过程中处理了WM_NCCREATE
消息,因此DefWindowProc()
函数并未对其进行处理。 WM_NCCREATE函数应按以下方式处理:
case WM_NCCREATE:
{
CREATESTRUCTW* create = (CREATESTRUCTW*)lParam;
SetWindowTextW(hWnd, create->lpszName);
return TRUE;
}