试着学习winapi。做了第一个程序,必须给我一个窗口。 CMD显示但没有窗口

时间:2013-11-20 22:16:29

标签: c++ winapi

#include<windows.h>

LPSTR NazwaKlasy = "Klasa Okienka";
MSG Komunikat;

LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );

int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nShowCmd)
{
WNDCLASSEX wc;

wc.cbSize = sizeof( WNDCLASSEX );
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 );
wc.lpszMenuName = NULL;
wc.lpszClassName = NazwaKlasy;
wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION );

//tutaj kłądż okienka
HWND hwnd;
hwnd = CreateWindowEx ( WS_EX_CLIENTEDGE,NazwaKlasy,"Okienko",WS_EX_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,400,400,NULL,NULL,hInstance,NULL);

//koniec obszaru okienek

ShowWindow( hwnd, nShowCmd ); // Pokaż okienko...
UpdateWindow( hwnd );

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

return Komunikat.wParam;
}
    LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch( msg )
{
 case WM_CLOSE:
        DestroyWindow( hwnd );
     break;

 case WM_DESTROY:
        PostQuitMessage( 0 );
     break;

    default:
        return DefWindowProc( hwnd, msg, wParam, lParam );
}

return 0;
}

编辑器显示没有错误并运行程序没有任何问题,但没有窗口的迹象 我不是很有编程经验,所以它很可能是一个愚蠢的错误,我不能找到,但每个人都必须从某处开始 我认为我正确地格式化了帖子

1 个答案:

答案 0 :(得分:1)

您没有注册窗口类。您可以填写WNDCLASSEX结构,但是您忽略了调用RegisterClassEx来实际注册它。