Dialog Box を表示する

ゲームの進行を管理する Dialog Box を表示します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの作成

  1. [プロジェクト][リソースの追加][Dialog][新規作成] でページ先頭の画像を参考にして DialogBox を作成して下さい。
    キャプションとIDを次のように設定して下さい。
    BOX ID キャプション
    DialogBox IDD_DIALOG1 三山くずし
    ScroolBar IDD_SCROLLBAR1
    Button IDC_START 開始
    EditControl IDC_WIN
    EditControl IDC_LOSE
    Button IDC_RULE 説明
    Button IDC_END 終了
  2. このままでは Dialog Box は画面の左上(0,0 の位置)に表示されます。
    この位置ではゲームの邪魔になるので、画面右上に表示されるように設定します。
    Dialog Box を右クリックしてプロパティを表示して下さい。
    X座標(X): と Y座標(Y): を画面右上(320,0 の位置?)に設定します。
  3. Miyama.cpp に MyDlgProc() の宣言を追加して下さい。
          LRESULT CALLBACK    MyDlgProc(HWND, UINT, WPARAM, LPARAM);
        
  4. InitInstance() に Dialog Box を表示するコードを追加して下さい。
        BOOL InitInstance( HINSTANCE hInstance, int nCmdShow )
        {
            HWND hWnd;
                  :
                  :
            App->hDlg = CreateDialog(hInst,MAKEINTRESOURCE(IDD_DIALOG1),
                                     App->hParent,(DLGPROC)MyDlgProc);
            if (App->hDlg == NULL)   return FALSE;
    
            ShowWindow(App->hDlg,SW_SHOW);       //Dialog を表示
            ShowWindow( hWnd, nCmdShow );
            UpdateWindow( hWnd );
            return TRUE;
        }
        
  5. Miyama.cpp の最後に MyDlgProc() を追加して下さい。
    今回は IDC_END と WM_CLOSE: のソースコードだけを記述しています。
        //★ DialogBox の CALLBACK 関数
        LRESULT CALLBACK MyDlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
        {
            switch(msg)
            {   case WM_COMMAND:
                    switch(LOWORD(wp))
                    {   case IDC_END:       //終了  
                            PostMessage(hDlg,WM_CLOSE,0,0);
                            return TRUE;
                    }
                    break;
                case WM_CLOSE:
                    EndDialog(hDlg,TRUE);
                    PostQuitMessage(0);
                    break;
            }
            return FALSE;
        }
        
  6. ビルドに続いて実行を行うと、ゲームウインドウの上に DialogBox が表示されます。
    DialogBox はドラッグして移動することができます。
    [終了ボタン]をクリックするとゲームが終了します。

[Next Chapter ↓] Dialog Box に対戦成績を表示する
[Previous Chapter ↑] 勝敗判定とゲームの繰り返し

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