CView クラス

ユーザーが定義するビュークラスの基本機能が用意されています。

構文

class AFX_NOVTABLE CView : public CWnd

メンバー

保護されたコンストラクター

名前 説明
CView::CView CView オブジェクトを構築します。

パブリック メソッド

名前 説明
CView::DoPreparePrinting [印刷] ダイアログ ボックスを表示し、プリンター デバイス コンテキストを作成します。 OnPreparePrinting メンバー関数をオーバーライドするときに呼び出します。
CView::GetDocument ビューに関連付けられているドキュメントを返します。
CView::IsSelected ドキュメント アイテムが選択されているかどうかをテストします。 OLE のサポートに必要です。
CView::OnDragEnter 項目が最初にビューのドラッグ アンド ドロップ領域にドラッグされたときに呼び出されます。
CView::OnDragLeave ドラッグされた項目がビューのドラッグ アンド ドロップ領域から離れると呼び出されます。
CView::OnDragOver 項目がビューのドラッグ アンド ドロップ領域にドラッグされたときに呼び出されます。
CView::OnDragScroll カーソルがウィンドウのスクロール領域にドラッグされているかどうかを判断するために呼び出されます。
CView::OnDrop 項目がビューのドラッグ アンド ドロップ領域 (既定のハンドラー) にドロップされたときに呼び出されます。
CView::OnDropEx ビューのドラッグ アンド ドロップ領域 (プライマリ ハンドラー) に項目がドロップされたときに呼び出されます。
CView::OnInitialUpdate ビューがドキュメントに最初にアタッチされた後に呼び出されます。
CView::OnPrepareDC OnDraw メンバー関数が画面表示用に呼び出される前に呼び出されるか、印刷または印刷プレビューのために OnPrint メンバー関数が呼び出されます。
CView::OnScroll OLE 項目がビューの罫線を越えてドラッグされたときに呼び出されます。
CView::OnScrollBy アクティブなインプレース OLE 項目を含むビューがスクロールされたときに呼び出されます。

保護メソッド

名前 説明
CView::OnActivateFrame ビューを含むフレーム ウィンドウがアクティブ化または非アクティブ化されたときに呼び出されます。
CView::OnActivateView ビューがアクティブになったときに呼び出されます。
CView::OnBeginPrinting 印刷ジョブの開始時に呼び出されます。オーバーライドしてグラフィックス デバイス インターフェイス (GDI) リソースを割り当てます。
CView::OnDraw 画面表示、印刷、または印刷プレビュー用にドキュメントのイメージをレンダリングするために呼び出されます。 実装が必要です。
CView::OnEndPrinting 印刷ジョブが終了したときに呼び出されます。GDI リソースの割り当てを解除するオーバーライド。
CView::OnEndPrintPreview プレビュー モードが終了したときに呼び出されます。
CView::OnPreparePrinting ドキュメントが印刷またはプレビューされる前に呼び出されます。[印刷] ダイアログ ボックスを初期化する場合はオーバーライドします。
CView::OnPrint ドキュメントのページを印刷またはプレビューするために呼び出されます。
CView::OnUpdate ドキュメントが変更されたことをビューに通知するために呼び出されます。

解説

ビューはドキュメントに添付され、ドキュメントとユーザーの間の仲介役として機能します。このビューは、ドキュメントの画像を画面またはプリンターにレンダリングし、ユーザー入力をドキュメントに対する操作として解釈します。

ビューはフレーム ウィンドウの子です。 分割ウィンドウの場合と同様に、複数のビューでフレーム ウィンドウを共有できます。 ビュー クラス、フレーム ウィンドウ クラス、ドキュメント クラスの間のリレーションシップは、 CDocTemplate オブジェクトによって確立されます。 ユーザーが新しいウィンドウを開くか、既存のウィンドウを分割すると、フレームワークによって新しいビューが作成され、ドキュメントに添付されます。

ビューは 1 つのドキュメントにのみ添付できますが、ドキュメントに複数のビューを一度にアタッチできます。たとえば、ドキュメントが分割ウィンドウに表示されている場合や、複数のドキュメント インターフェイス (MDI) アプリケーションの複数の子ウィンドウに表示される場合などです。 アプリケーションは、特定のドキュメントの種類に対してさまざまな種類のビューをサポートできます。たとえば、ワープロ プログラムでは、ドキュメントの完全なテキスト ビューと、セクション見出しのみを表示するアウトライン ビューの両方を提供できます。 分割ウィンドウを使用する場合、これらの異なる種類のビューは、個別のフレーム ウィンドウまたは単一フレーム ウィンドウの個別のペインに配置できます。

ビューは、キーボード入力、マウス入力、ドラッグ アンド ドロップによる入力、メニュー、ツールバー、スクロール バーからのコマンドなど、さまざまな種類の入力を処理する役割を担う場合があります。 ビューは、フレーム ウィンドウによって転送されるコマンドを受け取ります。 ビューが特定のコマンドを処理しない場合は、関連付けられているドキュメントにコマンドを転送します。 すべてのコマンド ターゲットと同様に、ビューはメッセージ マップを介してメッセージを処理します。

ビューは、ドキュメントのデータを表示および変更する役割を担いますが、保存は行いません。 このドキュメントでは、データに関する必要な詳細がビューに表示されます。 ビューがドキュメントのデータ メンバーに直接アクセスできるようにしたり、ビュー クラスで呼び出すメンバー関数をドキュメント クラスに提供したりできます。

ドキュメントのデータが変更されると、変更を担当するビューは通常、ドキュメントの CDocument::UpdateAllViews 関数を呼び出します。この関数は、それぞれに対して OnUpdate メンバー関数を呼び出すことによって、他のすべてのビューに通知します。 OnUpdate の既定の実装では、ビューのクライアント領域全体が無効になります。 それをオーバーライドして、ドキュメントの変更された部分にマップされるクライアント領域の領域のみを無効にできます。

CViewを使用するには、そこからクラスを派生させ、画面表示を実行する OnDraw メンバー関数を実装します。 OnDrawを使用して、印刷と印刷のプレビューを実行することもできます。 フレームワークは、文書を印刷およびプレビューするための印刷ループを処理します。

ビューは、 CWnd::OnHScroll および CWnd::OnVScroll メンバー関数を使用してスクロール バー メッセージを処理します。 これらの関数でスクロール バー メッセージ処理を実装することも、 CView 派生クラス CScrollView を使用してスクロールを処理することもできます。

CScrollViewに加えて、Microsoft Foundation クラス ライブラリには、CViewから派生した他の 9 つのクラスが用意されています。

  • CCtrlView、ドキュメントの使用を許可するビュー - ツリー、リスト、および豊富な編集コントロールを使用したビュー アーキテクチャ。

  • CDaoRecordViewダイアログ ボックス コントロールにデータベース レコードを表示するビュー。

  • CEditViewは、単純な複数行テキスト エディターを提供するビューです。 CEditView オブジェクトは、ダイアログ ボックス内のコントロールおよびドキュメントのビューとして使用できます。

  • CFormViewは、ダイアログ ボックス コントロールを含み、ダイアログ テンプレート リソースに基づくスクロール可能なビューです。

  • CListView: ドキュメントの使用を許可するビュー - リスト コントロールを使用したビュー アーキテクチャ。

  • CRecordViewダイアログ ボックス コントロールにデータベース レコードを表示するビュー。

  • CRichEditViewドキュメントの使用を許可するビュー - 豊富な編集コントロールを備えたビュー アーキテクチャ。

  • CScrollViewは、スクロールサポートを自動的に提供するビューです。

  • CTreeView:ドキュメントの使用を許可するビュー - ツリー コントロールを使用したビュー アーキテクチャ。

CView クラスには、CPreviewViewという名前の派生実装クラスもあります。これは、印刷プレビューを実行するためにフレームワークによって使用されます。 このクラスでは、ツール バー、シングル ページまたはダブルページ プレビュー、ズームなど、印刷プレビュー ウィンドウ固有の機能 、つまりプレビューされた画像を拡大する機能がサポートされます。 印刷プレビュー用に独自のインターフェイスを実装する場合 (印刷プレビュー モードでの編集をサポートする場合など) を除き、 CPreviewViewのメンバー関数を呼び出したりオーバーライドしたりする必要はありません。 CViewの使用方法の詳細については、「Document/View Architecture および Printing」を参照してください。 また、印刷プレビューのカスタマイズの詳細については、 テクニカル ノート 30 を参照してください。

継承階層

CObject

CCmdTarget

CWnd

CView

要件

ヘッダー: afxwin.h

CView::CView

CView オブジェクトを構築します。

CView();

解説

フレームワークは、新しいフレーム ウィンドウが作成されたとき、またはウィンドウが分割されたときにコンストラクターを呼び出します。 OnInitialUpdateメンバー関数をオーバーライドして、ドキュメントの添付後にビューを初期化します。

CView::DoPreparePrinting

OnPreparePrintingのオーバーライドからこの関数を呼び出して、[印刷] ダイアログ ボックスを呼び出し、プリンター デバイス コンテキストを作成します。

BOOL DoPreparePrinting(CPrintInfo* pInfo);

パラメーター

pInfo
現在の印刷ジョブを記述する CPrintInfo 構造体を指します。

戻り値

印刷または印刷プレビューを開始できる場合は 0 以外。操作が取り消された場合は 0。

解説

この関数の動作は、(pInfo パラメーターの m_bPreview メンバーで指定された) 印刷プレビュー用に呼び出されているかによって異なります。 ファイルを印刷する場合、この関数は、pInfoポイントするCPrintInfo構造体の値を使用して、[印刷] ダイアログ ボックスを呼び出します。ユーザーがダイアログ ボックスを閉じた後、この関数は、ダイアログ ボックスで指定された設定に基づいてプリンター デバイス コンテキストを作成し、pInfo パラメーターを使用してこのデバイス コンテキストを返します。 このデバイス コンテキストは、ドキュメントの印刷に使用されます。

ファイルがプレビューされている場合、この関数は現在のプリンター設定を使用してプリンター デバイス コンテキストを作成します。このデバイス コンテキストは、プレビュー中にプリンターをシミュレートするために使用されます。

CView::GetDocument

ビューのドキュメントへのポインターを取得するには、この関数を呼び出します。

CDocument* GetDocument() const;

戻り値

ビューに関連付けられている CDocument オブジェクトへのポインター。 NULL ビューがドキュメントに添付されていない場合は〘。

解説

これにより、ドキュメントのメンバー関数を呼び出すことができます。

CView::IsSelected

指定したドキュメント項目が選択されているかどうかを確認するために、フレームワークによって呼び出されます。

virtual BOOL IsSelected(const CObject* pDocItem) const;

パラメーター

pDocItem
テスト対象のドキュメント項目をポイントします。

戻り値

指定したドキュメントアイテムが選択されている場合は 0 以外。それ以外の場合は 0。

解説

この関数の既定の実装では、 FALSEが返されます。 CDocItem オブジェクトを使用して選択を実装する場合は、この関数をオーバーライドします。 ビューに OLE 項目が含まれている場合は、この関数をオーバーライドする必要があります。

CView::OnActivateFrame

ビューを含むフレーム ウィンドウがアクティブ化または非アクティブ化されたときにフレームワークによって呼び出されます。

virtual void OnActivateFrame(
    UINT nState,
    CFrameWnd* pFrameWnd);

パラメーター

nState
フレーム ウィンドウをアクティブにするか非アクティブにするかを指定します。 次のいずれかの値を指定できます。

  • WA_INACTIVE フレーム ウィンドウが非アクティブ化されています。

  • WA_ACTIVE フレーム ウィンドウは、マウス クリック以外の方法でアクティブ化されています (たとえば、キーボード インターフェイスを使用してウィンドウを選択するなど)。

  • WA_CLICKACTIVE マウス クリックでフレーム ウィンドウがアクティブ化されている

pFrameWnd
アクティブ化するフレーム ウィンドウへのポインター。

解説

ビューに関連付けられているフレーム ウィンドウがアクティブ化または非アクティブ化されたときに特別な処理を実行する場合は、このメンバー関数をオーバーライドします。 たとえば、 CFormView は、フォーカスがあるコントロールを保存して復元するときに、このオーバーライドを実行します。

CView::OnActivateView

ビューがアクティブ化または非アクティブ化されたときにフレームワークによって呼び出されます。

virtual void OnActivateView(
    BOOL bActivate,
    CView* pActivateView,
    CView* pDeactiveView);

パラメーター

bActivate
ビューがアクティブ化されているか非アクティブ化されているかを示します。

pActivateView
アクティブ化されているビュー オブジェクトをポイントします。

pDeactiveView
非アクティブ化されているビュー オブジェクトをポイントします。

解説

この関数の既定の実装では、アクティブ化されているビューにフォーカスが設定されます。 ビューのアクティブ化または非アクティブ化時に特別な処理を実行する場合は、この関数をオーバーライドします。 たとえば、アクティブなビューと非アクティブなビューを区別する特別な視覚的な手掛かりを提供する場合は、 bActivate パラメーターを調べて、それに応じてビューの外観を更新します。

アプリケーションのメイン フレーム ウィンドウがアクティブなビューに変更なしでアクティブ化されている場合(たとえば、フォーカスがアプリケーション内のビューから別のビューに転送されている場合や、MDI 子ウィンドウ間で切り替える場合など)、 pActivateView パラメーターと pDeactiveView パラメーターは同じビューを指します。 これにより、ビューは必要に応じてパレットを再認識できます。

これらのパラメーターは、 CFrameWnd::SetActiveView が返すビューとは異なるビューで呼び出される場合 CFrameWnd::GetActiveView 異なります。 これは、最も多くの場合、分割ウィンドウで発生します。

CView::OnBeginPrinting

OnPreparePrinting が呼び出された後で、印刷または印刷プレビュー ジョブの開始時にフレームワークによって呼び出されます。

virtual void OnBeginPrinting(
    CDC* pDC,
    CPrintInfo* pInfo);

パラメーター

pDC
プリンター デバイス コンテキストを指し示します。

pInfo
現在の印刷ジョブを記述する CPrintInfo 構造体を指します。

解説

この関数の既定の実装は、何も行いません。 この関数をオーバーライドして、特に印刷のために必要な GDI リソース (ペン、フォントなど) を割り当てます。 デバイス コンテキスト内の GDI オブジェクトを使用する各ページの OnPrint メンバー関数内から選択します。 同じビュー オブジェクトを使用して画面の表示と印刷の両方を実行している場合は、各表示に必要な GDI リソースに別個の変数を使用します。これにより、印刷時に画面を更新することができます。

さらに、この関数を使用して、プリンター デバイス コンテキストのプロパティに依存する初期化を実行することもできます。 たとえば、ドキュメントを印刷するために必要なページ数は、印刷ダイアログ ボックスでユーザーが指定した設定 (たとえば、ページの長さ) によって異なる可能性があります。 このような状況では、 OnPreparePrinting メンバー関数でドキュメントの長さを指定することはできません。通常は、この場合は、ダイアログ ボックスの設定に基づいてプリンター デバイス コンテキストが作成されるまで待機する必要があります。 OnBeginPrinting は、プリンターデバイスコンテキストを表す CDC オブジェクトにアクセスできるようにする最初のオーバーライド可能な関数です。そのため、この関数からドキュメントの長さを設定できます。 この時点でドキュメントの長さを指定しない場合、印刷プレビュー時にスクロール バーは表示されません。

CView::OnDragEnter

マウスがドロップ ターゲット ウィンドウの非スクロール領域に最初に入ったときにフレームワークによって呼び出されます。

virtual DROPEFFECT OnDragEnter(
    COleDataObject* pDataObject,
    DWORD dwKeyState,
    CPoint point);

パラメーター

pDataObject
ビューのドロップ領域にドラッグされている COleDataObject をポイントします。

dwKeyState
修飾子キーの状態を格納します。 これは、 MK_CONTROLMK_SHIFTMK_ALTMK_LBUTTONMK_MBUTTON、および MK_RBUTTONの任意の数の組み合わせです。

point
ビューのクライアント領域を基準とした現在のマウス位置。

戻り値

DROPEFFECT列挙型の値。ユーザーがこの位置でオブジェクトを削除した場合に発生するドロップの種類を示します。 ドロップの種類は、通常、 dwKeyStateによって示される現在のキーの状態によって異なります。 キーステートと DROPEFFECT 値の標準的なマッピングは次のとおりです。

  • DROPEFFECT_NONE このウィンドウでは、データ オブジェクトを削除できません。

  • DROPEFFECT_LINK for MK_CONTROL|MK_SHIFT オブジェクトとそのサーバー間のリンケージを作成します。

  • DROPEFFECT_COPY for MK_CONTROL ドロップされたオブジェクトのコピーを作成します。

  • DROPEFFECT_MOVE for MK_ALT ドロップされたオブジェクトのコピーを作成し、元のオブジェクトを削除します。 これは通常、ビューがこのデータ オブジェクトを受け入れることができる場合の既定のドロップ効果です。

詳細については、MFC の高度な概念のサンプル OCLIENTを参照してください。

解説

既定の実装では、何も実行せず、 DROPEFFECT_NONEを返します。

OnDragOver メンバー関数への今後の呼び出しに備えるために、この関数をオーバーライドします。 データ オブジェクトから必要なすべてのデータは、後で OnDragOver メンバー関数で使用するために、この時点で取得する必要があります。 この時点でビューも更新して、ユーザーに視覚的なフィードバックを提供する必要があります。 詳細については、「OLE ドラッグ アンド ドロップ: ドロップ ターゲット 実装する」を参照してください。

CView::OnDragLeave

ドラッグ操作中に、そのウィンドウの有効なドロップ領域からマウスが移動されたときにフレームワークによって呼び出されます。

virtual void OnDragLeave();

解説

現在のビューで、オブジェクトのドラッグ アンド ドロップ中に視覚的なユーザー フィードバックを削除するなど、 OnDragEnter または OnDragOver の呼び出し中に実行されたアクションをクリーンアップする必要がある場合は、この関数をオーバーライドします。

CView::OnDragOver

ドラッグ操作中にドロップ ターゲット ウィンドウ上でマウスを移動すると、フレームワークによって呼び出されます。

virtual DROPEFFECT OnDragOver(
    COleDataObject* pDataObject,
    DWORD dwKeyState,
    CPoint point);

パラメーター

pDataObject
ドロップ ターゲット上でドラッグする COleDataObject をポイントします。

dwKeyState
修飾子キーの状態を格納します。 これは、 MK_CONTROLMK_SHIFTMK_ALTMK_LBUTTONMK_MBUTTON、および MK_RBUTTONの任意の数の組み合わせです。

point
ビュー クライアント領域に対する現在のマウス位置。

戻り値

DROPEFFECT列挙型の値。ユーザーがこの位置でオブジェクトを削除した場合に発生するドロップの種類を示します。 ドロップの種類は、多くの場合、 dwKeyStateによって示される現在のキーの状態によって異なります。 キーステートと DROPEFFECT 値の標準的なマッピングは次のとおりです。

  • DROPEFFECT_NONE このウィンドウでは、データ オブジェクトを削除できません。

  • DROPEFFECT_LINK for MK_CONTROL|MK_SHIFT オブジェクトとそのサーバー間のリンケージを作成します。

  • DROPEFFECT_COPY for MK_CONTROL ドロップされたオブジェクトのコピーを作成します。

  • DROPEFFECT_MOVE for MK_ALT ドロップされたオブジェクトのコピーを作成し、元のオブジェクトを削除します。 ビューがデータ オブジェクトを受け入れることができる場合、これは通常、既定のドロップ効果です。

詳細については、MFC の高度な概念のサンプル OCLIENTを参照してください。

解説

既定の実装では、何も実行せず、 DROPEFFECT_NONEを返します。

ドラッグ操作中にユーザーに視覚的なフィードバックを提供するには、この関数をオーバーライドします。 この関数は継続的に呼び出されるため、その中に含まれるすべてのコードは、可能な限り最適化する必要があります。 詳細については、「OLE ドラッグ アンド ドロップ: ドロップ ターゲット 実装する」を参照してください。

CView::OnDragScroll

OnDragEnterまたはOnDragOverを呼び出して、ポイントがスクロール領域にあるかどうかを判断する前に、フレームワークによって呼び出されます。

virtual DROPEFFECT OnDragScroll(
    DWORD dwKeyState,
    CPoint point);

パラメーター

dwKeyState
修飾子キーの状態を格納します。 これは、 MK_CONTROLMK_SHIFTMK_ALTMK_LBUTTONMK_MBUTTON、および MK_RBUTTONの任意の数の組み合わせです。

point
画面を基準にしたカーソルの位置をピクセル単位で格納します。

戻り値

DROPEFFECT列挙型の値。ユーザーがこの位置でオブジェクトを削除した場合に発生するドロップの種類を示します。 ドロップの種類は、通常、 dwKeyStateによって示される現在のキーの状態によって異なります。 キーステートと DROPEFFECT 値の標準的なマッピングは次のとおりです。

  • DROPEFFECT_NONE このウィンドウでは、データ オブジェクトを削除できません。

  • DROPEFFECT_LINK for MK_CONTROL|MK_SHIFT オブジェクトとそのサーバー間のリンケージを作成します。

  • DROPEFFECT_COPY for MK_CONTROL ドロップされたオブジェクトのコピーを作成します。

  • DROPEFFECT_MOVE for MK_ALT ドロップされたオブジェクトのコピーを作成し、元のオブジェクトを削除します。

  • DROPEFFECT_SCROLL ドラッグ スクロール操作が発生しようとしているか、ターゲット ビューで発生していることを示します。

詳細については、MFC の高度な概念のサンプル OCLIENTを参照してください。

解説

このイベントに特別な動作を提供する場合は、この関数をオーバーライドします。 既定の実装では、カーソルが各ウィンドウの境界線内の既定のスクロール領域にドラッグされると、ウィンドウが自動的にスクロールされます。 詳細については、「OLE ドラッグ アンド ドロップ: ドロップ ターゲット 実装する」を参照してください。

CView::OnDraw

ドキュメントのイメージをレンダリングするためにフレームワークによって呼び出されます。

virtual void OnDraw(CDC* pDC) = 0;

パラメーター

pDC
ドキュメントのイメージのレンダリングに使用するデバイス コンテキストを指します。

解説

フレームワークは、この関数を呼び出して画面の表示、印刷、印刷のプレビューを実行し、それぞれのケースで異なるデバイス コンテキストを渡します。 既定の実装はありません。

ドキュメントのビューを表示するには、この関数をオーバーライドする必要があります。 pDC パラメーターが指すCDC オブジェクトを使用して、グラフィック デバイス インターフェイス (GDI) の呼び出しを行うことができます。 描画する前に、ペンやフォントなどの GDI リソースをデバイス コンテキストに選択し、後で選択解除することができます。 多くの場合、描画コードはデバイスに依存しません。つまり、画像を表示しているデバイスの種類に関する情報は必要ありません。

描画を最適化するには、デバイス コンテキストの RectVisible メンバー関数を呼び出して、特定の四角形が描画されるかどうかを調べます。 通常の画面表示と印刷を区別する必要がある場合は、デバイス コンテキストの IsPrinting メンバー関数を呼び出します。

CView::OnDrop

ユーザーが有効なドロップ ターゲットを介してデータ オブジェクトを解放すると、フレームワークによって呼び出されます。

virtual BOOL OnDrop(
    COleDataObject* pDataObject,
    DROPEFFECT dropEffect,
    CPoint point);

パラメーター

pDataObject
ドロップ ターゲットにドロップされた COleDataObject をポイントします。

dropEffect
ユーザーが要求したドロップ効果。

  • DROPEFFECT_COPY 削除するデータ オブジェクトのコピーを作成します。

  • DROPEFFECT_MOVE データ オブジェクトを現在のマウス位置に移動します。

  • DROPEFFECT_LINK データ オブジェクトとそのサーバー間のリンクを作成します。

point
ビュー クライアント領域に対する現在のマウス位置。

戻り値

ドロップが成功した場合は 0 以外。それ以外の場合は 0。

解説

既定の実装では何も行われないため、 FALSEが返されます。

OLE ドロップの効果をビューのクライアント領域に実装するには、この関数をオーバーライドします。 データ オブジェクトは、 pDataObject を使用してクリップボードのデータ形式と、指定したポイントで削除されたデータを調べることができます。

Note

このビュー クラスに OnDropEx するオーバーライドがある場合、フレームワークはこの関数を呼び出しません。

CView::OnDropEx

ユーザーが有効なドロップ ターゲットを介してデータ オブジェクトを解放すると、フレームワークによって呼び出されます。

virtual DROPEFFECT OnDropEx(
    COleDataObject* pDataObject,
    DROPEFFECT dropDefault,
    DROPEFFECT dropList,
    CPoint point);

パラメーター

pDataObject
ドロップ ターゲットにドロップされた COleDataObject をポイントします。

dropDefault
ユーザーが現在のキーの状態に基づいて既定のドロップ操作に選択した効果。 たとえば DROPEFFECT_NONE です。 ドロップ効果については、「解説」セクションで説明します。

dropList
ドロップ ソースがサポートするドロップ効果の一覧。 ドロップ効果の値は、ビットごとの OR ( |) 演算を使用して組み合わせることができます。 ドロップ効果については、「解説」セクションで説明します。

point
ビュー クライアント領域に対する現在のマウス位置。

戻り値

pointで指定された場所でのドロップ試行の結果として発生したドロップ効果。 これは、 dropEffectListで示される値のいずれかである必要があります。 ドロップ効果については、「解説」セクションで説明します。

解説

既定の実装では、何も実行せず、ダミー値 (-1) を返して、フレームワークが OnDrop ハンドラーを呼び出す必要があることを示します。

マウスの右ボタンのドラッグ アンド ドロップの効果を実装するには、この関数をオーバーライドします。 マウスの右ボタンをドラッグ アンド ドロップすると、通常、マウスの右ボタンが離されたときに選択肢のメニューが表示されます。

OnDropExのオーバーライドでは、マウスの右ボタンを照会する必要があります。 GetKeyStateを呼び出すか、OnDragEnter ハンドラーからマウスの右ボタンの状態を格納できます。

  • マウスの右ボタンが下にある場合は、オーバーライドによって、ドロップ ソースによるドロップ効果のサポートを提供するポップアップ メニューが表示されます。

    • dropListを調べて、ドロップ ソースでサポートされているドロップ効果を確認します。 ポップアップ メニューでこれらのアクションのみを有効にします。

    • SetMenuDefaultItemを使用して、dropDefaultに基づいて既定のアクションを設定します。

    • 最後に、ポップアップ メニューからユーザーの選択によって示されるアクションを実行します。

  • マウスの右ボタンがダウンしていない場合、オーバーライドはこれを標準のドロップ要求として処理する必要があります。 dropDefaultで指定されたドロップ効果を使用します。 または、オーバーライドはダミー値 (-1) を返して、 OnDrop がこのドロップ操作を処理することを示すことができます。

pDataObjectを使用して、クリップボードのデータ形式と、指定したポイントで削除されたデータのCOleDataObjectを調べます。

ドロップ効果は、ドロップ操作に関連付けられたアクションを表します。 次のドロップ効果の一覧を参照してください。

  • DROPEFFECT_NONE ドロップは許可されません。

  • DROPEFFECT_COPY コピー操作が実行されます。

  • DROPEFFECT_MOVE 移動操作が実行されます。

  • DROPEFFECT_LINK 削除されたデータから元のデータへのリンクが確立されます。

  • DROPEFFECT_SCROLL ドラッグ スクロール操作が発生しようとしているか、ターゲットで発生していることを示します。

既定のメニュー コマンドの設定の詳細については、Windows SDK の SetMenuDefaultItem とこのボリュームの CMenu::GetSafeHmenu を参照してください。

CView::OnEndPrinting

ドキュメントが印刷またはプレビューされた後にフレームワークによって呼び出されます。

virtual void OnEndPrinting(
    CDC* pDC,
    CPrintInfo* pInfo);

パラメーター

pDC
プリンター デバイス コンテキストを指し示します。

pInfo
現在の印刷ジョブを記述する CPrintInfo 構造体を指します。

解説

この関数の既定の実装は、何も行いません。 OnBeginPrinting メンバー関数で割り当てた GDI リソースを解放するには、この関数をオーバーライドします。

CView::OnEndPrintPreview

ユーザーが印刷プレビュー モードを終了したときにフレームワークによって呼び出されます。

virtual void OnEndPrintPreview(
    CDC* pDC,
    CPrintInfo* pInfo,
    POINT point,
    CPreviewView* pView);

パラメーター

pDC
プリンター デバイス コンテキストを指し示します。

pInfo
現在の印刷ジョブを記述する CPrintInfo 構造体を指します。

point
プレビュー モードで最後に表示されたページ上のポイントを指定します。

pView
プレビューに使用するビュー オブジェクトをポイントします。

解説

この関数の既定の実装では、 OnEndPrinting メンバー関数が呼び出され、メイン フレーム ウィンドウが印刷プレビューが開始される前の状態に復元されます。 プレビュー モードが終了したときに特別な処理を実行するには、この関数をオーバーライドします。 たとえば、プレビュー モードから通常の表示モードに切り替えるときにドキュメント内のユーザーの位置を維持する場合は、point パラメーターで説明されている位置と、pInfo パラメーターが指すCPrintInfo構造体のm_nCurPage メンバーまでスクロールできます。

オーバーライドから基底クラスバージョンの OnEndPrintPreview を常に呼び出します(通常は関数の最後)。

CView::OnInitialUpdate

ビューが最初にドキュメントにアタッチされた後、ビューが最初に表示される前に、フレームワークによって呼び出されます。

virtual void OnInitialUpdate();

解説

この関数の既定の実装では、ヒント情報なしで OnUpdate メンバー関数を呼び出します (つまり、lHint パラメーターには既定値の 0 を使用し、pHint パラメーターにはNULLを使用します)。 ドキュメントに関する情報を必要とする 1 回限りの初期化を実行するには、この関数をオーバーライドします。 たとえば、アプリケーションに固定サイズのドキュメントがある場合は、この関数を使用して、ドキュメント サイズに基づいてビューのスクロール制限を初期化できます。 アプリケーションで可変サイズのドキュメントがサポートされている場合は、 OnUpdate を使用して、ドキュメントが変更されるたびにスクロール制限を更新します。

CView::OnPrepareDC

OnDraw メンバー関数が画面表示用に呼び出される前、および印刷または印刷プレビュー中に各ページに対して OnPrint メンバー関数が呼び出される前に、フレームワークによって呼び出されます。

virtual void OnPrepareDC(
    CDC* pDC,
    CPrintInfo* pInfo = NULL);

パラメーター

pDC
ドキュメントのイメージのレンダリングに使用するデバイス コンテキストを指します。

pInfo
OnPrepareDCが印刷または印刷プレビューのために呼び出されている場合に、現在の印刷ジョブを記述するCPrintInfo構造体を指します。m_nCurPage メンバーは、印刷しようとしているページを指定します。 このパラメーターは、画面表示のためにOnPrepareDCが呼び出されている場合にNULLされます。

解説

この関数の既定の実装では、画面表示のために関数が呼び出された場合、何も実行されません。 ただし、この関数は、 CScrollViewなどの派生クラスでオーバーライドされ、デバイス コンテキストの属性を調整するため、オーバーライドの開始時に常に基底クラスの実装を呼び出す必要があります。

関数が印刷用に呼び出された場合、既定の実装では、 pInfo パラメーターに格納されているページ情報が調べられます。 文書の長さが指定されていない場合、 OnPrepareDC は文書が 1 ページ長であると見なし、1 ページの印刷後に印刷ループを停止します。 この関数は、構造体の m_bContinuePrinting メンバーを FALSEに設定することで、印刷ループを停止します。

次のいずれかの理由で OnPrepareDC をオーバーライドします。

  • 指定したページの必要に応じてデバイス コンテキストの属性を調整します。 たとえば、デバイス コンテキストのマッピング モードやその他の特性を設定する必要がある場合は、この関数で設定します。

  • 印刷時の改ページ位置の修正を実行する。 通常は、 OnPreparePrinting メンバー関数を使用して、印刷を開始するときにドキュメントの長さを指定します。 ただし、ドキュメントの期間が事前にわからない場合 (たとえば、データベースから未確定のレコード数を印刷する場合)、印刷中にドキュメントの末尾をテストするために OnPrepareDC をオーバーライドします。 印刷するドキュメントがこれ以上ない場合は、CPrintInfo構造体のm_bContinuePrinting メンバーをFALSEに設定します。

  • ページ単位でプリンターにエスケープ コードを送信する。 OnPrepareDCからエスケープ コードを送信するには、pDC パラメーターの Escape メンバー関数を呼び出します。

オーバーライドの開始時に基底クラスバージョンの OnPrepareDC を呼び出します。

void CMyView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
   CView::OnPrepareDC(pDC, pInfo);

   // If we are printing, set the mapmode and the window
   // extent properly, then set viewport extent. Use the
   // SetViewportOrg member function in the CDC class to
   // move the viewport origin to the center of the view.

   if (pDC->IsPrinting()) // Is the DC a printer DC.
   {
      CRect rect;
      GetClientRect(&rect);

      pDC->SetMapMode(MM_ISOTROPIC);
      CSize ptOldWinExt = pDC->SetWindowExt(1000, 1000);
      ASSERT(ptOldWinExt.cx != 0 && ptOldWinExt.cy != 0);
      CSize ptOldViewportExt = pDC->SetViewportExt(rect.Width(), -rect.Height());
      ASSERT(ptOldViewportExt.cx != 0 && ptOldViewportExt.cy != 0);
      CPoint ptOldOrigin = pDC->SetViewportOrg(rect.Width() / 2, rect.Height() / 2);
   }
}

CView::OnPreparePrinting

ドキュメントが印刷またはプレビューされる前に、フレームワークによって呼び出されます。

virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);

パラメーター

pInfo
現在の印刷ジョブを記述する CPrintInfo 構造体を指します。

戻り値

印刷を開始する場合は 0 以外。印刷ジョブが取り消された場合は 0。

解説

既定の実装では、何も行われません。

印刷と印刷プレビューを有効にするには、この関数をオーバーライドする必要があります。 DoPreparePrintingメンバー関数を呼び出し、pInfo パラメーターを渡し、その戻り値を返します。DoPreparePrinting印刷] ダイアログ ボックスが表示され、プリンター デバイス コンテキストが作成されます。 既定値以外の値を使用して [印刷] ダイアログ ボックスを初期化する場合は、 pInfoのメンバーに値を割り当てます。 たとえば、ドキュメントの長さがわかっている場合は、DoPreparePrintingを呼び出す前に、pInfoSetMaxPage メンバー関数に値を渡します。 この値は、[印刷] ダイアログ ボックスの [範囲] 部分の [To: ] ボックスに表示されます。

DoPreparePrinting では、プレビュー ジョブの [印刷] ダイアログ ボックスは表示されません。 印刷ジョブの [印刷] ダイアログ ボックスをバイパスする場合は、pInfom_bPreview メンバーがFALSEされていることを確認し、DoPreparePrintingに渡す前にTRUEに設定し、後でFALSEにリセットします。

プリンター デバイス コンテキストを表す CDC オブジェクトへのアクセスを必要とする初期化を実行する必要がある場合 (たとえば、ドキュメントの長さを指定する前にページ サイズを把握する必要がある場合)、 OnBeginPrinting メンバー関数をオーバーライドします。

pInfo パラメーターのm_nNumPreviewPagesまたはm_strPageDescメンバーの値を設定する場合は、DoPreparePrintingを呼び出した後に設定します。 DoPreparePrintingメンバー関数は、アプリケーションの値にm_nNumPreviewPagesを設定します。INI ファイルを作成し、m_strPageDescを既定値に設定します。

OnPreparePrintingをオーバーライドし、オーバーライドからDoPreparePrintingを呼び出して、フレームワークに [印刷] ダイアログ ボックスが表示され、プリンター DC が作成されるようにします。

BOOL CMyEditView::OnPreparePrinting(CPrintInfo* pInfo)
{
   return CEditView::DoPreparePrinting(pInfo);
}

ドキュメントに含まれるページの数がわかっている場合は、DoPreparePrintingを呼び出す前に、OnPreparePrintingの最大ページ数を設定します。 フレームワークは、[印刷] ダイアログ ボックスの [to] ボックスに最大ページ番号を表示します。

BOOL CExampleView::OnPreparePrinting(CPrintInfo* pInfo)
{
   //The document has 2 pages.
   pInfo->SetMaxPage(2);
   return CView::DoPreparePrinting(pInfo);
}

CView::OnPrint

ドキュメントのページを印刷またはプレビューするためにフレームワークによって呼び出されます。

virtual void OnPrint(
    CDC* pDC,
    CPrintInfo* pInfo);

パラメーター

pDC
プリンター デバイス コンテキストを指し示します。

pInfo
現在の印刷ジョブを記述する CPrintInfo 構造体を指します。

解説

印刷されるページごとに、フレームワークは、 OnPrepareDC メンバー関数を呼び出した直後にこの関数を呼び出します。 印刷されるページは、pInfoが指すCPrintInfo構造体のm_nCurPage メンバーによって指定されます。 既定の実装では、 OnDraw メンバー関数を呼び出し、プリンター デバイス コンテキストを渡します。

次のいずれかの理由で、この関数をオーバーライドします。

  • 複数ページのドキュメントの印刷を許可します。 現在印刷中のページに対応するドキュメントの部分のみをレンダリングします。 OnDrawを使用してレンダリングを実行している場合は、ビューポートの原点を調整して、ドキュメントの適切な部分のみが印刷されるようにすることができます。

  • 印刷イメージを画面イメージと異なる外観にするには (つまり、アプリケーションが WYSIWYG でない場合)。 プリンターのデバイス コンテキストを OnDrawに渡す代わりに、デバイス コンテキストを使用して、画面に表示されない属性を使用してイメージをレンダリングします。

    画面表示に使用しない印刷に GDI リソースが必要な場合は、描画する前にデバイス コンテキストで選択し、後で選択解除します。 これらの GDI リソースは、 OnBeginPrinting で割り当て、 OnEndPrintingで解放する必要があります。

  • ヘッダーまたはフッターを実装する。 印刷できる領域を制限することで、 OnDraw を使用してレンダリングを行うことができます。

pInfo パラメーターのm_rectDraw メンバーは、ページの印刷可能領域を論理単位で記述します。

OnPrintのオーバーライドでOnPrepareDCを呼び出さないでください。フレームワークは、OnPrintを呼び出す前に自動的にOnPrepareDCを呼び出します。

オーバーライドされた OnPrint 関数のスケルトンを次に示します。

void CMyView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
   UNREFERENCED_PARAMETER(pInfo);

   // Print headers and/or footers, if desired.
   // Find portion of document corresponding to pInfo->m_nCurPage.
   OnDraw(pDC);
}

別の例については、「CRichEditView::PrintInsideRect」を参照してください。

CView::OnScroll

スクロールが可能かどうかを判断するためにフレームワークによって呼び出されます。

virtual BOOL OnScroll(
    UINT nScrollCode,
    UINT nPos,
    BOOL bDoScroll = TRUE);

パラメーター

nScrollCode
ユーザーのスクロール要求を示すスクロール バー コード。 このパラメーターは、水平方向に発生するスクロールの種類を決定する下位バイトと、垂直方向に発生するスクロールの種類を決定する高次バイトの 2 つの部分で構成されます。

  • SB_BOTTOM 下にスクロールします。

  • SB_LINEDOWN 1 行下にスクロールします。

  • SB_LINEUP 1 行上にスクロールします。

  • SB_PAGEDOWN 1 ページ下にスクロールします。

  • SB_PAGEUP 1 ページ上にスクロールします。

  • SB_THUMBTRACK スクロール ボックスを指定した位置にドラッグします。 現在の位置は、 nPosで指定されます。

  • SB_TOP 上にスクロールします。

nPos
スクロール バー コードが SB_THUMBTRACKされている場合は、現在のスクロール ボックス位置を格納します。それ以外の場合は使用されません。 初期スクロール範囲によっては、 nPos が負の値になる場合があり、必要に応じて int にキャストする必要があります。

bDoScroll
指定したスクロール 操作を実際に実行するかどうかを決定します。 TRUE場合は、スクロールが行われます。FALSE場合は、スクロールは行われません。

戻り値

bDoScrollTRUEされ、ビューが実際にスクロールされた場合は、0 以外の値を返します。それ以外の場合は 0 を返します。 bDoScrollFALSEの場合は、実際にスクロールを行わない場合でも、bDoScrollTRUEされた場合に返された値を返します。

解説

1 つのケースでは、この関数は、ビューがスクロール バー メッセージを受信したときにTRUEに設定bDoScrollフレームワークによって呼び出されます。 この場合は、実際にビューをスクロールする必要があります。 一方、この関数は、OLE 項目が最初にドロップ 先の自動スクロール領域にドラッグされてから実際にスクロールが行われる前にFALSEに設定されたbDoScrollで呼び出されます。 この場合、実際にはビューをスクロールしないでください。

CView::OnScrollBy

OLE 項目をビューの現在の罫線に対してドラッグするか、垂直または水平のスクロール バーを操作して、ユーザーがドキュメントの現在のビューを超える領域を表示するときに、フレームワークによって呼び出されます。

virtual BOOL OnScrollBy(
    CSize sizeScroll,
    BOOL bDoScroll = TRUE);

パラメーター

sizeScroll
水平方向と垂直方向にスクロールされたピクセル数。

bDoScroll
ビューのスクロールを行うかどうかを決定します。 TRUE場合はスクロールが行われ、FALSE場合はスクロールは行われません。

戻り値

ビューをスクロールできた場合は 0 以外。それ以外の場合は 0。

解説

派生クラスでは、このメソッドは、ユーザーが要求した方向にビューがスクロール可能かどうかを確認し、必要に応じて新しいリージョンを更新します。 この関数は、実際のスクロール要求を実行するために、 CWnd::OnHScroll および CWnd::OnVScroll によって自動的に呼び出されます。

このメソッドの既定の実装ではビューは変更されませんが、呼び出されない場合、ビューは CScrollView派生クラスではスクロールされません。

ドキュメントの幅または高さが 32767 ピクセルを超える場合、 OnScrollBy が無効な sizeScroll 引数で呼び出されるため、32767 を超えてスクロールすると失敗します。

CView::OnUpdate

ビューのドキュメントが変更された後、フレームワークによって呼び出されます。この関数は CDocument::UpdateAllViews によって呼び出され、ビューはそれらの変更を反映するように表示を更新できます。

virtual void OnUpdate(
    CView* pSender,
    LPARAM lHint,
    CObject* pHint);

パラメーター

pSender
ドキュメントを変更したビューをポイントするか、すべてのビューを更新する場合は NULL します。

lHint
変更に関する情報が含まれます。

pHint
変更に関する情報を格納しているオブジェクトを指します。

解説

これは、 OnInitialUpdateの既定の実装でも呼び出されます。 既定の実装では、クライアント領域全体が無効化され、次の WM_PAINT メッセージを受信したときに描画用にマークされます。 ドキュメントの変更された部分にマップされている領域のみを更新する場合は、この関数をオーバーライドします。 これを行うには、ヒント パラメーターを使用して変更に関する情報を渡す必要があります。

lHintを使用するには、特殊なヒント値 (通常はビットマスクまたは列挙型) を定義し、ドキュメントにこれらの値のいずれかを渡します。 pHintを使用するには、CObjectからヒント クラスを派生させ、ドキュメントにヒント オブジェクトへのポインターを渡します。OnUpdateをオーバーライドする場合は、CObject::IsKindOf メンバー関数を使用してヒント オブジェクトの実行時の型を決定します。

通常、 OnUpdateから直接描画を実行しないでください。 代わりに、更新が必要な領域をデバイス座標で記述する四角形を決定します。この四角形を CWnd::InvalidateRectに渡します。 これにより、次に WM_PAINT メッセージを受信したときに描画が発生します。

lHintが 0 で、pHintNULL場合、ドキュメントは一般的な更新通知を送信しています。 ビューが一般的な更新通知を受け取った場合、またはヒントをデコードできない場合は、クライアント領域全体を無効にする必要があります。

関連項目

MFC サンプル MDIDOCVW
CWnd クラス
階層図
CWnd クラス
CFrameWnd クラス
CSplitterWnd クラス
CDC クラス
CDocTemplate クラス
CDocument クラス