CXXXDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); m_pImage = new CImage(); m_pImage->Load(pDoc->GetFileName());
CXXXApp::OnFileOpen() → OpenDocumentFile(newName) ファイルのオープン CXXXDoc::Serialize() [→ UpdateAllViews(NULL)] ファイルの入出力 ChildFrame CXXXView::OnDraw() 表示
DirectX9用ライブラリ
winmm.lib d3d9.lib d3dx9.lib dxerr9.lib dxguid.lib
DirectX Input
dinput8.lib
デバッグ用ライブラリ
MagaDbg.h
MagaDbg.lib
コンパイラ定義指定 MAGADGB
・リソースのメニューを作る.(ID)
「リソースビュウ」の「Menu」からメニュー用のCXXXAppのメッセージハンドラを登録.
・「表示」→「クラスウィザード」または,「リソースビュウ」の「Menu」の右マウス
ボタンで「クラスウィザード」を選び,CXXXAppにメッセージ処理用関数を登録する.
(例:ON_COMMAND(ID_FILE_WIZ3D, OnFileWiz3d))
処理関数のあるファイル内では Resource.h をインクルード
・新しいウィンドウを作る場合は,CXXXAppでテンプレート用変数を用意.
・新しいクラスの作成
ワークスペースの「クラス表示」から「クラスの新規作成」を選び,ドキュメントクラスと ビュウクラスを生成(基本クラスを指定する)
基本クラスは CDocument, CView などを選ぶ.
または 「クラスウィザード」を選び,「クラスの追加」→「新規」で新しいクラスを作る.
・クラスを ExClass からの派生に変更
・CXXXAppのテンプレート定義とメッセージハンドラの関数(例:OnFileWiz3d())の内容を書く.
・ドキュメントクラスとビュウクラスの内容を書く
・ドキュメントクラスに仮想関数 OnOpenDocument() または OnNewDocument() を書く
OnOpenDocument() はクラスウィザードで作成
CExDocument // データを既に持っている場合.hasViewData==TRUE doc.OnNewDocument() : MakeViewData(); // ファイルをオープンしてデータを読み込む. doc.OnOpenDocument() : ReadDataFile() → MakeViewData()
ExMSGraph<Word> msGraph; // 読み込みデータ(既にもっているデータ).ReadDataFile() で作る. ExCmnHead cmnHead; // 表示用の View に渡すデータ.MakeviewData() で作る.
・ビュウクラスに仮想関数 OnInitialUpdate() を書く.
OnInitialUpdate() はクラスウィザードで作成
処理の流れ:
例:ID_FILE_WIZ3D → OnFileWiz3d() → CreateDocFrmView() → initialDocView() → doc.OnNewDocument() or doc.OnOpenDocument()
→ view.OnInitialUpdate() → frame.ShowWindow() → view.OnDraw() → frame.SetFocus() → タイマー作動 → CreateDocFrmViewError() → ループバック
イベント処理の追加
クラスビュー → クラスを右クリック → プロパティ → メッセージボタン
アプリケーションクラス
アプリケーション用のドキュメントテンプレートを登録 CreateDocFrmView() // Doc, Viewクラスの初期化 rslt = initialDocView(pdoc, pviw, fname); doc->OnNewDocument() or doc->OnOpenDocument(fname) view->OnInitialUpdate()
// Viewクラスの表示 view->ShowWindow(m_nCmdShow);
必要ならタイマースタート or 書き換え用 OnDraw()が随時呼ばれる