CView クラス
更新 : 2007 年 11 月
ユーザーが定義するビュークラスの基本機能が用意されています。
class AFX_NOVTABLE CView : public CWnd
解説
ビューはドキュメントに関連付けられ、ドキュメントとユーザーの仲立ちとして動作します。ビューは画面またはプリンタ上でドキュメントのイメージを描画して、入力をドキュメント上の操作へと変換します。
ビューは、フレーム ウィンドウの子ウィンドウとなります。複数のビューは、分割ウィンドウの場合のようにフレーム ウィンドウを分割して使用できます。ビュー クラス、フレーム ウィンドウ クラス、ドキュメント クラスの間の関係は、CDocTemplate オブジェクトによって成り立っています。新しいウィンドウを開いたとき、または既存のウィンドウを分割したとき、フレームワークは新しいビューを作成してドキュメントをビューに関連付けます。
ビューは 1 つのドキュメントにだけ関連付けられますが、ドキュメントには一度に複数のビューを関連付けることができます。たとえば、ドキュメントを分割ウィンドウに表示したときや、MDI (マルチ ドキュメント インターフェイス) アプリケーションで複数の子ウィンドウにドキュメントを表示したときです。アプリケーションでは、ドキュメントに指定された型で、複数の型のビューをサポートできます。たとえば、ワード プロセッサのプログラムで、ドキュメントの完全なテキストのビューと文節の先頭だけを見せる概略のビューをともに使用するようなときです。このような異なった型のビューは、分割されたフレーム ウィンドウまたは分割ウィンドウを使って 1 つのフレーム ウィンドウの分割されたペインに置くことができます。
ビューはメニュー、ツール バー、またはスクロール バーでのコマンドはもちろん、キーボード入力、マウス入力、またはドラッグ アンド ドロップ入力のような異なった種類の入力を処理できます。ビューは、そのフレーム ウィンドウによって転送されたコマンドを受け取ります。ビューが渡されたコマンドを処理しない場合は、コマンドはビューに関連付けられたドキュメントに送られます。すべてのコマンド ターゲットと同じように、ビューはメッセージをメッセージ マップを使って処理します。
ビューはドキュメントのデータの表示や変更を行いますが、格納は行いません。ドキュメントは、ビューに対して必要なデータの詳細を提供します。ビューは、ドキュメントのデータ メンバに直接アクセスできます。また、ドキュメント クラスのメンバ関数をビュー クラスで呼び出せるようにすることもできます。
ドキュメントのデータを変更するときは、通常、ビューはドキュメントの CDocument::UpdateAllViews 関数を呼び出します。この関数は、それぞれに OnUpdate メンバ関数を呼び出して、ほかのすべてのビューに通知します。OnUpdate の既定の実装は、ビューのクライアント領域全体を無効化します。ドキュメントの変更部分に割り当てられたクライアント領域だけを無効化するために、この関数をオーバーライドすることもできます。
CView を使用するためには、CView からクラスを派生し、OnDraw メンバ関数を実装して画面に表示します。また、印刷や印刷プレビューを実行するために OnDraw を使用することもできます。フレームワークは、ドキュメントの印刷やプレビューのために印刷ループを行います。
ビューは CWnd::OnHScroll メンバ関数や CWnd::OnVScroll メンバ関数を使ってスクロール バー メッセージを処理します。これらの関数で、スクロール バー メッセージの処理を実装できます。また、CView の派生クラス ScrollView を使ってスクロールを処理することもできます。
CScrollView に加えて、Microsoft Foundation Class ライブラリには、CView から派生した 9 つのクラスが用意されています。
CCtrlView ツリー コントロール、リスト コントロール、およびリッチ エディット コントロールを使用したドキュメント / ビュー アーキテクチャを利用できるビューです。
CDaoRecordView データベースのレコードをダイアログ ボックス コントロールに表示できるビューです。
CEditView 簡単なマルチライン テキスト エディタを提供するビューです。ドキュメント上のビューとしてはもちろん、ダイアログ ボックスのコントロールとして CEditView を使うことができます。
CFormView ダイアログ ボックス コントロールを持つスクロール可能なビューで、ダイアログ テンプレート リソースをベースにしています。
CListView リスト コントロールを使用したドキュメント/ビュー アーキテクチャを利用できるビューです。
CRecordView データベースのレコードをダイアログ ボックス コントロールに表示できるビューです。
CRichEditView リッチ エディット コントロールを使用したドキュメント / ビュー アーキテクチャを利用できるビューです。
CScrollView スクロール機能を自動的に提供するビューです。
CTreeView ツリー コントロールを使用したドキュメント/ビュー アーキテクチャを利用できるビューです。
また、CView クラスは CPreviewView と名付けられた派生クラスも持っています。このクラスはフレームワークによって使われ、印刷プレビューを実行します。このクラスは、ツール バー、片面あるいは見開きのプレビュー、プレビュー イメージの拡大などの印刷プレビュー固有の機能をサポートしています。印刷プレビューの独自のインターフェイスを実装する (たとえば、印刷プレビュー モードで編集をサポートする場合) ことがない場合、CPreviewView のメンバ関数を呼び出したりオーバーライドする必要はありません。CView の使い方の詳細については、「ドキュメント/ビュー アーキテクチャ」および「印刷」を参照してください。さらに印刷プレビューのカスタマイズの詳細については、「テクニカル ノート 30: 印刷と印刷プレビューのカスタマイズ」を参照してください。
必要条件
ヘッダー : afxwin.h
スマート デバイス開発者のためのメモ
スマート デバイス バージョンの CView クラス では、次の印刷メソッドはサポートされません。
参照
処理手順
MDIDOCVW サンプル : ドキュメント/ビュー アーキテクチャを使用する MDI