MDI サンプル : ドキュメント/ビュー アーキテクチャを使用しない MDI
更新 : 2007 年 11 月
MDI サンプルでは、ドキュメント/ビュー アーキテクチャを使用せずに、MFC のマルチ ドキュメント インターフェイス (MDI: Multiple-Document Interface) サポートを使用します。
MDI のほかのサンプルについては、MDIDOCVW を参照してください。
また、MDI では、Microsoft Windows タイマ、CColorDialog、CBitmap、およびウィンドウの既定のカーソルの変更についても示します。
セキュリティに関するメモ : |
---|
このサンプル コードは概念を示す目的で提供されているものです。必ずしも最も安全なコーディング手法に従っているわけではないので、アプリケーションまたは Web サイトでは使用しないでください。Microsoft は、サンプル コードが意図しない目的で使用された場合に、付随的または間接的な損害について責任を負いません。 |
サンプルとそのインストール手順を取得するには
Visual Studio で、[ヘルプ] メニューの [サンプル] をクリックします。
詳細については、「サンプル ファイルの格納場所」を参照してください。
使用できるサンプルの最新バージョンと完全な一覧については、オンラインの Visual Studio 2008 Samples のページを参照してください。
サンプルは、コンピュータのハード ディスク上にもあります。既定では、サンプルおよび Readme ファイルは、\Program Files\Visual Studio 9.0\Samples\ の下のフォルダにコピーされます。Visual Studio Express Edition の場合、すべてのサンプルはオンライン上にあります。
サンプルのビルドと実行
MDI サンプルをビルドおよび実行するには
ソリューション mdi.sln を開きます。
[ビルド] メニューの [ビルド] をクリックします。
[デバッグ] メニューの [デバッグなしで開始] をクリックします。
MDI サンプル アプリケーションには、2 種類の MDI 子ウィンドウを持つ親ウィンドウがあります。子ウィンドウのうち、[Bounce] ウィンドウは、はずむボールを表示します。[Hello] ウィンドウは、"Hello, World!" というテキストを表示します。なお、それぞれのウィンドウの複数のインスタンスを作成できます。
[File] メニューの [New Bounce] または [New Hello] をクリックして、新しい MDI 子ウィンドウを作成します。両方の MDI 子ウィンドウは、ウィンドウがアクティブなときに表示するメニューを決定します。両方のウィンドウには [Color] メニューがあります。このメニューで色を選択すると、はずむボールや Hello テキストの色が更新されます。[Custom] を選択すると、色のダイアログ ボックスが表示されます。このダイアログ ボックスでは、独自の色を選択できます。
[Bounce] ウィンドウには [Speed] メニューもあります。ここでは、画面上で動くボールの速度を選択できます。
[Bounce] ウィンドウを最小化した場合、静的なアイコンは表示されません。代わりに、小さなボールがアイコン内ではずみます。一方、[Hello] ウィンドウのアイコンは通常のアイコンになります。
ドキュメントやビューのない MDI
アプリケーション ウィザードで生成された MDI アプリケーションとは異なり、このサンプル アプリケーションは、ドキュメントやビューに対するフレームワークのサポートを使用しません。つまり、サンプルではドキュメント テンプレートを使用せず、アプリケーションの InitInstance は AddDocTemplate を呼び出しません。
それでも、このアプリケーションはフレームワークの MDI サポートを十分に活用しています。CMainFrame は CMDIFrameWnd から派生します。CBounceWnd および CHelloWnd は CMDIChildWnd から派生します。[Tile] などの [Window] メニューのコマンドは、CMDIFrameWnd でのフレームワークの既定の実装によって処理されます。
CBounceWnd と CHelloWnd は両方とも Create をオーバーライドしていますが、フレームワークの MDI サポートを利用するためにオーバーライドする必要はありません。Create のオーバーライドでは、ウィンドウの既定のカーソルとアイコンを変更する方法を示しています。ウィンドウの既定のカーソルまたはアイコンを変更するには、AFXRegisterWndClass を呼び出して新しい WNDCLASS を登録し、Create の呼び出しで WNDCLASS の名前を渡す必要があります。
キーワード
このサンプルでは、次のキーワードを使用します。
AfxGetInstanceHandle; AfxRegisterWndClass; CBitmap::CreateCompatibleBitmap; CCmdUI::SetCheck; CColorDialog::DoModal; CColorDialog::GetColor; CDC::BitBlt; CDC::CreateCompatibleDC; CDC::DeleteDC; CDC::DrawText; CDC::Ellipse; CDC::FillRect; CDC::GetDeviceCaps; CDC::SelectObject; CDC::SetBkColor; CDC::SetTextColor; CFrameWnd::LoadFrame; CFrameWnd::rectDefault; CGdiObject::DeleteObject; CMDIChildWnd::Create; CMenu::LoadMenu; CWinApp::InitInstance; CWnd::DestroyWindow; CWnd::GetClientRect; CWnd::GetCurrentMessage; CWnd::GetDC; CWnd::Invalidate; CWnd::KillTimer; CWnd::MessageBox; CWnd::OnCreate; CWnd::OnPaint; CWnd::OnSize; CWnd::OnTimer; CWnd::ReleaseDC; CWnd::SetTimer; CWnd::ShowWindow; CWnd::UpdateWindow; GetSysColor; LOWORD; LoadCursor; LoadIcon; MAKEINTRESOURCE; RGB; max; min
メモ : |
---|
このサンプルを含む一部のサンプルには、Visual C++ のウィザード、ライブラリ、およびコンパイラの変更が反映されていませんが、必要なタスクを実行する方法は示されています。 |