Windows アプリケーションを生成する。


【ステップ1】

まず、Microsoft Visual Studio .net 2003 を起動します。


すると、左のような画面になるはずです。


【ステップ2】

 プロジェクトを作成する。以下の手順にそって作業して下さい。

【ステップ2−1 プロジェクトの新規作成】
解説
左図のようにして、ファイルメニューより「新規作成」の中にある、「プロジェクト」を選びます。
図2−1 新規作成。


【ステップ2−2 プロジェクトの新規作成2】
解説
すると左図のようなダイアログが表れますので、以下の手順を実行してください。
  1. プロジェクトの種類として、「VisualC++プロジェクト」を選ぶ。
  2. テンプレートとして、「Win32 プロジェクト」を選ぶ。
  3. プロジェクト名を決める(ここではGame)
  4. プロジェクトを保存する場所(フォルダ)を設定する。(ここでは D:\ に設定)
  5. OK をクリック。

図2−2 新しいプロジェクトの設定。


【ステップ2−3 プロジェクトの新規作成3】
解説
すると、左図のようなダイアログが表示されます。 ここでは「完了」をクリックしましょう。
図2−3 新しいプロジェクトの確認画面。


【ステップ2−4 コンパイル1】
解説
そうすると、左図のようになります。F5キーを押してコンパイルしてみましょう。
図2−4 コンパイル1。


【ステップ2−5 コンパイル2】
解説
すると、左図のようにダイアログボックスが出てくる事があります。
この時は、「はい(Y)」をクリックしてください。
図2−5 コンパイル2。


【ステップ2−6 コンパイル3】
解説
Windows アプリケーションができました。

ちゃんとウィンドウが出ていますね。メニューにも反応するはずです。

ただ、このプログラムは、ゲームには不要と思われる機能もいろいろ付いていますので、 次で改造します。
図2−6 いちおう完成。


【ステップ3 改造】

画面上のプログラムを全て削除して、以下のように書き換えます(コピペで充分)

#include "stdafx.h"

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

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow )
{
    WNDCLASSEX wcex;
    wcex.cbSize = sizeof(WNDCLASSEX); 
    wcex.style            = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = (WNDPROC)WndProc;
    wcex.cbClsExtra        = 0;
    wcex.cbWndExtra        = 0;
    wcex.hInstance        = hInstance;
    wcex.hIcon            = LoadIcon(NULL, MAKEINTRESOURCE(IDI_APPLICATION));
    wcex.hCursor        = LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW));
    wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName    = NULL;
    wcex.lpszClassName    = "Game";
    wcex.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);
    RegisterClassEx(&wcex);

    HWND hWnd;
    hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,wcex.lpszClassName,"Game",
                WS_VISIBLE|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX,
                CW_USEDEFAULT,0,640,480,NULL,NULL,hInstance,NULL);
    if( !hWnd )
        return FALSE;

    RECT    bounds,client;
    GetWindowRect(hWnd,&bounds);
    GetClientRect(hWnd,&client);
    MoveWindow(hWnd,bounds.left,bounds.top,
        640 * 2 - client.right,
        480 * 2 - client.bottom,
        false );

    ShowWindow( hWnd, nCmdShow );
    UpdateWindow( hWnd );

    MSG        msg;
    while(true){
        if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE)){
            if(msg.message == WM_QUIT)
                break;
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }else{
        }
    }

    return (int)msg.wParam;
}

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



ここでは、ウィンドウサイズ(ウィンドウの枠を除いた実効サイズ)を 640×480に固定しメニュー無しのウィンドウを生成しています。 プログラムの解説はこちらをクリック。

【完成】

これで一旦完成です。以下のようになりましたか?