С ++ открыть окно

Я новичок в программировании на С ++. Когда я компилирую этот код, он не выдает никакой ошибки, но пока он все еще работает, я не вижу никакого окна. Я скопировал этот код из книги в свой визуальный С ++. Что я делаю неправильно. Спасибо за все

// How to print text in Win32 C/C++
// Auther: -LeetGamer-

#include <Windows.h>
#include <WindowsX.h>

LRESULT CALLBACK WindowProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX ps;
    HWND hWnd;

    ZeroMemory(&ps,sizeof(WNDCLASSEX));

    ps.cbSize=sizeof(WNDCLASSEX);
    ps.style=CS_HREDRAW | CS_VREDRAW ;
    ps.lpfnWndProc=(WNDPROC)WindowProc;
    ps.hInstance=hInstance;
    ps.hCursor=LoadCursor(NULL,IDC_ARROW);
    ps.hbrBackground=(HBRUSH)COLOR_WINDOW;
    ps.lpszClassName="asdasdasd";

    RegisterClassEx(&ps);

    hWnd=CreateWindowEx(NULL,"ASDASDDA","dsfsdfsdf",WS_OVERLAPPEDWINDOW,300,300,500,400,NULL,NULL,hInstance,NULL);

    ShowWindow(hWnd,nCmdShow);

    MSG mesaj;

    while(GetMessage(&mesaj,NULL,0,0))
    {
        TranslateMessage(&mesaj);
        DispatchMessage(&mesaj);
    }


    return mesaj.wParam;
}

LRESULT CALLBACK WindowProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
    switch(message)
    {
        case WM_DESTROY:
            {
                PostQuitMessage(0);
                return 0;
            }
            break;

    }

    return DefWindowProc(hWnd,message,wParam,lParam);
}

1 ответ

Имя класса должно быть одинаковым в RegisterClassEx а также CreateWindowEx

использовать:

const char * pszClassName = "MyClassName";

[...]

ps.lpszClassName = pszClassName;

[...]

hWnd = CreateWindowEx( NULL, pszClassName, [...]

Кроме того, возьмите в привычку проверять результаты API. Вот, CreateWindowEx возвращенный NULL,

Другие вопросы по тегам