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
処理します。 これらの関数でスクロール バー メッセージ処理を実装することも、派生クラスCScrollView
をCView
使用してスクロールを処理することもできます。
さらに、 CScrollView
Microsoft Foundation クラス ライブラリには、次から CView
派生した他の 9 つのクラスが用意されています。
CCtrlView
、ドキュメントの使用を許可するビュー - ツリー、リスト、および豊富な編集コントロールを使用したビュー アーキテクチャ。CDaoRecordView
ダイアログ ボックス コントロールにデータベース レコードを表示するビュー。CEditView
は、単純な複数行テキスト エディターを提供するビューです。 オブジェクトはCEditView
、ダイアログ ボックス内のコントロールとして、およびドキュメント上のビューとして使用できます。CFormView
は、ダイアログ ボックス コントロールを含み、ダイアログ テンプレート リソースに基づくスクロール可能なビューです。CListView
: ドキュメントの使用を許可するビュー - リスト コントロールを使用したビュー アーキテクチャ。CRecordView
ダイアログ ボックス コントロールにデータベース レコードを表示するビュー。CRichEditView
ドキュメントの使用を許可するビュー - 豊富な編集コントロールを備えたビュー アーキテクチャ。CScrollView
は、スクロールサポートを自動的に提供するビューです。CTreeView
:ドキュメントの使用を許可するビュー - ツリー コントロールを使用したビュー アーキテクチャ。
この CView
クラスには、印刷プレビューを実行するためにフレームワークによって使用される、という名前 CPreviewView
の派生実装クラスもあります。 このクラスでは、ツール バー、シングル ページまたはダブルページ プレビュー、ズームなど、印刷プレビュー ウィンドウ固有の機能 、つまりプレビューされた画像を拡大する機能がサポートされます。 印刷プレビュー用に独自の CPreviewView
インターフェイスを実装する場合 (たとえば、印刷プレビュー モードでの編集をサポートする場合) を除き、いずれかのメンバー関数を呼び出したりオーバーライドしたりする必要はありません。 使用CView
の詳細については、「ドキュメント/ビューのアーキテクチャと印刷」を参照してください。 さらに、印刷プレビューのカスタマイズの詳細については 、テクニカル ノート 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
調べて、それに応じてビューの外観を更新します。
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_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();
解説
オブジェクトのドラッグ アンド ドロップ中にビジュアル ユーザーのフィードバックを削除するなど、実行中またはOnDragOver
呼び出し中OnDragEnter
に実行されたアクションを現在のビューでクリーンする必要がある場合は、この関数をオーバーライドします。
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
ドキュメントのイメージのレンダリングに使用するデバイス コンテキストを指します。
解説
フレームワークは、この関数を呼び出して画面の表示、印刷、印刷のプレビューを実行し、それぞれのケースで異なるデバイス コンテキストを渡します。 既定の実装はありません。
ドキュメントのビューを表示するには、この関数をオーバーライドする必要があります。 パラメーターが指すオブジェクトを使用して 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
(つまり、パラメーターとNULL
pHint
パラメーターの既定値 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
呼び出します。 印刷されるページは、参照先の構造体pInfo
のCPrintInfo
メンバーによって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 を返します。 ある場合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
、実行されます。
このメソッドの既定の実装ではビューは変更されませんが、呼び出されない場合、ビューは -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
派生させ、ドキュメントにヒント オブジェクトへのポインターを渡します。オーバーライドする場合は、メンバー関数をOnUpdate
CObject::IsKindOf
使用してヒント オブジェクトの実行時の型を決定します。
通常から直接 OnUpdate
描画を実行しないでください。 代わりに、更新が必要な領域をデバイス座標で記述する四角形を決定します。にこの四角形を渡します CWnd::InvalidateRect
。 これにより、次にメッセージを受信したときに WM_PAINT
描画が行われます。
0 pHint
の場合lHint
、NULL
ドキュメントは一般的な更新通知を送信しました。 ビューが一般的な更新通知を受け取った場合、またはヒントをデコードできない場合は、クライアント領域全体を無効にする必要があります。
関連項目
MFC サンプル MDIDOCVW
CWnd
クラス
階層図
CWnd
クラス
CFrameWnd
クラス
CSplitterWnd
クラス
CDC
クラス
CDocTemplate
クラス
CDocument
クラス
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示