2010年01月20日

Windows API でウィンドウを表示するだけのプログラム-(Windows, C/C++)

OS:windows xp
言語:C/C++

WindowsAPIとC言語(C++)を使って、ウィンドウを表示するプログラム。ウィンドウを表示するだけで、何もしない。

#include <windows.h>

#define WNDCLASSNAME TEXT("SampleClass")

LRESULT CALLBACK WindowProc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp )
{
    switch (msg) {
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
    }
    return DefWindowProc( hWnd, msg, wp, lp );
}

int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, PSTR lpCmdLine, int nCmdShow )
{
    HWND hWnd;
    WNDCLASS wc;
    MSG msg;

    wc.style         = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc   = WindowProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInst;
    wc.hIcon         = LoadIcon( NULL, IDI_APPLICATION );
    wc.hCursor       = LoadCursor( NULL, IDC_ARROW );
    wc.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH );
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = WNDCLASSNAME;

    if ( !RegisterClass(&wc) ) {
        return 0;
    }

    hWnd = CreateWindow(
        WNDCLASSNAME,
        TEXT("SampleWindow"),
        WS_OVERLAPPEDWINDOW | WS_VISIBLE,
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
        NULL,
        NULL,
        hInst,
        NULL
        );

    if ( hWnd == NULL ) {
        return 0;
    }

    while ( GetMessage( &msg, NULL, 0, 0 ) > 0 ) {
        DispatchMessage(&msg);
    }

    return (int)msg.wParam;
}