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 を参照してください。
継承階層
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_CONTROL
、 MK_SHIFT
、 MK_ALT
、 MK_LBUTTON
、 MK_MBUTTON
、および MK_RBUTTON
の任意の数の組み合わせです。
point
ビューのクライアント領域を基準とした現在のマウス位置。
戻り値
DROPEFFECT
列挙型の値。ユーザーがこの位置でオブジェクトを削除した場合に発生するドロップの種類を示します。 ドロップの種類は、通常、 dwKeyState
によって示される現在のキーの状態によって異なります。 キーステートと DROPEFFECT
値の標準的なマッピングは次のとおりです。
DROPEFFECT_NONE
このウィンドウでは、データ オブジェクトを削除できません。DROPEFFECT_LINK
forMK_CONTROL|MK_SHIFT
オブジェクトとそのサーバー間のリンケージを作成します。DROPEFFECT_COPY
forMK_CONTROL
ドロップされたオブジェクトのコピーを作成します。DROPEFFECT_MOVE
forMK_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_CONTROL
、 MK_SHIFT
、 MK_ALT
、 MK_LBUTTON
、 MK_MBUTTON
、および MK_RBUTTON
の任意の数の組み合わせです。
point
ビュー クライアント領域に対する現在のマウス位置。
戻り値
DROPEFFECT
列挙型の値。ユーザーがこの位置でオブジェクトを削除した場合に発生するドロップの種類を示します。 ドロップの種類は、多くの場合、 dwKeyState
によって示される現在のキーの状態によって異なります。 キーステートと DROPEFFECT
値の標準的なマッピングは次のとおりです。
DROPEFFECT_NONE
このウィンドウでは、データ オブジェクトを削除できません。DROPEFFECT_LINK
forMK_CONTROL|MK_SHIFT
オブジェクトとそのサーバー間のリンケージを作成します。DROPEFFECT_COPY
forMK_CONTROL
ドロップされたオブジェクトのコピーを作成します。DROPEFFECT_MOVE
forMK_ALT
ドロップされたオブジェクトのコピーを作成し、元のオブジェクトを削除します。 ビューがデータ オブジェクトを受け入れることができる場合、これは通常、既定のドロップ効果です。
詳細については、MFC の高度な概念のサンプル OCLIENT
を参照してください。
解説
既定の実装では、何も実行せず、 DROPEFFECT_NONE
を返します。
ドラッグ操作中にユーザーに視覚的なフィードバックを提供するには、この関数をオーバーライドします。 この関数は継続的に呼び出されるため、その中に含まれるすべてのコードは、可能な限り最適化する必要があります。 詳細については、「OLE ドラッグ アンド ドロップ: ドロップ ターゲット 実装する」を参照してください。
CView::OnDragScroll
OnDragEnter
またはOnDragOver
を呼び出して、ポイントがスクロール領域にあるかどうかを判断する前に、フレームワークによって呼び出されます。
virtual DROPEFFECT OnDragScroll(
DWORD dwKeyState,
CPoint point);
パラメーター
dwKeyState
修飾子キーの状態を格納します。 これは、 MK_CONTROL
、 MK_SHIFT
、 MK_ALT
、 MK_LBUTTON
、 MK_MBUTTON
、および MK_RBUTTON
の任意の数の組み合わせです。
point
画面を基準にしたカーソルの位置をピクセル単位で格納します。
戻り値
DROPEFFECT
列挙型の値。ユーザーがこの位置でオブジェクトを削除した場合に発生するドロップの種類を示します。 ドロップの種類は、通常、 dwKeyState
によって示される現在のキーの状態によって異なります。 キーステートと DROPEFFECT
値の標準的なマッピングは次のとおりです。
DROPEFFECT_NONE
このウィンドウでは、データ オブジェクトを削除できません。DROPEFFECT_LINK
forMK_CONTROL|MK_SHIFT
オブジェクトとそのサーバー間のリンケージを作成します。DROPEFFECT_COPY
forMK_CONTROL
ドロップされたオブジェクトのコピーを作成します。DROPEFFECT_MOVE
forMK_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
を呼び出す前に、pInfo
の SetMaxPage メンバー関数に値を渡します。 この値は、[印刷] ダイアログ ボックスの [範囲] 部分の [To: ] ボックスに表示されます。
DoPreparePrinting
では、プレビュー ジョブの [印刷] ダイアログ ボックスは表示されません。 印刷ジョブの [印刷] ダイアログ ボックスをバイパスする場合は、pInfo
のm_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
場合は、スクロールは行われません。
戻り値
bDoScroll
がTRUE
され、ビューが実際にスクロールされた場合は、0 以外の値を返します。それ以外の場合は 0 を返します。 bDoScroll
がFALSE
の場合は、実際にスクロールを行わない場合でも、bDoScroll
がTRUE
された場合に返された値を返します。
解説
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 で、pHint
がNULL
場合、ドキュメントは一般的な更新通知を送信しています。 ビューが一般的な更新通知を受け取った場合、またはヒントをデコードできない場合は、クライアント領域全体を無効にする必要があります。
関連項目
MFC サンプル MDIDOCVW
CWnd
クラス
階層図
CWnd
クラス
CFrameWnd
クラス
CSplitterWnd
クラス
CDC
クラス
CDocTemplate
クラス
CDocument
クラス