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::OnVScrollメンバー関数をCWnd::OnHScroll処理します。 これらの関数でスクロール バー メッセージ処理を実装することも、派生クラスCScrollViewCView使用してスクロールを処理することもできます。

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

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

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

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

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

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

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

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

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

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

この CView クラスには、印刷プレビューを実行するためにフレームワークによって使用される、という名前 CPreviewViewの派生実装クラスもあります。 このクラスでは、ツール バー、シングル ページまたはダブルページ プレビュー、ズームなど、印刷プレビュー ウィンドウ固有の機能 、つまりプレビューされた画像を拡大する機能がサポートされます。 印刷プレビュー用に独自の CPreviewViewインターフェイスを実装する場合 (たとえば、印刷プレビュー モードでの編集をサポートする場合) を除き、いずれかのメンバー関数を呼び出したりオーバーライドしたりする必要はありません。 使用CViewの詳細については、「ドキュメント/ビューのアーキテクチャ印刷」を参照してください。 さらに、印刷プレビューのカスタマイズの詳細については 、テクニカル ノート 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 調べて、それに応じてビューの外観を更新します。

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

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

CView::OnBeginPrinting

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

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

パラメーター

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

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

解説

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

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

CView::OnDragEnter

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

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

パラメーター

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

dwKeyState
修飾子キーの状態を格納します。 これは、次の任意の数の組み合わせです。 MK_CONTROLMK_SHIFTMK_ALTMK_LBUTTONMK_MBUTTONMK_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();

解説

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

CView::OnDragOver

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

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

パラメーター

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

dwKeyState
修飾子キーの状態を格納します。 これは、次の任意の数の組み合わせです。 MK_CONTROLMK_SHIFTMK_ALTMK_LBUTTONMK_MBUTTONMK_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

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

virtual DROPEFFECT OnDragScroll(
    DWORD dwKeyState,
    CPoint point);

パラメーター

dwKeyState
修飾子キーの状態を格納します。 これは、次の任意の数の組み合わせです。 MK_CONTROLMK_SHIFTMK_ALTMK_LBUTTONMK_MBUTTONMK_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
ドキュメントのイメージのレンダリングに使用するデバイス コンテキストを指します。

解説

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

ドキュメントのビューを表示するには、この関数をオーバーライドする必要があります。 パラメーターが指すオブジェクトを使用して CDC 、グラフィック デバイス インターフェイス (GDI) の呼び出しを pDC 行うことができます。 描画する前に、ペンやフォントなどの 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 示すことができます。

指定したポイントで削除された COleDataObject for Clipboard データ形式とデータを調べるのに使用pDataObjectします。

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

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

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

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

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

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

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

CView::OnEndPrinting

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

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

パラメーター

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

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

解説

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

CView::OnEndPrintPreview

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

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

パラメーター

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

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

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

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

解説

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

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

CView::OnInitialUpdate

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

virtual void OnInitialUpdate();

解説

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

CView::OnPrepareDC

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

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

パラメーター

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

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

解説

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

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

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

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

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

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

オーバーライドの 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前に SetMaxPage メンバー関数pInfo値を渡します。 この値は、[印刷] ダイアログ ボックスの [範囲] 部分の [To: ] ボックスに表示されます。

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

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

パラメーターの値 m_nNumPreviewPages または m_strPageDesc メンバー pInfo を設定する場合は、呼び出 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 呼び出します。 印刷されるページは、参照先の構造体pInfoCPrintInfoメンバーによってm_nCurPage指定されます。 既定の実装では、メンバー関数を OnDraw 呼び出し、プリンター デバイス コンテキストを渡します。

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

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

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

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

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

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

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

オーバーライドされた 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 必要に応じて an int にキャストする必要があります。

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

戻り値

is TRUE で、ビューが実際にスクロールされた場合bDoScrollは 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 、実行されます。

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

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

CView::OnUpdate

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

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

パラメーター

pSender
ドキュメントを変更したビューをポイントするか NULL 、すべてのビューを更新するかどうかを指定します。

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

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

解説

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

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

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

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

関連項目

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