Итак, я сидел здесь более 30 минут, пытаясь решить эту проблему, в «Create Window» он дает мне значение NULL, если у меня нет имени класса в качестве «LoginClassName», если я использую «RegisterClassName», он вернет NULL , Я пытаюсь создать всплывающее окно, и пока оно пинает меня в задницу. Я создаю класс так же, как LoginClass, поэтому я не вижу проблемы.
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow) {
MSG msg;
WNDCLASSW LoginClass = { 0 };
wchar_t LoginClassName[] = L"LoginWindow";
LoginClass.cbClsExtra = 0;
LoginClass.cbWndExtra = 0;
LoginClass.hbrBackground = HBRUSH(GetStockObject(WHITE_BRUSH));
LoginClass.hCursor = LoadCursor(hInstance, IDC_ARROW);
LoginClass.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
LoginClass.lpfnWndProc = LoginWndProc;
LoginClass.hInstance = hInstance;
LoginClass.lpszClassName = LoginClassName;
LoginClass.lpszMenuName = NULL;
LoginClass.style = CS_VREDRAW | CS_HREDRAW;
if (!RegisterClass(&LoginClass))
{
MessageBox(NULL, L"Error", L"Error", MB_OK | MB_ICONERROR);
return 0;
}
WNDCLASSW RegisterWindowClass = { 0 };
wchar_t RegisterClassName[] = L"Test";
RegisterWindowClass.cbClsExtra = 0;
RegisterWindowClass.cbWndExtra = 0;
RegisterWindowClass.hbrBackground = HBRUSH(GetStockObject(WHITE_BRUSH));
RegisterWindowClass.hCursor = LoadCursor(hInstance, IDC_ARROW);
RegisterWindowClass.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
RegisterWindowClass.lpfnWndProc = RegisterWndProc;
RegisterWindowClass.hInstance = hInstance;
RegisterWindowClass.lpszClassName = RegisterClassName;
RegisterWindowClass.lpszMenuName = NULL;
RegisterWindowClass.style = CS_VREDRAW | CS_HREDRAW;
if (!RegisterClass(&RegisterWindowClass))
{
MessageBox(NULL, L"Error", L"Error", MB_OK | MB_ICONERROR);
return 0;
}
hLoginWindow = CreateWindow(LoginClassName, L"GameLauncher Login", WS_SYSMENU | WS_CAPTION | WS_OVERLAPPED, CW_USEDEFAULT, CW_USEDEFAULT, 350, 200, NULL, NULL, hInstance, NULL);
hRegisterWindow = CreateWindowEx(NULL, RegisterClassName, L"Register Account", WS_SYSMENU | WS_CAPTION | WS_OVERLAPPED, CW_USEDEFAULT, CW_USEDEFAULT, 350, 200, NULL, NULL, hInstance, NULL);
ShowWindow(hLoginWindow, iCmdShow);
UpdateWindow(hLoginWindow);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
Это WndProc
из RegisterClassWindow
:
LRESULT CALLBACK RegisterWndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam) {
switch (uMessage)
{
case WM_CREATE: {
break;
}
case WM_DESTROY:{
PostQuitMessage(0);
break;
}
default:{
DefWindowProc(hWnd, uMessage, wParam, lParam);
}
}
return 0;
}
Задача ещё не решена.
Других решений пока нет …