次の方法で共有


MDI サンプル : ドキュメント/ビュー アーキテクチャを使用しない MDI

更新 : 2007 年 11 月

MDI サンプルでは、ドキュメント/ビュー アーキテクチャを使用せずに、MFC のマルチ ドキュメント インターフェイス (MDI: Multiple-Document Interface) サポートを使用します。

MDI のほかのサンプルについては、MDIDOCVW を参照してください。

また、MDI では、Microsoft Windows タイマ、CColorDialogCBitmap、およびウィンドウの既定のカーソルの変更についても示します。

ahd07sdd.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

このサンプル コードは概念を示す目的で提供されているものです。必ずしも最も安全なコーディング手法に従っているわけではないので、アプリケーションまたは Web サイトでは使用しないでください。Microsoft は、サンプル コードが意図しない目的で使用された場合に、付随的または間接的な損害について責任を負いません。

サンプルとそのインストール手順を取得するには

  • Visual Studio で、[ヘルプ] メニューの [サンプル] をクリックします。

    詳細については、「サンプル ファイルの格納場所」を参照してください。

  • 使用できるサンプルの最新バージョンと完全な一覧については、オンラインの Visual Studio 2008 Samples のページを参照してください。

  • サンプルは、コンピュータのハード ディスク上にもあります。既定では、サンプルおよび Readme ファイルは、\Program Files\Visual Studio 9.0\Samples\ の下のフォルダにコピーされます。Visual Studio Express Edition の場合、すべてのサンプルはオンライン上にあります。

サンプルのビルドと実行

MDI サンプルをビルドおよび実行するには

  1. ソリューション mdi.sln を開きます。

  2. [ビルド] メニューの [ビルド] をクリックします。

  3. [デバッグ] メニューの [デバッグなしで開始] をクリックします。

MDI サンプル アプリケーションには、2 種類の MDI 子ウィンドウを持つ親ウィンドウがあります。子ウィンドウのうち、[Bounce] ウィンドウは、はずむボールを表示します。[Hello] ウィンドウは、"Hello, World!" というテキストを表示します。なお、それぞれのウィンドウの複数のインスタンスを作成できます。

[File] メニューの [New Bounce] または [New Hello] をクリックして、新しい MDI 子ウィンドウを作成します。両方の MDI 子ウィンドウは、ウィンドウがアクティブなときに表示するメニューを決定します。両方のウィンドウには [Color] メニューがあります。このメニューで色を選択すると、はずむボールや Hello テキストの色が更新されます。[Custom] を選択すると、色のダイアログ ボックスが表示されます。このダイアログ ボックスでは、独自の色を選択できます。

[Bounce] ウィンドウには [Speed] メニューもあります。ここでは、画面上で動くボールの速度を選択できます。

[Bounce] ウィンドウを最小化した場合、静的なアイコンは表示されません。代わりに、小さなボールがアイコン内ではずみます。一方、[Hello] ウィンドウのアイコンは通常のアイコンになります。

ドキュメントやビューのない MDI

アプリケーション ウィザードで生成された MDI アプリケーションとは異なり、このサンプル アプリケーションは、ドキュメントやビューに対するフレームワークのサポートを使用しません。つまり、サンプルではドキュメント テンプレートを使用せず、アプリケーションの InitInstanceAddDocTemplate を呼び出しません。

それでも、このアプリケーションはフレームワークの MDI サポートを十分に活用しています。CMainFrameCMDIFrameWnd から派生します。CBounceWnd および CHelloWndCMDIChildWnd から派生します。[Tile] などの [Window] メニューのコマンドは、CMDIFrameWnd でのフレームワークの既定の実装によって処理されます。

CBounceWndCHelloWnd は両方とも 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

ahd07sdd.alert_note(ja-jp,VS.90).gifメモ :

このサンプルを含む一部のサンプルには、Visual C++ のウィザード、ライブラリ、およびコンパイラの変更が反映されていませんが、必要なタスクを実行する方法は示されています。

参照

その他の技術情報

MFC サンプル