Windows Program を作成する

CLI で、昔ながらの Windows Program を作成します。

前田稔の超初心者のプログラム入門

プログラムの説明

  1. CLI で、昔ながらの Windows Program(Win32 API) を作成します。
    CLI でコンパイルすると、一本のソースファイルだけで Windows Program を作成することが出来ます。
    構造体の初期化機能を使って、極力シンプルなソースプログラムを作成してみました。
    昔ながらの Windows Program と異なる箇所は、次の行が追加されていることだけです。
        #pragma     comment(lib, "user32.lib")
        #pragma     comment(lib, "gdi32.lib")
        
  2. C:\DATA\Cpp\BAT\ に Win.cpp を utf-8(BOM 有り)でタイプして格納して下さい。
    /*★ 最もシンプルな Windows Program です    前田 稔 ★*/
    #define     NAME    "Empty Program"
    #define     TITLE   "Empty Sample Program"
    #include    <windows.h>
    #pragma     comment(lib, "user32.lib")
    #pragma     comment(lib, "gdi32.lib")
    
    HINSTANCE   g_hInst;
    HWND        g_hWnd;
    
    // Function Prototype
    LRESULT  CALLBACK   WndProc(HWND, UINT, WPARAM, LPARAM);
    int      APIENTRY   WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
    
    //★ CALLBACK 関数
    LRESULT  CALLBACK  WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
    {   PAINTSTRUCT ps;
        HDC         hdc;
    
        //渡された message から、イベントの種類を解析する
        switch(msg)
        {   case WM_PAINT:
                hdc= BeginPaint (hWnd, &ps);
                TextOut(hdc, 40, 70, "Hello C++/CLI Windows!", 22);
                EndPaint(hWnd, &ps);
                break;
            case WM_DESTROY:
                PostQuitMessage(0);
                return 0L;
        }
        //デフォルトの処理
        return  DefWindowProc(hWnd,msg,wParam,lParam);
    }
    
    //★ Windows Main 関数
    int APIENTRY  WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int nCmdShow)
    {   MSG         msg;
    
        g_hInst= hInst;
        WNDCLASS wc = { CS_CLASSDC,WndProc,0L,0L,hInst,NULL,LoadCursor(NULL,IDC_ARROW),
                        (HBRUSH)GetStockObject(WHITE_BRUSH),NULL,NAME };
        if (RegisterClass(&wc)==0)    return FALSE;
    
        g_hWnd= CreateWindow(NAME,TITLE,WS_OVERLAPPEDWINDOW,
                CW_USEDEFAULT,CW_USEDEFAULT,400,200,
                NULL,NULL,hInst,NULL);
        if (!g_hWnd)  return FALSE;
    
        ShowWindow(g_hWnd,SW_SHOWDEFAULT);
        UpdateWindow(g_hWnd);
        SetFocus(g_hWnd);
        while (GetMessage(&msg,NULL,0,0))
        {   TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        return S_OK;        //return 0
    }
    
  3. スタートメニューから[すべてのプログラム][Visual C++ 2005 Express Edition][Visual Studio Tools] [Visual Studio 2005 コマンド プロンプト] から起動します。
  4. 次のコマンドをタイプして下さい。
    空のウインドウが表示されます。
    C:\Users\maeda>CD C:\DATA\Cpp\BAT
    C:\DATA\Cpp\BAT>CL Win.cpp
    C:\DATA\Cpp\BAT>Win.exe
    

超初心者のプログラム入門(C/C++)