ファイル選択メニューを設定する

ファイルメニューから選択された X FILE を描画します。
メニューの作成も操作法が少し変わったようなので改めて説明します。

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

プロジェクトの作成

  1. ファイルメニューから選択された X FILE を描画するソースプログラム Main.cpp です。
    ファイル名 説明
    Main.cpp メニュー選択で X FILE を入力
  2. 空のプロジェクトを作成して Main.cpp をプロジェクトに取り込んで下さい。
    プロジェクトの作成は ティーポットを描画する を参照して下さい。
    文字セットに[マルチバイト文字セットを使用する]を選択して下さい。
  3. ファイル選択のメニューを設定します。
    1. [プロジェクト][新しい項目の追加][リソース][リソースファイル(.rc)]を選択します。
      ファイル名に resource.rc とタイプして追加ボタンをクリックします。
    2. リソースビューで resource.rc を右クリックして、[リソースの追加]を選びます。
      リソースの種類から[Menu]を選択して新規作成ボタンをクリックします。
    3. 親のメニュー(上段左端)に "ファイル(&F)" をタイプします。
      子のメニューに "開く(&O)" をタイプします。
      その下の子のメニューに "終了(&X)" をタイプします。
    4. 追加されたメニューを右クリックして[IDの編集]をチェックします。
      キャプションの前に[ID]が表示されるので編集します。
      既定値をそのまま使う事もできますが、今回は Main.cpp の ID に合わせて下さい。
      ・ID_OPEN: でファイルを入力します。
      ・IDM_EXIT: でプログラムを終了します。

  4. プロジェクトのフォルダーに resource.rc と resource.h が追加されます。
    Main.cpp の先頭で resource.h を #include して下さい。
    #include "resource.h"
  5. ファイル選択のメニューから呼び出されたときの処理です。
    GetOpenFile() で X-FILE を選択します。
    SAFE_DELETE(xfile); で、それまで描画していたメッシュを解放します。
    new X_FILE(g_pDEV,szFile); で新しいメッシュをオープンします。
    移動と回転をリセットして、InvalidateRect() で描画します。
                    case ID_OPEN:
                        if (GetOpenFile()==TRUE)
                        {
                            SAFE_DELETE(xfile);
                            xfile= new X_FILE(g_pDEV,szFile);
                            Rot.x=Rot.y=Rot.z= 0.0f;
                            Mov.x=Mov.y=Mov.z= 0.0f;
                            InvalidateRect(hWnd,NULL,TRUE);
                        }
                        return 0L;
    
  6. ビルドから実行を選ぶと、コンパイルに続いて実行が行われます。
    Mesh File を入力する Object Class は Main.cpp に直接組み込まれています。
    //★ X_FILE Object Class Program
    // Constructor
    X_FILE::X_FILE(LPDIRECT3DDEVICE9 dev, LPSTR model)
    {   LPD3DXBUFFER pD3DXMtrlBuffer;
          ・
          ・
    
  7. キーの操作でモデルの移動と回転を行うことが出来ます。
    キー 説明
    ESCAPE: 終了
    LEFT: Rot.Y++
    RIGHT: Rot.Y--
    UP: Rot.X++
    DOWN: Rot.X--
    'J': Rot.Z++
    'L': Rot.Z--
    'A': Mov.X--
    'D': Mov.X++
    'W': Mov.Y++
    'X': Mov.Y--
    'I': Mov.Z++
    'M': Mov.Z--

超初心者のプログラム入門(DirectX9 game program)

超初心者のプログラム入門(DirectX10 game program)