VIEWEX サンプル : マルチ ビュー、スクロール ビュー、および分割ウィンドウ
更新 : 2007 年 11 月
VIEWEX サンプルでは、次の内容を示します。
静的な分割ウィンドウ。ペインの順序と番号は固定です。通常、ペインのビュー クラスは異なります。
フォーム ビュー (CFormView)。同じドキュメントのほかのビューと一致します。
ダイアログ データ エクスチェンジ (DDX: Dialog Data Exchange)。特に、オプション グループ ボタンのデータ用です。
VIEWEX のドキュメントは単純です。データは文字列と色で構成されます。
セキュリティに関するメモ : |
---|
このサンプル コードは概念を示す目的で提供されているものです。必ずしも最も安全なコーディング手法に従っているわけではないので、アプリケーションまたは Web サイトでは使用しないでください。Microsoft は、サンプル コードが意図しない目的で使用された場合に、付随的または間接的な損害について責任を負いません。 |
サンプルとそのインストール手順を取得するには
Visual Studio で、[ヘルプ] メニューの [サンプル] をクリックします。
詳細については、「サンプル ファイルの格納場所」を参照してください。
使用できるサンプルの最新バージョンと完全な一覧については、オンラインの Visual Studio 2008 Samples のページを参照してください。
サンプルは、コンピュータのハード ディスク上にもあります。既定では、サンプルおよび Readme ファイルは、\Program Files\Visual Studio 9.0\Samples\ の下のフォルダにコピーされます。Visual Studio Express Edition の場合、すべてのサンプルはオンライン上にあります。
サンプルのビルドと実行
VIEWEX サンプルをビルドおよび実行するには
ソリューション viewex.sln を開きます。
[ビルド] メニューの [ビルド] をクリックします。
[デバッグ] メニューの [デバッグなしで開始] をクリックします。
最初に VIEWEX を実行すると、[新規] ダイアログ ボックスが表示されます。ここでは、表示されるドキュメント ウィンドウの種類を選択します。
[Simple Text] は、ウィンドウの中央に現在の色を使用して文字列を表示します。
[Input Form View] には、フォーム (CFormView) が用意されています。このフォームでは、エディット コントロール内の文字列を変更したり、オプション ボタン グループのボタンをクリックして色を変更したりできます。
[Splitter Frame with both] には、文字列表示ビューと入力フォームがあり、この 2 つのペインが横に並ぶ分割ウィンドウが表示されます。入力フォームで文字列 (文字単位) または色を変更すると、変更内容は、自動的に文字列表示ビューに反映されます。
[Three-way Splitter Frame] は、分割ウィンドウの 1 つのペインに入力フォームを表示します。もう 1 つのペインは、分割バーによって 2 つのサブペインに分かれています。上のサブペインには文字列表示ビュー、下のサブペインにはカラー ビューがそれぞれ表示されます。カラー ビューは全体が現在の色で塗りつぶされています。
入力フォームのエディット コントロールを使用して、[Edit] メニューの [Change Data] をクリックすると、文字列を変更できます。
また、同時に複数のドキュメントを表示することもできます。ただし、例を簡単にするために、ドキュメントを保存したり再び開いたりすることはできません。また、上に示した複数のウィンドウに同じドキュメントを表示することもできません。
静的な分割ウィンドウ
VIEWEX では、MDI 子ウィンドウが OnCreateClient をオーバーライドすることによってクライアント領域に 2 分割ウィンドウを作成します。3 分割の場合、VIEWEX では、2 分割ウィンドウの右側のペインをさらに 2 分割します。
VIEWEX は、動的な分割ウィンドウの代わりに静的な分割ウィンドウを作成するときに、CSplitterWnd::Create ではなく CSplitterWnd::CreateStatic を呼び出します。VIEWEX の分割ウィンドウの各ペインは、ビュー クラスが異なります。VIEWEX は CSplitterWnd::CreateView を呼び出して、各ペインの CView の派生クラスを指定します。最初のペインの場合、VIEWEX はドキュメント テンプレート オブジェクトで固有のビュー クラスを使用します。これは、CCreateContext の m_pNewViewClass メンバで OnCreateClient に渡されます。その他のペインの場合、VIEWEX はビューの RUNTIME_CLASS を指定します。
フォーム ビュー
CInputView では、フォーム ビューとほかのビューとの同期を示しています。ユーザーがいずれかのフィールドにデータを入力すると、変更内容がすぐにほかのビューに反映されます。このように同期化するために、CInputView では、すべてのコントロールの ON_EN_CHANGE と ON_BN_CLICKED を OnDataChange メッセージ ハンドラに対応付けています。OnDataChange は CView::UpdateData を呼び出して、画面のデータを CInputView のメンバ変数に転送し、次にドキュメントの UpdateAllViews を呼び出して変更内容をその他のビューに通知します。
ダイアログ データ エクスチェンジ (DDX)
VIEWEX の CInputView では、オプション グループ ボタン データのダイアログ データ エクスチェンジ (DDX: Dialog Data Exchange) を示しています。Iputvw.h では、オプション グループの最初のボタンだけが CInputView::DoDataExchange のメンバ変数 m_iColor に割り当てられています。m_iColor は、選択されているオプション ボタンを表す、0 から始まる序数値 (int) です。
キーワード
このサンプルでは、次のキーワードを使用します。
CDC::FillRect; CDialog::DoModal; CDocument::OnNewDocument; CDocument::UpdateAllViews; CFrameWnd::LoadFrame; CFrameWnd::OnCreateClient; CFrameWnd::SetActiveView; CObject::Serialize; CRect::Height; CRect::Width; CSplitterWnd::CreateStatic; CSplitterWnd::CreateView; CSplitterWnd::GetPane; CSplitterWnd::IdFromRowCol; CString::GetLength; CView::GetDocument; CView::OnActivateView; CView::OnDraw; CView::OnUpdate; CWinApp::AddDocTemplate; CWinApp::InitInstance; CWinApp::OnFileNew; CWnd::DoDataExchange; CWnd::GetClientRect; CWnd::OnMouseActivate; CWnd::ShowWindow; CWnd::UpdateData; CWnd::UpdateWindow; RGB; SetBkMode; SetTextAlign; SetTextColor; TextOut; max
メモ : |
---|
このサンプルを含む一部のサンプルには、Visual C++ のウィザード、ライブラリ、およびコンパイラの変更が反映されていませんが、必要なタスクを実行する方法は示されています。 |