Mission1: Win32アプリケーションを作成する。


ここではまずVisualC++ を使って、Win32アプリケーションの作成をやってみる。


【ステップ1】

 VisualC++を立ち上げる。
 説明は省略する。とにかく立ち上げるべし。


【ステップ2】

 プロジェクトを作成する。 以下の指令に従うべし。

【ステップ2−1 プロジェクトの新規作成】
解説

左の図1のようにして、
「ファイル」メニューから新規作成を選ぶ。
すると下の図2のようなウインドウが現れる
はずだ。
図1 新規作成。


【ステップ2−2 プロジェクトの種類を選択】
解説

このウインドウで、
"Win32 Application"を選択する。
プロジェクト名はとりあえず、
mission1 としておこう。

確認できたら、
「OK」ボタンをクリック。

図2 プロジェクト種類の指定。


【ステップ2−3 自動生成するアプリケーションのタイプを選択】
解説

ここで、VisualC++ に用意してもらうアプリケーションの
タイプを選択する。 どれを選んでも大きな差は無いが、
「空のプロジェクト」より簡単で、
「標準的なHelloWorld!」アプリケーションより単純な

「単純なWin32 アプリケーション」を選んでおく。
図3 アプリケーションのタイプの指定。


【ステップ2−4 最終確認】
解説

これから生成されるアプリケーションについての
解説がなされるが、ここでする事は特に無い。

これから生成されるアプリケーションは、
説明どおり、起動すると、直後に終了するというだけの
アプリケーションである。

つまるところ、 それ以外の部分は自分で作れ!という事である。

とりあえず OK ボタンを押しておこう。
図4 データベースの設定。


【ステップ3】

 実行すると直後に終了する・・・というのではお話にならないので。
 それ以外の部分を作って行く。

【ステップ3−1 ソースファイルの表示@】
解説

VisualC++の画面の中に、左のような部分があると思う。
この部分をワークスペースというが、ここから作業を開始する。

まず、下@の部分(FileViewタブ)をクリックする。 そうすると、左のようなリスト形式の表示となる。

次に、Amission1 ファイルの左側の + マークをクリック。
次に、BSource Files の左側の + マークをクリック。

最後にその中のmission1.cpp をダブルクリックしてください。
図4 ワークスペース。


【ステップ3−2 ソースファイルの表示A】
解説

すると、左のようなプログラムが表示される。
WinMain という関数は、ANSI C でいう所のmain 関数 にあたるのだが、なるほどこれは何もしていない。

プログラム全体をまるごと、リスト2の様に書き換える。
リスト1 変更前。


【リスト2 変更後】


#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    = "mission1";
    wcex.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);
    RegisterClassEx(&wcex);

    HWND hWnd;
    hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,wcex.lpszClassName,"Mission1",
                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 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;
}

これは解説が必要だろう。解説は、こちら

【ステップ4】

 プロジェクトのビルドと実行を行う。
 つまり、VisualC++ にプログラムを生成させ、実行して動作を確認する
 のである。

 以下の指令に従うべし。

「F・5キーを押す」

すると、以下のような確認画面が表示されるので、すかさず、「OK」ボタンを押す。




すると、しばらくして下のような画面が表示されたはずだ。



これで、Mission1 は終了。
ユーザーインターフェイスにメニューが無いのは少々問題な気もするが、 ゲームならまぁ良いのではないだろうか。

これはこれでWin32アプリケーションなので、とりあえず完成です。

動いたのが確認できたら、Alt キーを押しながら、F・4 キーを押して終了させる事。



戻る