CView クラスCView Class

ユーザーが定義するビュークラスの基本機能が用意されています。Provides the basic functionality for user-defined view classes.

構文Syntax

class AFX_NOVTABLE CView : public CWnd

メンバーMembers

プロテクト コンストラクターProtected Constructors

名前Name 説明Description
CView:: CViewCView::CView CView オブジェクトを構築します。Constructs a CView object.

パブリック メソッドPublic Methods

名前Name 説明Description
CView::D oPreparePrintingCView::DoPreparePrinting [印刷] ダイアログボックスを表示し、プリンターデバイスコンテキストを作成します。メンバー関数をオーバーライドするときに、を呼び出し OnPreparePrinting ます。Displays Print dialog box and creates printer device context; call when overriding the OnPreparePrinting member function.
CView:: GetDocumentCView::GetDocument ビューに関連付けられているドキュメントを返します。Returns the document associated with the view.
CView:: IsSelectedCView::IsSelected ドキュメント項目が選択されているかどうかをテストします。Tests whether a document item is selected. OLE のサポートに必要です。Required for OLE support.
CView:: OnDragEnterCView::OnDragEnter ビューのドラッグアンドドロップ領域に項目が最初にドラッグされたときに呼び出されます。Called when an item is first dragged into the drag-and-drop region of a view.
CView:: OnDragLeaveCView::OnDragLeave ドラッグした項目がビューのドラッグアンドドロップ領域から離れると呼び出されます。Called when a dragged item leaves the drag-and-drop region of a view.
CView:: OnDragOverCView::OnDragOver ビューのドラッグアンドドロップ領域上に項目がドラッグされると呼び出されます。Called when an item is dragged over the drag-and-drop region of a view.
CView:: OnDragScrollCView::OnDragScroll カーソルがウィンドウのスクロール領域にドラッグされているかどうかを判断するために呼び出されます。Called to determine whether the cursor is dragged into the scroll region of the window.
CView:: OnDropCView::OnDrop ビューのドラッグアンドドロップ領域に項目がドロップされたときに呼び出されます。既定のハンドラー。Called when an item has been dropped into the drag-and-drop region of a view, default handler.
CView:: OnDropExCView::OnDropEx ビューのドラッグアンドドロップ領域に項目がドロップされたときに呼び出されます。プライマリハンドラー。Called when an item has been dropped into the drag-and-drop region of a view, primary handler.
CView:: OnInitialUpdateCView::OnInitialUpdate ビューがドキュメントに最初にアタッチされた後に呼び出されます。Called after a view is first attached to a document.
CView:: OnPrepareDCCView::OnPrepareDC OnDrawメンバー関数が画面に表示される前に呼び出されるか、または OnPrint 印刷または印刷プレビューのためにメンバー関数が呼び出される前に呼び出されます。Called before the OnDraw member function is called for screen display or the OnPrint member function is called for printing or print preview.
CView:: OnScrollCView::OnScroll OLE 項目がビューの境界を越えてドラッグされると呼び出されます。Called when OLE items are dragged beyond the borders of the view.
CView:: OnScrollByCView::OnScrollBy アクティブなインプレース OLE 項目を含むビューがスクロールされたときに呼び出されます。Called when a view containing active in-place OLE items is scrolled.

プロテクト メソッドProtected Methods

名前Name 説明Description
CView:: OnアクティブフレームCView::OnActivateFrame ビューを含むフレームウィンドウがアクティブ化または非アクティブ化されたときに呼び出されます。Called when the frame window containing the view is activated or deactivated.
CView:: OnアクティブビューCView::OnActivateView ビューがアクティブになったときに呼び出されます。Called when a view is activated.
CView::OnBeginPrintingCView::OnBeginPrinting 印刷ジョブの開始時に呼び出されます。をオーバーライドして、グラフィックスデバイスインターフェイス (GDI) リソースを割り当てます。Called when a print job begins; override to allocate graphics device interface (GDI) resources.
CView:: OnDrawCView::OnDraw 画面表示、印刷、または印刷プレビューのためにドキュメントのイメージをレンダリングするために呼び出されます。Called to render an image of the document for screen display, printing, or print preview. 実装が必要です。Implementation required.
CView:: OnEndPrintingCView::OnEndPrinting 印刷ジョブが終了したときに呼び出されます。GDI リソースの割り当てを解除するには、をオーバーライドします。Called when a print job ends; override to deallocate GDI resources.
CView:: OnEndPrintPreviewCView::OnEndPrintPreview プレビューモードが終了したときに呼び出されます。Called when preview mode is exited.
CView:: OnPreparePrintingCView::OnPreparePrinting ドキュメントが印刷またはプレビューされる前に呼び出されます。オーバーライドして [印刷] ダイアログボックスを初期化します。Called before a document is printed or previewed; override to initialize Print dialog box.
CView:: OnPrintCView::OnPrint ドキュメントのページを印刷またはプレビューするために呼び出されます。Called to print or preview a page of the document.
CView:: OnUpdateCView::OnUpdate ドキュメントが変更されたことをビューに通知するために呼び出されます。Called to notify a view that its document has been modified.

解説Remarks

ビューはドキュメントに添付され、ドキュメントとユーザーの間の仲介役として機能します。このビューでは、ドキュメントのイメージが画面またはプリンター上にレンダリングされ、ユーザーの入力がドキュメントに対する操作として解釈されます。A view is attached to a document and acts as an intermediary between the document and the user: the view renders an image of the document on the screen or printer and interprets user input as operations upon the document.

ビューは、フレームウィンドウの子です。A view is a child of a frame window. 分割ウィンドウの場合と同じように、複数のビューでフレームウィンドウを共有できます。More than one view can share a frame window, as in the case of a splitter window. ビュークラス、フレームウィンドウクラス、およびドキュメントクラス間のリレーションシップは、オブジェクトによって確立され CDocTemplate ます。The relationship between a view class, a frame window class, and a document class is established by a CDocTemplate object. ユーザーが新しいウィンドウを開いたり、既存のウィンドウを分割したりすると、フレームワークによって新しいビューが構築され、ドキュメントにアタッチされます。When the user opens a new window or splits an existing one, the framework constructs a new view and attaches it to the document.

1つのビューにアタッチできるドキュメントは1つだけですが、ドキュメントには複数のビューを一度にアタッチすることができます。たとえば、ドキュメントが分割ウィンドウまたはマルチドキュメントインターフェイス (MDI) アプリケーションの複数の子ウィンドウに表示されている場合などです。A view can be attached to only one document, but a document can have multiple views attached to it at once — for example, if the document is displayed in a splitter window or in multiple child windows in a multiple document interface (MDI) application. アプリケーションでは、特定の種類のドキュメントに対してさまざまな種類のビューをサポートできます。たとえば、ワードプロセッシングプログラムでは、ドキュメントの完全なテキストビューと、セクションの見出しのみを表示するアウトラインビューの両方が提供される場合があります。Your application can support different types of views for a given document type; for example, a word-processing program might provide both a complete text view of a document and an outline view that shows only the section headings. 分割ウィンドウを使用する場合は、これらの異なる種類のビューを個別のフレームウィンドウまたは1つのフレームウィンドウの別のペインに配置できます。These different types of views can be placed in separate frame windows or in separate panes of a single frame window if you use a splitter window.

ビューでは、キーボード入力、マウス入力、ドラッグアンドドロップによる入力、メニュー、ツールバー、またはスクロールバーのコマンドなど、さまざまな種類の入力を処理することができます。A view may be responsible for handling several different types of input, such as keyboard input, mouse input or input via drag-and-drop, as well as commands from menus, toolbars, or scroll bars. ビューは、フレームウィンドウによって転送されたコマンドを受け取ります。A view receives commands forwarded by its frame window. ビューが特定のコマンドを処理しない場合は、関連付けられているドキュメントにコマンドを転送します。If the view does not handle a given command, it forwards the command to its associated document. すべてのコマンドターゲットと同様、ビューはメッセージマップを介してメッセージを処理します。Like all command targets, a view handles messages via a message map.

ビューはドキュメントのデータを表示および変更する必要がありますが、保存するためのものではありません。The view is responsible for displaying and modifying the document's data but not for storing it. ドキュメントには、そのデータに関する必要な詳細情報が表示されます。The document provides the view with the necessary details about its data. ビューがドキュメントのデータメンバーに直接アクセスできるようにすることも、を呼び出すビュークラスのドキュメントクラスにメンバー関数を指定することもできます。You can let the view access the document's data members directly, or you can provide member functions in the document class for the view class to call.

ドキュメントのデータが変更されると、その変更を担当するビューは通常、ドキュメントの CDocument:: UpdateAllViews 関数を呼び出します。これにより、それぞれのメンバー関数を呼び出すことによって、他のすべてのビューに通知さ OnUpdate れます。When a document's data changes, the view responsible for the changes typically calls the CDocument::UpdateAllViews function for the document, which notifies all the other views by calling the OnUpdate member function for each. の既定の実装では OnUpdate 、ビューのクライアント領域全体が無効になります。The default implementation of OnUpdate invalidates the view's entire client area. これをオーバーライドして、ドキュメントの変更部分にマップされているクライアント領域の領域のみを無効にすることができます。You can override it to invalidate only those regions of the client area that map to the modified portions of the document.

を使用するには CView 、そこからクラスを派生させ、そのメンバー関数を実装して OnDraw 画面表示を実行します。To use CView, derive a class from it and implement the OnDraw member function to perform screen display. また、を使用し OnDraw て印刷と印刷プレビューを実行することもできます。You can also use OnDraw to perform printing and print preview. フレームワークは、ドキュメントを印刷およびプレビューするための print ループを処理します。The framework handles the print loop for printing and previewing your document.

ビューでは、 cwnd:: OnHScroll および Cwnd:: onvscroll メンバー関数を使用して、スクロールバーメッセージを処理します。A view handles scroll-bar messages with the CWnd::OnHScroll and CWnd::OnVScroll member functions. これらの関数では、スクロールバーのメッセージ処理を実装できます。または、 CView 派生クラス CScrollView を使用して、スクロールを処理することもできます。You can implement scroll-bar message handling in these functions, or you can use the CView derived class CScrollView to handle scrolling for you.

また CScrollView 、Microsoft Foundation Class ライブラリには、から派生した9つの他のクラスが用意されてい CView ます。Besides CScrollView, the Microsoft Foundation Class Library provides nine other classes derived from CView:

  • CCtrlViewは、ツリー、リスト、およびリッチエディットコントロールでドキュメントビューアーキテクチャを使用できるようにするビューです。CCtrlView, a view that allows usage of document - view architecture with tree, list, and rich edit controls.

  • CDaoRecordView。ダイアログボックスコントロールにデータベースレコードを表示するビューです。CDaoRecordView, a view that displays database records in dialog-box controls.

  • 単一行テキストエディターを提供するCEditViewビュー。CEditView, a view that provides a simple multiline text editor. オブジェクトは、 CEditView ダイアログボックス内のコントロールとしても、ドキュメント上のビューとしても使用できます。You can use a CEditView object as a control in a dialog box as well as a view on a document.

  • CFormView: ダイアログボックスコントロールを含み、ダイアログテンプレートリソースに基づく、スクロール可能なビューです。CFormView, a scrollable view that contains dialog-box controls and is based on a dialog template resource.

  • CListView。リストコントロールでドキュメントビューアーキテクチャを使用できるようにするビューです。CListView, a view that allows usage of document - view architecture with list controls.

  • CRecordView: ダイアログボックスコントロールにデータベースレコードを表示するビューです。CRecordView, a view that displays database records in dialog-box controls.

  • CRichEditViewは、リッチエディットコントロールによるドキュメントビューアーキテクチャの使用を可能にするビューです。CRichEditView, a view that allows usage of document - view architecture with rich edit controls.

  • CScrollViewは、スクロールサポートを自動的に提供するビューです。CScrollView, a view that automatically provides scrolling support.

  • CTreeViewは、ツリーコントロールでドキュメントビューアーキテクチャを使用できるようにするビューです。CTreeView, a view that allows usage of document - view architecture with tree controls.

クラスには CView 、という名前の派生実装クラスもあります CPreviewView 。これは、印刷プレビューを実行するためにフレームワークによって使用されます。The CView class also has a derived implementation class named CPreviewView, which is used by the framework to perform print previewing. このクラスは、印刷プレビューウィンドウに固有の機能をサポートしています。たとえば、ツールバー、単一ページまたは2ページのプレビュー、ズーム、つまり、プレビューされているイメージを拡大します。This class provides support for the features unique to the print-preview window, such as a toolbar, single- or double-page preview, and zooming, that is, enlarging the previewed image. CPreviewView印刷プレビュー用の独自のインターフェイスを実装する場合 (印刷プレビューモードでの編集をサポートする場合など) は、のメンバー関数を呼び出すこともオーバーライドする必要もありません。You don't need to call or override any of CPreviewView's member functions unless you want to implement your own interface for print preview (for example, if you want to support editing in print preview mode). の使用方法の詳細について CView は、「 ドキュメント/ビューのアーキテクチャ印刷」を参照してください。For more information on using CView, see Document/View Architecture and Printing. また、印刷プレビューのカスタマイズの詳細については、「 テクニカルノート 30 」を参照してください。In addition, see Technical Note 30 for more details on customizing print preview.

継承階層Inheritance Hierarchy

CObjectCObject

CCmdTargetCCmdTarget

CWndCWnd

CView

要件Requirements

ヘッダー: afxwin.hHeader: afxwin.h

CView:: CViewCView::CView

CView オブジェクトを構築します。Constructs a CView object.

CView();

解説Remarks

フレームワークは、新しいフレームウィンドウが作成されたとき、またはウィンドウが分割されたときにコンストラクターを呼び出します。The framework calls the constructor when a new frame window is created or a window is split. OnInitialUpdateメンバー関数をオーバーライドして、ドキュメントが添付された後にビューを初期化します。Override the OnInitialUpdate member function to initialize the view after the document is attached.

CView::D oPreparePrintingCView::DoPreparePrinting

OnPreparePrintingのオーバーライドからこの関数を呼び出して、[印刷] ダイアログボックスを呼び出し、プリンターデバイスコンテキストを作成します。Call this function from your override of OnPreparePrinting to invoke the Print dialog box and create a printer device context.

BOOL DoPreparePrinting(CPrintInfo* pInfo);

パラメーターParameters

pInfopInfo
現在の印刷ジョブを表す CPrintInfo 構造体を指し示します。Points to a CPrintInfo structure that describes the current print job.

戻り値Return Value

印刷または印刷プレビューを開始できる場合は0以外の。操作が取り消された場合は0。Nonzero if printing or print preview can begin; 0 if the operation has been canceled.

解説Remarks

この関数の動作は、( m_bPreview pInfo パラメーターのメンバーによって指定された) 印刷または印刷プレビューに対して呼び出されているかどうかによって異なります。This function's behavior depends on whether it is being called for printing or print preview (specified by the m_bPreview member of the pInfo parameter). ファイルが印刷されている場合、この関数は、 pInfo が指す CPrintInfo構造体の値を使用して、[印刷] ダイアログボックスを呼び出します。ユーザーがダイアログボックスを閉じた後、この関数は、ダイアログボックスで指定されたユーザー設定に基づいてプリンターデバイスコンテキストを作成し、 pInfo パラメーターを使用してこのデバイスコンテキストを返します。If a file is being printed, this function invokes the Print dialog box, using the values in the CPrintInfo structure that pInfo points to; after the user has closed the dialog box, the function creates a printer device context based on settings the user specified in the dialog box and returns this device context through the pInfo parameter. このデバイスコンテキストは、ドキュメントを印刷するために使用されます。This device context is used to print the document.

ファイルがプレビューされている場合、この関数は現在のプリンター設定を使用してプリンターデバイスコンテキストを作成します。このデバイスコンテキストは、プレビュー期間中にプリンターをシミュレートするために使用されます。If a file is being previewed, this function creates a printer device context using the current printer settings; this device context is used for simulating the printer during preview.

CView:: GetDocumentCView::GetDocument

ビューのドキュメントへのポインターを取得するには、この関数を呼び出します。Call this function to get a pointer to the view's document.

CDocument* GetDocument() const;

戻り値Return Value

ビューに関連付けられている CDocument オブジェクトへのポインター。A pointer to the CDocument object associated with the view. ビューがドキュメントにアタッチされていない場合は NULL です。NULL if the view is not attached to a document.

解説Remarks

これにより、ドキュメントのメンバー関数を呼び出すことができます。This allows you to call the document's member functions.

CView:: IsSelectedCView::IsSelected

指定されたドキュメント項目が選択されているかどうかを確認するために、フレームワークによって呼び出されます。Called by the framework to check whether the specified document item is selected.

virtual BOOL IsSelected(const CObject* pDocItem) const;

パラメーターParameters

pDocItempDocItem
テスト対象のドキュメント項目をポイントします。Points to the document item being tested.

戻り値Return Value

指定されたドキュメント項目が選択されている場合は0以外の。それ以外の場合は0です。Nonzero if the specified document item is selected; otherwise 0.

解説Remarks

この関数の既定の実装では、FALSE が返されます。The default implementation of this function returns FALSE. CDocItemオブジェクトを使用して選択を実装する場合は、この関数をオーバーライドします。Override this function if you are implementing selection using CDocItem objects. ビューに OLE 項目が含まれている場合は、この関数をオーバーライドする必要があります。You must override this function if your view contains OLE items.

CView:: OnアクティブフレームCView::OnActivateFrame

ビューを含むフレームウィンドウがアクティブ化または非アクティブ化されたときにフレームワークによって呼び出されます。Called by the framework when the frame window containing the view is activated or deactivated.

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

パラメーターParameters

nStatenState
フレームウィンドウをアクティブまたは非アクティブにするかどうかを指定します。Specifies whether the frame window is being activated or deactivated. 次のいずれかの値を指定できます。It can be one of the following values:

  • フレームウィンドウが非アクティブ化されて WA_INACTIVE。WA_INACTIVE The frame window is being deactivated.

  • マウスクリック以外の何らかの方法 (たとえば、キーボードインターフェイスを使用してウィンドウを選択するなど) によってフレームウィンドウがアクティブ化されている WA_ACTIVE ます。WA_ACTIVE The frame window is being activated through some method other than a mouse click (for example, by use of the keyboard interface to select the window).

  • フレームウィンドウがマウスクリックによってアクティブ化されている WA_CLICKACTIVEWA_CLICKACTIVE The frame window is being activated by a mouse click

pFrameWndpFrameWnd
アクティブにするフレームウィンドウへのポインター。Pointer to the frame window that is to be activated.

解説Remarks

ビューに関連付けられているフレームウィンドウがアクティブ化または非アクティブ化されたときに特殊な処理を実行する場合は、このメンバー関数をオーバーライドします。Override this member function if you want to perform special processing when the frame window associated with the view is activated or deactivated. たとえば、ctrl を使用すると、フォーカスがあるコントロールを保存および復元するときに、このオーバーライド が実行さ れます。For example, CFormView performs this override when it saves and restores the control that has focus.

CView:: OnアクティブビューCView::OnActivateView

ビューがアクティブ化または非アクティブ化されたときにフレームワークによって呼び出されます。Called by the framework when a view is activated or deactivated.

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

パラメーターParameters

bActivatebActivate
ビューがアクティブ化または非アクティブ化されているかどうかを示します。Indicates whether the view is being activated or deactivated.

PアクティブビューpActivateView
アクティブ化されているビューオブジェクトを指します。Points to the view object that is being activated.

pDeactiveViewpDeactiveView
非アクティブ化されているビューオブジェクトを指します。Points to the view object that is being deactivated.

解説Remarks

この関数の既定の実装では、アクティブになっているビューにフォーカスが設定されます。The default implementation of this function sets the focus to the view being activated. ビューがアクティブ化または非アクティブ化されたときに特別な処理を実行する場合は、この関数をオーバーライドします。Override this function if you want to perform special processing when a view is activated or deactivated. たとえば、アクティブなビューを非アクティブなビューと区別する特別な視覚的な手掛かりを提供する場合は、 Bactivate パラメーターを調べ、それに応じてビューの外観を更新します。For example, if you want to provide special visual cues that distinguish the active view from the inactive views, you would examine the bActivate parameter and update the view's appearance accordingly.

アプリケーションのメインフレームウィンドウがアクティブビューで変更されずにアクティブになっている場合 (たとえば、フォーカスがアプリケーション内で別のアプリケーションから別のアプリケーションに移動されている場合や、MDI 子ウィンドウ間を切り替える場合など) は、 Pactivateview パラメーターと pdeactiveview パラメーターが同じビューを指します。The pActivateView and pDeactiveView parameters point to the same view if the application's main frame window is activated with no change in the active view — for example, if the focus is being transferred from another application to this one, rather than from one view to another within the application or when switching amongst MDI child windows. これにより、必要に応じてビューでパレットを再認識できます。This allows a view to re-realize its palette, if needed.

Cframewnd:: getactiveviewが返されるのとは異なるビューでCframewnd:: setactiveviewが呼び出された場合、これらのパラメーターは異なります。These parameters differ when CFrameWnd::SetActiveView is called with a view that is different from what CFrameWnd::GetActiveView would return. これは、ほとんどの場合、分割ウィンドウで発生します。This happens most often with splitter windows.

CView:: OnBeginPrintingCView::OnBeginPrinting

OnPreparePrinting が呼び出された後で、印刷または印刷プレビュー ジョブの開始時にフレームワークによって呼び出されます。Called by the framework at the beginning of a print or print preview job, after OnPreparePrinting has been called.

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

パラメーターParameters

pDCpDC
プリンター デバイス コンテキストを指し示します。Points to the printer device context.

pInfopInfo
現在の印刷ジョブを表す CPrintInfo 構造体を指し示します。Points to a CPrintInfo structure that describes the current print job.

解説Remarks

この関数の既定の実装は、何も行いません。The default implementation of this function does nothing. この関数をオーバーライドして、特に印刷のために必要な GDI リソース (ペン、フォントなど) を割り当てます。Override this function to allocate any GDI resources, such as pens or fonts, needed specifically for printing. OnPrint メンバー関数内から、デバイス コンテキストの GDI オブジェクトを、それらを使用する各ページ用に選択します。Select the GDI objects into the device context from within the OnPrint member function for each page that uses them. 同じビュー オブジェクトを使用して画面の表示と印刷の両方を実行している場合は、各表示に必要な GDI リソースに別個の変数を使用します。これにより、印刷時に画面を更新することができます。If you are using the same view object to perform both screen display and printing, use separate variables for the GDI resources needed for each display; this allows you to update the screen during printing.

さらに、この関数を使用して、プリンター デバイス コンテキストのプロパティに依存する初期化を実行することもできます。You can also use this function to perform initializations that depend on properties of the printer device context. たとえば、ドキュメントを印刷するために必要なページ数は、印刷ダイアログ ボックスでユーザーが指定した設定 (たとえば、ページの長さ) によって異なる可能性があります。For example, the number of pages needed to print the document may depend on settings that the user specified from the Print dialog box (such as page length). そのような場合は、通常行うように OnPreparePrinting メンバー関数にドキュメントの長さを指定することはできません。ダイアログ ボックスの設定に基づいてプリンター デバイス コンテキストが作成されるまで待機する必要があります。In such a situation, you cannot specify the document length in the OnPreparePrinting member function, where you would normally do so; you must wait until the printer device context has been created based on the dialog box settings. OnBeginPrinting は、プリンター デバイス コンテキストを表す CDC オブジェクトにアクセスできる初めてのオーバーライド可能な関数です。したがって、この関数からドキュメントの長さを設定することができます。OnBeginPrinting is the first overridable function that gives you access to the CDC object representing the printer device context, so you can set the document length from this function. この時点でドキュメントの長さを指定しない場合、印刷プレビュー時にスクロール バーは表示されません。Note that if the document length is not specified by this time, a scroll bar is not displayed during print preview.

CView:: OnDragEnterCView::OnDragEnter

ドロップ先ウィンドウのスクロールしない領域にマウスが最初に入ったときにフレームワークによって呼び出されます。Called by the framework when the mouse first enters the non-scrolling region of the drop target window.

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

パラメーターParameters

pDataObjectpDataObject
ビューのドロップ領域にドラッグされている COleDataObject をポイントします。Points to the COleDataObject being dragged into the drop area of the view.

dwKeyStatedwKeyState
修飾子キーの状態を格納します。Contains the state of the modifier keys. これは、MK_CONTROL、MK_SHIFT、MK_ALT、MK_LBUTTON、MK_MBUTTON、および MK_RBUTTON の任意の数を組み合わせたものです。This is a combination of any number of the following: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON, and MK_RBUTTON.

視点point
ビューのクライアント領域を基準とする、現在のマウスの位置。The current mouse position relative to the client area of the view.

戻り値Return Value

DROPEFFECT 列挙型の値。ユーザーがこの位置でオブジェクトをドロップした場合に発生するドロップの種類を示します。A value from the DROPEFFECT enumerated type, which indicates the type of drop that would occur if the user dropped the object at this position. 通常、ドロップの種類は、 Dwkeystate によって示される現在のキーの状態に依存します。The type of drop usually depends on the current key state indicated by dwKeyState. キーの状態と DROPEFFECT の値の標準マッピングは次のとおりです。A standard mapping of keystates to DROPEFFECT values is:

  • このウィンドウでは、データオブジェクトを削除することはできません DROPEFFECT_NONE。DROPEFFECT_NONE The data object cannot be dropped in this window.

  • MK_CONTROL MK_SHIFT | の DROPEFFECT_LINK では、オブジェクトとそのサーバーとの間にリンケージが作成されます。DROPEFFECT_LINK for MK_CONTROL | MK_SHIFT Creates a linkage between the object and its server.

  • MK_CONTROL の DROPEFFECT_COPY は、削除されたオブジェクトのコピーを作成します。DROPEFFECT_COPY for MK_CONTROL Creates a copy of the dropped object.

  • MK_ALT の DROPEFFECT_MOVE は、削除されたオブジェクトのコピーを作成し、元のオブジェクトを削除します。DROPEFFECT_MOVE for MK_ALT Creates a copy of the dropped object and delete the original object. これは、通常、ビューがこのデータオブジェクトを受け入れることができる場合の既定のドロップ効果です。This is typically the default drop effect, when the view can accept this data object.

詳細については、MFC の高度な概念のサンプル OCLIENTを参照してください。For more information, see the MFC Advanced Concepts sample OCLIENT.

解説Remarks

既定の実装では、何も行わずに DROPEFFECT_NONE を返します。Default implementation is to do nothing and return DROPEFFECT_NONE.

この関数をオーバーライドして、 OnDragOver メンバー関数の今後の呼び出しに備えるようにします。Override this function to prepare for future calls to the OnDragOver member function. この時点でデータオブジェクトから必要なデータを取得して、後でメンバー関数で使用する必要があり OnDragOver ます。Any data required from the data object should be retrieved at this time for later use in the OnDragOver member function. この時点でビューを更新して、ユーザーに視覚的なフィードバックを提供する必要もあります。The view should also be updated at this time to give the user visual feedback. 詳細については、「 OLE ドラッグアンドドロップ: drop target を実装する」を参照してください。For more information, see the article OLE drag and drop: Implement a drop target.

CView:: OnDragLeaveCView::OnDragLeave

マウスがそのウィンドウの有効なドロップ領域の外に移動したときに、ドラッグ操作中にフレームワークによって呼び出されます。Called by the framework during a drag operation when the mouse is moved out of the valid drop area for that window.

virtual void OnDragLeave();

解説Remarks

現在のビューが Ondragenter または OnDragOver の呼び出し中に実行されるアクションをクリーンアップする必要がある場合 (オブジェクトをドラッグアンドドロップしたときにビジュアルユーザーフィードバックを削除する場合など) は、この関数をオーバーライドします。Override this function if the current view needs to clean up any actions taken during OnDragEnter or OnDragOver calls, such as removing any visual user feedback while the object was dragged and dropped.

CView:: OnDragOverCView::OnDragOver

マウスをドロップ先のウィンドウ上に移動したときに、ドラッグ操作中にフレームワークによって呼び出されます。Called by the framework during a drag operation when the mouse is moved over the drop target window.

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

パラメーターParameters

pDataObjectpDataObject
ドロップ先の上にドラッグされている COleDataObject をポイントします。Points to the COleDataObject being dragged over the drop target.

dwKeyStatedwKeyState
修飾子キーの状態を格納します。Contains the state of the modifier keys. これは、MK_CONTROL、MK_SHIFT、MK_ALT、MK_LBUTTON、MK_MBUTTON、および MK_RBUTTON の任意の数を組み合わせたものです。This is a combination of any number of the following: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON, and MK_RBUTTON.

視点point
ビュークライアント領域を基準とした、現在のマウス位置。The current mouse position relative to the view client area.

戻り値Return Value

DROPEFFECT 列挙型の値。ユーザーがこの位置でオブジェクトをドロップした場合に発生するドロップの種類を示します。A value from the DROPEFFECT enumerated type, which indicates the type of drop that would occur if the user dropped the object at this position. Drop の種類は、通常、 Dwkeystate によって示される現在のキーの状態によって異なります。The type of drop often depends on the current key state as indicated by dwKeyState. キーの状態と DROPEFFECT の値の標準マッピングは次のとおりです。A standard mapping of keystates to DROPEFFECT values is:

  • このウィンドウでは、データオブジェクトを削除することはできません DROPEFFECT_NONE。DROPEFFECT_NONE The data object cannot be dropped in this window.

  • MK_CONTROL MK_SHIFT | の DROPEFFECT_LINK では、オブジェクトとそのサーバーとの間にリンケージが作成されます。DROPEFFECT_LINK for MK_CONTROL | MK_SHIFT Creates a linkage between the object and its server.

  • MK_CONTROL の DROPEFFECT_COPY は、削除されたオブジェクトのコピーを作成します。DROPEFFECT_COPY for MK_CONTROL Creates a copy of the dropped object.

  • MK_ALT の DROPEFFECT_MOVE は、削除されたオブジェクトのコピーを作成し、元のオブジェクトを削除します。DROPEFFECT_MOVE for MK_ALT Creates a copy of the dropped object and delete the original object. これは、通常、ビューがデータオブジェクトを受け取ることができる場合の既定のドロップ効果です。This is typically the default drop effect, when the view can accept the data object.

詳細については、MFC の高度な概念のサンプル OCLIENTを参照してください。For more information, see the MFC Advanced Concepts sample OCLIENT.

解説Remarks

既定の実装では、何も行わずに DROPEFFECT_NONE が返されます。The default implementation is to do nothing and return DROPEFFECT_NONE.

この関数をオーバーライドして、ドラッグ操作中の視覚的なフィードバックをユーザーに提供します。Override this function to give the user visual feedback during the drag operation. この関数は継続的に呼び出されるため、その中に含まれるコードはできるだけ最適化する必要があります。Since this function is called continuously, any code contained within it should be optimized as much as possible. 詳細については、「 OLE ドラッグアンドドロップ: drop target を実装する」を参照してください。For more information, see the article OLE drag and drop: Implement a drop target.

CView:: OnDragScrollCView::OnDragScroll

OndragenterまたはOnDragOverを呼び出す前にフレームワークによって呼び出され、ポイントがスクロール領域にあるかどうかを判断します。Called by the framework before calling OnDragEnter or OnDragOver to determine whether the point is in the scrolling region.

virtual DROPEFFECT OnDragScroll(
    DWORD dwKeyState,
    CPoint point);

パラメーターParameters

dwKeyStatedwKeyState
修飾子キーの状態を格納します。Contains the state of the modifier keys. これは、MK_CONTROL、MK_SHIFT、MK_ALT、MK_LBUTTON、MK_MBUTTON、および MK_RBUTTON の任意の数を組み合わせたものです。This is a combination of any number of the following: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON, and MK_RBUTTON.

視点point
画面を基準とした、カーソルの位置 (ピクセル単位) を格納します。Contains the location of the cursor, in pixels, relative to the screen.

戻り値Return Value

DROPEFFECT 列挙型の値。ユーザーがこの位置でオブジェクトをドロップした場合に発生するドロップの種類を示します。A value from the DROPEFFECT enumerated type, which indicates the type of drop that would occur if the user dropped the object at this position. 通常、ドロップの種類は、 Dwkeystate によって示される現在のキーの状態に依存します。The type of drop usually depends on the current key state indicated by dwKeyState. キーの状態と DROPEFFECT の値の標準マッピングは次のとおりです。A standard mapping of keystates to DROPEFFECT values is:

  • このウィンドウでは、データオブジェクトを削除することはできません DROPEFFECT_NONE。DROPEFFECT_NONE The data object cannot be dropped in this window.

  • MK_CONTROL MK_SHIFT | の DROPEFFECT_LINK では、オブジェクトとそのサーバーとの間にリンケージが作成されます。DROPEFFECT_LINK for MK_CONTROL | MK_SHIFT Creates a linkage between the object and its server.

  • MK_CONTROL の DROPEFFECT_COPY は、削除されたオブジェクトのコピーを作成します。DROPEFFECT_COPY for MK_CONTROL Creates a copy of the dropped object.

  • MK_ALT の DROPEFFECT_MOVE は、削除されたオブジェクトのコピーを作成し、元のオブジェクトを削除します。DROPEFFECT_MOVE for MK_ALT Creates a copy of the dropped object and delete the original object.

  • DROPEFFECT_SCROLL は、ドラッグのスクロール操作が実行されるか、または対象のビューで発生することを示します。DROPEFFECT_SCROLL Indicates that a drag scroll operation is about to occur or is occurring in the target view.

詳細については、MFC の高度な概念のサンプル OCLIENTを参照してください。For more information, see the MFC Advanced Concepts sample OCLIENT.

解説Remarks

このイベントに特別な動作を提供する場合は、この関数をオーバーライドします。Override this function when you want to provide special behavior for this event. 既定の実装では、カーソルが各ウィンドウの境界内の既定のスクロール領域にドラッグされると、ウィンドウが自動的にスクロールされます。The default implementation automatically scrolls windows when the cursor is dragged into the default scroll region inside the border of each window. 詳細については、「 OLE ドラッグアンドドロップ: drop target を実装する」を参照してください。For more information, see the article OLE drag and drop: Implement a drop target.

CView:: OnDrawCView::OnDraw

ドキュメントのイメージをレンダリングするためにフレームワークによって呼び出されます。Called by the framework to render an image of the document.

virtual void OnDraw(CDC* pDC) = 0;

パラメーターParameters

pDCpDC
ドキュメントのイメージを描画するために使用されるデバイスコンテキストを指します。Points to the device context to be used for rendering an image of the document.

解説Remarks

フレームワークは、画面の表示、印刷、および印刷プレビューを実行するためにこの関数を呼び出し、それぞれのケースで異なるデバイスコンテキストを渡します。The framework calls this function to perform screen display, printing, and print preview, and it passes a different device context in each case. 既定の実装はありません。There is no default implementation.

ドキュメントのビューを表示するには、この関数をオーバーライドする必要があります。You must override this function to display your view of the document. PDC パラメーターが指す CDCオブジェクトを使用して、グラフィックデバイスインターフェイス (GDI) 呼び出しを行うことができます。You can make graphic device interface (GDI) calls using the CDC object pointed to by the pDC parameter. 描画する前に、ペンやフォントなどの GDI リソースをデバイスコンテキストに選択し、後で選択を解除することができます。You can select GDI resources, such as pens or fonts, into the device context before drawing and then deselect them afterwards. 多くの場合、描画コードはデバイスに依存しないことがあります。つまり、画像を表示しているデバイスの種類に関する情報は必要ありません。Often your drawing code can be device-independent; that is, it doesn't require information about what type of device is displaying the image.

描画を最適化するには、デバイスコンテキストの RectVisible メンバー関数を呼び出して、特定の四角形が描画されるかどうかを確認します。To optimize drawing, call the RectVisible member function of the device context to find out whether a given rectangle will be drawn. 通常の画面表示と印刷を区別する必要がある場合は、デバイスコンテキストの IsPrinting メンバー関数を呼び出します。If you need to distinguish between normal screen display and printing, call the IsPrinting member function of the device context.

CView:: OnDropCView::OnDrop

ユーザーが有効なドロップターゲットを介してデータオブジェクトを解放したときに、フレームワークによって呼び出されます。Called by the framework when the user releases a data object over a valid drop target.

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

パラメーターParameters

' pDataObject * は、ドロップ先にドロップされる COleDataObject をポイントします。`pDataObject* Points to the COleDataObject that is dropped into the drop target.

dropEffectdropEffect
ユーザーが要求したドロップ効果。The drop effect that the user has requested.

  • DROPEFFECT_COPY によって、削除されるデータオブジェクトのコピーが作成されます。DROPEFFECT_COPY Creates a copy of the data object being dropped.

  • DROPEFFECT_MOVE は、データオブジェクトを現在のマウスの位置に移動します。DROPEFFECT_MOVE Moves the data object to the current mouse location.

  • DROPEFFECT_LINK は、データオブジェクトとそのサーバーとの間にリンクを作成します。DROPEFFECT_LINK Creates a link between a data object and its server.

視点point
ビュークライアント領域を基準とした、現在のマウス位置。The current mouse position relative to the view client area.

戻り値Return Value

削除に成功した場合は0以外の。それ以外の場合は0です。Nonzero if the drop was successful; otherwise 0.

解説Remarks

既定の実装では、何も実行されず、FALSE が返されます。The default implementation does nothing and returns FALSE.

この関数をオーバーライドすると、ビューのクライアント領域への OLE ドロップの効果が実装されます。Override this function to implement the effect of an OLE drop into the client area of the view. データオブジェクトは、指定されたポイントでクリップボードのデータ形式とデータが削除されるように Pdataobject を使用して調べることができます。The data object can be examined via pDataObject for Clipboard data formats and data dropped at the specified point.

注意

このビュークラスで OnDropEx に対するオーバーライドがある場合、フレームワークはこの関数を呼び出しません。The framework does not call this function if there is an override to OnDropEx in this view class.

CView:: OnDropExCView::OnDropEx

ユーザーが有効なドロップターゲットを介してデータオブジェクトを解放したときに、フレームワークによって呼び出されます。Called by the framework when the user releases a data object over a valid drop target.

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

パラメーターParameters

pDataObjectpDataObject
ドロップ先にドロップされる COleDataObject をポイントします。Points to the COleDataObject that is dropped into the drop target.

dropDefaultdropDefault
ユーザーが現在のキーの状態に基づいて既定のドロップ操作を選択した場合の効果。The effect that the user chose for the default drop operation based on the current key state. DROPEFFECT_NONE の可能性があります。It may be DROPEFFECT_NONE. ドロップ効果については、「解説」を参照してください。Drop effects are discussed in the Remarks section.

ドロップdropList
ドロップソースがサポートするドロップ効果の一覧。A list of the drop effects that the drop source supports. ドロップ効果の値は、ビットごとの OR ( |) 演算を使用して組み合わせることができます。Drop effect values can be combined using the bitwise OR ( |) operation. ドロップ効果については、「解説」を参照してください。Drop effects are discussed in the Remarks section.

視点point
ビュークライアント領域を基準とした、現在のマウス位置。The current mouse position relative to the view client area.

戻り値Return Value

ポイント によって指定された位置での削除が試行された結果のドロップ効果。The drop effect that resulted from the drop attempt at the location specified by point. これは、 dropEffectList によって示される値のいずれかである必要があります。This must be one of the values indicated by dropEffectList. ドロップ効果については、「解説」を参照してください。Drop effects are discussed in the Remarks section.

解説Remarks

既定の実装では、何も行わず、ダミーの値 (-1) を返して、フレームワークが OnDrop ハンドラーを呼び出す必要があることを示します。The default implementation is to do nothing and return a dummy value ( -1 ) to indicate that the framework should call the OnDrop handler.

マウスの右ボタンのドラッグアンドドロップの効果を実装するには、この関数をオーバーライドします。Override this function to implement the effect of an right mouse-button drag and drop. マウスの右ボタンのドラッグアンドドロップでは、通常、マウスの右ボタンが離されたときに選択肢のメニューが表示されます。Right mouse-button drag and drop typically displays a menu of choices when the right mouse-button is released.

をオーバーライドすると、 OnDropEx マウスの右ボタンを照会する必要があります。Your override of OnDropEx should query for the right mouse-button. Getkeystateを呼び出すか、 ondragenterハンドラーからマウスの右ボタンの状態を格納することができます。You can call GetKeyState or store the right mouse-button state from your OnDragEnter handler.

  • マウスの右ボタンが押されていない場合は、ドロップソースによるドロップ効果のサポートを提供するポップアップメニューがオーバーライドによって表示されます。If the right mouse-button is down, your override should display a popup menu which offers the drop effects support by the drop source.

    • ドロップ ダウン を調べて、ドロップソースでサポートされているドロップ効果を確認します。Examine dropList to determine the drop effects supported by the drop source. ポップアップメニューでは、これらの操作のみを有効にします。Enable only these actions on the popup menu.

    • Setmenudefaultitemを使用して、 dropdefault に基づいて既定のアクションを設定します。Use SetMenuDefaultItem to set the default action based on dropDefault.

    • 最後に、ポップアップメニューからユーザーが選択した操作を実行します。Finally, take the action indicated by the user selection from the popup menu.

  • マウスの右ボタンが押されていない場合は、オーバーライドでこれを標準のドロップ要求として処理する必要があります。If the right mouse-button is not down, your override should process this as a standard drop request. Dropdefault に指定されているドロップ効果を使用します。Use the drop effect specified in dropDefault. または、オーバーライドによってダミー値 (-1) を返すことで、がこのドロップ操作を処理することを示すことができ OnDrop ます。Alternately, your override can return the dummy value ( -1 ) to indicate that OnDrop will handle this drop operation.

Pdataobject を使用して、 COleDataObject 指定したポイントでクリップボードのデータ形式とデータが削除されているかどうかを調べます。Use pDataObject to examine the COleDataObject for Clipboard data format and data dropped at the specified point.

ドロップ効果は、ドロップ操作に関連付けられているアクションを記述します。Drop effects describe the action associated with a drop operation. 次のドロップ効果の一覧を参照してください。See the following list of drop effects:

  • DROPEFFECT_NONE 削除は許可されません。DROPEFFECT_NONE A drop would not be allowed.

  • DROPEFFECT_COPY コピー操作が実行されます。DROPEFFECT_COPY A copy operation would be performed.

  • 移動操作が実行さ DROPEFFECT_MOVE ます。DROPEFFECT_MOVE A move operation would be performed.

  • DROPEFFECT_LINK、削除されたデータから元のデータへのリンクが確立されます。DROPEFFECT_LINK A link from the dropped data to the original data would be established.

  • DROPEFFECT_SCROLL は、ドラッグのスクロール操作が実行されるか、またはターゲットで発生することを示します。DROPEFFECT_SCROLL Indicates that a drag scroll operation is about to occur or is occurring in the target.

既定のメニューコマンドの設定の詳細については、このボリュームの Windows SDK およびCMenu:: GetSafeHmenuSetmenudefaultitemに関する説明を参照してください。For more information on setting the default menu command, see SetMenuDefaultItem in the Windows SDK and CMenu::GetSafeHmenu in this volume.

CView:: OnEndPrintingCView::OnEndPrinting

ドキュメントが印刷またはプレビューされた後に、フレームワークによって呼び出されます。Called by the framework after a document has been printed or previewed.

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

パラメーターParameters

pDCpDC
プリンター デバイス コンテキストを指し示します。Points to the printer device context.

pInfopInfo
現在の印刷ジョブを表す CPrintInfo 構造体を指し示します。Points to a CPrintInfo structure that describes the current print job.

解説Remarks

この関数の既定の実装は、何も行いません。The default implementation of this function does nothing. この関数をオーバーライドすると、 OnBeginPrinting メンバー関数で割り当てた GDI リソースがすべて解放されます。Override this function to free any GDI resources you allocated in the OnBeginPrinting member function.

CView:: OnEndPrintPreviewCView::OnEndPrintPreview

ユーザーが印刷プレビューモードを終了したときにフレームワークによって呼び出されます。Called by the framework when the user exits print preview mode.

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

パラメーターParameters

pDCpDC
プリンター デバイス コンテキストを指し示します。Points to the printer device context.

pInfopInfo
現在の印刷ジョブを表す CPrintInfo 構造体を指し示します。Points to a CPrintInfo structure that describes the current print job.

視点point
最後にプレビューモードで表示されたページ上のポイントを指定します。Specifies the point on the page that was last displayed in preview mode.

pViewpView
プレビューに使用されるビューオブジェクトを指します。Points to the view object used for previewing.

解説Remarks

この関数の既定の実装では、 OnEndPrinting メンバー関数が呼び出され、メインフレームウィンドウが、印刷プレビューの開始前の状態に復元されます。The default implementation of this function calls the OnEndPrinting member function and restores the main frame window to the state it was in before print preview began. プレビューモードが終了したときに特別な処理を実行するには、この関数をオーバーライドします。Override this function to perform special processing when preview mode is terminated. たとえば、プレビューモードから通常の表示モードに切り替えるときにドキュメント内のユーザーの位置を維持するには、 ポイント パラメーターと、 m_nCurPage CPrintInfo pInfo パラメーターが指す構造体のメンバーによって表される位置までスクロールします。For example, if you want to maintain the user's position in the document when switching from preview mode to normal display mode, you can scroll to the position described by the point parameter and the m_nCurPage member of the CPrintInfo structure that the pInfo parameter points to.

常に、 OnEndPrintPreview 関数の最後でオーバーライドから基本クラスバージョンのを呼び出します。Always call the base class version of OnEndPrintPreview from your override, typically at the end of the function.

CView:: OnInitialUpdateCView::OnInitialUpdate

最初にビューがドキュメントにアタッチされた後、最初にビューが表示される前に、フレームワークによって呼び出されます。Called by the framework after the view is first attached to the document, but before the view is initially displayed.

virtual void OnInitialUpdate();

解説Remarks

この関数の既定の実装では、ヒント情報を指定せずに OnUpdate メンバー関数を呼び出します (つまり、 lhint パラメーターには0、 PHINT パラメーターには NULL を使用します)。The default implementation of this function calls the OnUpdate member function with no hint information (that is, using the default values of 0 for the lHint parameter and NULL for the pHint parameter). ドキュメントに関する情報を必要とする1回限りの初期化を実行するには、この関数をオーバーライドします。Override this function to perform any one-time initialization that requires information about the document. たとえば、アプリケーションに固定サイズのドキュメントがある場合、この関数を使用すると、ドキュメントのサイズに基づいて、ビューのスクロール制限を初期化できます。For example, if your application has fixed-sized documents, you can use this function to initialize a view's scrolling limits based on the document size. アプリケーションで可変サイズのドキュメントがサポートされている場合、ドキュメントが変更されるたびにスクロール制限を更新するには、 OnUpdate を使用します。If your application supports variable-sized documents, use OnUpdate to update the scrolling limits every time the document changes.

CView:: OnPrepareDCCView::OnPrepareDC

OnDrawメンバー関数が画面に表示される前にフレームワークによって呼び出されます。また、印刷中または印刷プレビュー中に、各ページに対してOnPrintメンバー関数が呼び出される前に、フレームワークによって呼び出されます。Called by the framework before the OnDraw member function is called for screen display and before the OnPrint member function is called for each page during printing or print preview.

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

パラメーターParameters

pDCpDC
ドキュメントのイメージを描画するために使用されるデバイスコンテキストを指します。Points to the device context to be used for rendering an image of the document.

pInfopInfo
OnPrepareDC が印刷または印刷プレビューの対象として呼び出されている場合は、現在の印刷ジョブを説明する CPrintInfo 構造体を指します。メンバーは、 m_nCurPage 印刷するページを指定します。Points to a CPrintInfo structure that describes the current print job if OnPrepareDC is being called for printing or print preview; the m_nCurPage member specifies the page about to be printed. OnPrepareDC画面表示のためにが呼び出されている場合、このパラメーターは NULL になります。This parameter is NULL if OnPrepareDC is being called for screen display.

解説Remarks

この関数の既定の実装では、画面表示のために関数が呼び出されても、何も実行されません。The default implementation of this function does nothing if the function is called for screen display. ただし、この関数は、デバイスコンテキストの属性を調整するために、 CScrollViewなどの派生クラスでオーバーライドされます。そのため、常にオーバーライドの先頭で基底クラスの実装を呼び出す必要があります。However, this function is overridden in derived classes, such as CScrollView, to adjust attributes of the device context; consequently, you should always call the base class implementation at the beginning of your override.

印刷のために関数が呼び出された場合、既定の実装は、 pInfo パラメーターに格納されているページ情報を調べます。If the function is called for printing, the default implementation examines the page information stored in the pInfo parameter. ドキュメントの長さが指定されていない場合、は OnPrepareDC ドキュメントを1ページにすることを前提とし、1つのページが印刷された後に印刷ループを停止します。If the length of the document has not been specified, OnPrepareDC assumes the document to be one page long and stops the print loop after one page has been printed. 関数は、 m_bContinuePrinting 構造体のメンバーを FALSE に設定することによって、print ループを停止します。The function stops the print loop by setting the m_bContinuePrinting member of the structure to FALSE.

OnPrepareDC次のいずれかの理由でオーバーライドします。Override OnPrepareDC for any of the following reasons:

  • 指定されたページで必要に応じて、デバイスコンテキストの属性を調整します。To adjust attributes of the device context as needed for the specified page. たとえば、マッピングモードまたはデバイスコンテキストのその他の特性を設定する必要がある場合は、この関数で実行します。For example, if you need to set the mapping mode or other characteristics of the device context, do so in this function.

  • 印刷時の改ページ位置の自動修正を実行する場合。To perform print-time pagination. 通常、印刷を開始するときは、 OnPreparePrinting メンバー関数を使用して、ドキュメントの長さを指定します。Normally you specify the length of the document when printing begins, using the OnPreparePrinting member function. ただし、ドキュメントがどれだけ長くなっているか (たとえば、データベースから未確定のレコードを印刷する場合など) がわかっていない場合は、をオーバーライドして、 OnPrepareDC ドキュメントの印刷中にドキュメントの終わりをテストします。However, if you don't know in advance how long the document is (for example, when printing an undetermined number of records from a database), override OnPrepareDC to test for the end of the document while it is being printed. 印刷するドキュメントが存在しない場合は、 m_bContinuePrinting 構造体のメンバーを CPrintInfo FALSE に設定します。When there is no more of the document to be printed, set the m_bContinuePrinting member of the CPrintInfo structure to FALSE.

  • ページ単位でプリンターにエスケープコードを送信すること。To send escape codes to the printer on a page-by-page basis. からエスケープコードを送信するには OnPrepareDCEscape pDC パラメーターのメンバー関数を呼び出します。To send escape codes from OnPrepareDC, call the Escape member function of the pDC parameter.

オーバーライドの先頭にあるの基本クラスバージョンを呼び出し OnPrepareDC ます。Call the base class version of OnPrepareDC at the beginning of your override.

Example

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:: OnPreparePrintingCView::OnPreparePrinting

ドキュメントが印刷またはプレビューされる前に、フレームワークによって呼び出されます。Called by the framework before a document is printed or previewed.

virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);

パラメーターParameters

pInfopInfo
現在の印刷ジョブを表す CPrintInfo 構造体を指し示します。Points to a CPrintInfo structure that describes the current print job.

戻り値Return Value

印刷を開始する場合は0以外。印刷ジョブが取り消された場合は0。Nonzero to begin printing; 0 if the print job has been canceled.

解説Remarks

既定の実装では、何も行われません。The default implementation does nothing.

印刷と印刷プレビューを有効にするには、この関数をオーバーライドする必要があります。You must override this function to enable printing and print preview. DoPreparePrintingメンバー関数を呼び出し、 pInfo パラメーターを渡して、戻り値を返します。DoPreparePrinting[印刷] ダイアログボックスを表示し、プリンターデバイスコンテキストを作成します。Call the DoPreparePrinting member function, passing it the pInfo parameter, and then return its return value; DoPreparePrinting displays the Print dialog box and creates a printer device context. 既定値以外の値を使用して [印刷] ダイアログボックスを初期化する場合は、 pInfo のメンバーに値を割り当てます。If you want to initialize the Print dialog box with values other than the defaults, assign values to the members of pInfo. たとえば、ドキュメントの長さがわかっている場合は、を呼び出す前に、 pInfoSetMaxPageメンバー関数に値を渡し DoPreparePrinting ます。For example, if you know the length of the document, pass the value to the SetMaxPage member function of pInfo before calling DoPreparePrinting. この値は、[印刷] ダイアログボックスの範囲の部分にある [To] ボックスに表示されます。This value is displayed in the To: box in the Range portion of the Print dialog box.

DoPreparePrinting プレビュージョブの [印刷] ダイアログボックスは表示されません。DoPreparePrinting does not display the Print dialog box for a preview job. 印刷ジョブの [印刷] ダイアログボックスを使用しない場合は、PInfo のメンバーが FALSE であることを確認し、 m_bPreview に渡す前に TRUE に設定します。その後、この値を DoPreparePrinting false にリセットします。If you want to bypass the Print dialog box for a print job, check that the m_bPreview member of pInfo is FALSE and then set it to TRUE before passing it to DoPreparePrinting; reset it to FALSE afterwards.

プリンターデバイスコンテキストを表すオブジェクトへのアクセスが必要な初期化を実行する必要がある場合は CDC (たとえば、ドキュメントの長さを指定する前にページサイズを確認する必要がある場合)、メンバー関数をオーバーライドし OnBeginPrinting ます。If you need to perform initializations that require access to the CDC object representing the printer device context (for example, if you need to know the page size before specifying the length of the document), override the OnBeginPrinting member function.

PInfo パラメーターのまたはメンバーの値を設定する場合は m_nNumPreviewPages m_strPageDesc 、を呼び出した後に実行し DoPreparePrinting ます。If you want to set the value of the m_nNumPreviewPages or m_strPageDesc members of the pInfo parameter, do so after calling DoPreparePrinting. この DoPreparePrinting メンバー関数は、 m_nNumPreviewPages アプリケーションので見つかった値にを設定します。INI ファイルを m_strPageDesc 既定値に設定します。The DoPreparePrinting member function sets m_nNumPreviewPages to the value found in the application's .INI file and sets m_strPageDesc to its default value.

Example

をオーバーライドし、オーバーライドからを呼び出して、フレームワークが [ OnPreparePrinting DoPreparePrinting 印刷] ダイアログボックスを表示し、プリンター DC を作成できるようにします。Override OnPreparePrinting and call DoPreparePrinting from the override so that the framework will display a Print dialog box and create a printer DC for you.

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

ドキュメントに含まれるページ数がわかっている場合は、を呼び出す前にの [最大] ページを設定し OnPreparePrinting DoPreparePrinting ます。If you know how many pages the document contains, set the maximum page in OnPreparePrinting before calling DoPreparePrinting. フレームワークによって、[印刷] ダイアログボックスの [to] ボックスに最大ページ番号が表示されます。The framework will display the maximum page number in the "to" box of the Print dialog box.

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

CView:: OnPrintCView::OnPrint

ドキュメントのページを印刷またはプレビューするために、フレームワークによって呼び出されます。Called by the framework to print or preview a page of the document.

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

パラメーターParameters

pDCpDC
プリンター デバイス コンテキストを指し示します。Points to the printer device context.

pInfopInfo
CPrintInfo現在の印刷ジョブを記述する構造体を指します。Points to a CPrintInfo structure that describes the current print job.

解説Remarks

フレームワークは、印刷されるページごとに、 OnPrepareDC メンバー関数を呼び出した直後にこの関数を呼び出します。For each page being printed, the framework calls this function immediately after calling the OnPrepareDC member function. 印刷されるページは、 m_nCurPage pInfo が指す CPrintInfo構造体のメンバーによって指定されます。The page being printed is specified by the m_nCurPage member of the CPrintInfo structure that pInfo points to. 既定の実装は、 OnDraw メンバー関数を呼び出し、それにプリンターデバイスコンテキストを渡します。The default implementation calls the OnDraw member function and passes it the printer device context.

次のいずれかの理由で、この関数をオーバーライドします。Override this function for any of the following reasons:

  • マルチページドキュメントの印刷を許可する場合は。To allow printing of multipage documents. 現在印刷中のページに対応するドキュメントの部分のみを表示します。Render only the portion of the document that corresponds to the page currently being printed. を使用してレンダリングを実行している場合は、 OnDraw ドキュメントの適切な部分だけが印刷されるように、ビューポートの原点を調整できます。If you're using OnDraw to perform the rendering, you can adjust the viewport origin so that only the appropriate portion of the document is printed.

  • 印刷されたイメージを画面イメージとは異なる外観にする場合は。アプリケーションが WYSIWYG でない場合は。To make the printed image look different from the screen image (that is, if your application is not WYSIWYG). プリンターデバイスコンテキストをに渡す代わりに OnDraw 、デバイスコンテキストを使用して、画面に表示されていない属性を使用してイメージをレンダリングします。Instead of passing the printer device context to OnDraw, use the device context to render an image using attributes not shown on the screen.

    画面表示に使用しない、印刷用の GDI リソースが必要な場合は、描画する前にデバイスコンテキストに選択し、後で選択を解除します。If you need GDI resources for printing that you don't use for screen display, select them into the device context before drawing and deselect them afterwards. これらの GDI リソースは OnBeginPrinting に割り当てられ、 OnEndPrintingでリリースされる必要があります。These GDI resources should be allocated in OnBeginPrinting and released in OnEndPrinting.

  • ヘッダーまたはフッターを実装します。To implement headers or footers. OnDraw印刷できる領域を制限することで、引き続きを使用してレンダリングを行うことができます。You can still use OnDraw to do the rendering by restricting the area that it can print on.

m_rectDraw PInfo パラメーターのメンバーは、ページの印刷可能領域を論理単位で記述することに注意してください。Note that the m_rectDraw member of the pInfo parameter describes the printable area of the page in logical units.

のオーバーライドでを呼び出さない OnPrepareDCOnPrint ください。フレームワークはを OnPrepareDC 呼び出す前に自動的にを呼び出し OnPrint ます。Do not call OnPrepareDC in your override of OnPrint; the framework calls OnPrepareDC automatically before calling OnPrint.

Example

オーバーライドされた関数のスケルトンを次に示し OnPrint ます。The following is a skeleton for an overridden OnPrint function:

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::P rintinsiderect」を参照してください。For another example, see CRichEditView::PrintInsideRect.

CView:: OnScrollCView::OnScroll

スクロールが可能かどうかを判断するために、フレームワークによって呼び出されます。Called by the framework to determine whether scrolling is possible.

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

パラメーターParameters

nScrollCodenScrollCode
ユーザーのスクロール要求を示すスクロールバーコード。A scroll-bar code that indicates the user's scrolling request. このパラメーターは2つの部分で構成されています。下位バイトは、水平方向に発生するスクロールの種類を決定し、上位バイトは垂直方向に発生するスクロールの種類を決定します。This parameter is composed of two parts: a low-order byte, which determines the type of scrolling occurring horizontally, and a high-order byte, which determines the type of scrolling occurring vertically:

  • SB_BOTTOM が一番下までスクロールします。SB_BOTTOM Scrolls to bottom.

  • SB_LINEDOWN 1 行下にスクロールします。SB_LINEDOWN Scrolls one line down.

  • SB_LINEUP 1 行上へスクロールします。SB_LINEUP Scrolls one line up.

  • SB_PAGEDOWN 1 ページ下にスクロールします。SB_PAGEDOWN Scrolls one page down.

  • SB_PAGEUP 1 ページ上にスクロールします。SB_PAGEUP Scrolls one page up.

  • スクロールボックスを指定した位置にドラッグ SB_THUMBTRACK ます。SB_THUMBTRACK Drags scroll box to specified position. 現在位置は nPos で指定されています。The current position is specified in nPos.

  • SB_TOP が一番上にスクロールします。SB_TOP Scrolls to top.

nPosnPos
スクロールバーのコードが SB_THUMBTRACK 場合は、現在のスクロールボックスの位置を格納します。それ以外の場合は使用されません。Contains the current scroll-box position if the scroll-bar code is SB_THUMBTRACK; otherwise it is not used. 最初のスクロール範囲によっては、 nPos が負の値になる場合があり、必要に応じてにキャストする必要があり int ます。Depending on the initial scroll range, nPos may be negative and should be cast to an int if necessary.

bDoScrollbDoScroll
指定したスクロール操作を実際に実行する必要があるかどうかを判断します。Determines whether you should actually do the specified scrolling action. TRUE の場合、スクロールが行われます。FALSE の場合、スクロールは行われません。If TRUE, then scrolling should take place; if FALSE, then scrolling should not occur.

戻り値Return Value

BDoScroll が TRUE で、ビューが実際にスクロールされた場合は、0以外の値を返します。それ以外の場合は0です。If bDoScroll is TRUE and the view was actually scrolled, then return nonzero; otherwise 0. BDoScroll が FALSE の場合は、実際にはスクロールを行っていなくても、 bDoScroll が TRUE の場合に返された値を返します。If bDoScroll is FALSE, then return the value that you would have returned if bDoScroll were TRUE, even though you don't actually do the scrolling.

解説Remarks

1つの場合、この関数はフレームワークによって呼び出され、ビューがスクロールバーメッセージを受信したときに bDoScroll が TRUE に設定されます。In one case this function is called by the framework with bDoScroll set to TRUE when the view receives a scrollbar message. この場合は、実際にビューをスクロールする必要があります。In this case, you should actually scroll the view. それ以外の場合、この関数は bDoScroll を FALSE に設定して呼び出されます。これは、OLE 項目が最初にドロップ先の自動スクロール領域にドラッグされたときに、スクロールが行われる前に発生します。In the other case this function is called with bDoScroll set to FALSE when an OLE item is initially dragged into the auto-scrolling region of a drop target before scrolling actually takes place. この場合、実際にはビューをスクロールしないでください。In this case, you should not actually scroll the view.

CView:: OnScrollByCView::OnScrollBy

OLE 項目をビューの現在の境界に対してドラッグするか、垂直方向または水平方向のスクロールバーを操作することによって、ユーザーがドキュメントの現在のビューの外にある領域を表示すると、フレームワークによって呼び出されます。Called by the framework when the user views an area beyond the present view of the document, either by dragging an OLE item against the view's current borders or by manipulating the vertical or horizontal scrollbars.

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

パラメーターParameters

sizeScrollsizeScroll
水平方向および垂直方向にスクロールされたピクセル数。Number of pixels scrolled horizontally and vertically.

bDoScrollbDoScroll
ビューのスクロールが発生するかどうかを決定します。Determines whether scrolling of the view occurs. TRUE の場合、スクロールが行われます。FALSE の場合、スクロールは行われません。If TRUE, then scrolling takes place; if FALSE, then scrolling does not occur.

戻り値Return Value

ビューをスクロールできた場合は0以外の。それ以外の場合は0です。Nonzero if the view was able to be scrolled; otherwise 0.

解説Remarks

派生クラスでは、このメソッドは、ユーザーが要求した方向にビューがスクロール可能かどうかを確認し、必要に応じて新しい領域を更新します。In derived classes this method checks to see whether the view is scrollable in the direction the user requested and then updates the new region if necessary. この関数は、 cwnd:: OnHScrollCwnd:: onvscroll によって自動的に呼び出され、実際のスクロール要求を実行します。This function is automatically called by CWnd::OnHScroll and CWnd::OnVScroll to perform the actual scrolling request.

このメソッドの既定の実装ではビューは変更されませんが、が呼び出されない場合、ビューはの派生クラスでスクロールされません CScrollViewThe default implementation of this method does not change the view, but if it is not called, the view will not scroll in a CScrollView-derived class.

ドキュメントの幅または高さが32767ピクセルを超えた場合、 OnScrollBy は無効な sizeScroll 引数を使用して呼び出されるため、32767を超えるスクロールは失敗します。If the document width or height exceeds 32767 pixels, scrolling past 32767 will fail because OnScrollBy is called with an invalid sizeScroll argument.

CView:: OnUpdateCView::OnUpdate

ビューのドキュメントが変更された後にフレームワークによって呼び出されます。この関数は、 CDocument:: UpdateAllViews によって呼び出され、ビューがその変更を反映するように表示を更新できるようにします。Called by the framework after the view's document has been modified; this function is called by CDocument::UpdateAllViews and allows the view to update its display to reflect those modifications.

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

パラメーターParameters

pSenderpSender
ドキュメントを変更したビューを指します。すべてのビューを更新する場合は NULL です。Points to the view that modified the document, or NULL if all views are to be updated.

lHintlHint
変更に関する情報が含まれています。Contains information about the modifications.

pHintpHint
変更に関する情報を格納しているオブジェクトを指します。Points to an object storing information about the modifications.

解説Remarks

また、 OnInitialUpdateの既定の実装によって呼び出されます。It is also called by the default implementation of OnInitialUpdate. 既定の実装は、クライアント領域全体を無効にし、次の WM_PAINT メッセージを受信したときに描画するようにマークします。The default implementation invalidates the entire client area, marking it for painting when the next WM_PAINT message is received. 文書の変更部分にマップされている領域のみを更新する場合は、この関数をオーバーライドします。Override this function if you want to update only those regions that map to the modified portions of the document. これを行うには、ヒントパラメーターを使用して、変更に関する情報を渡す必要があります。To do this you must pass information about the modifications using the hint parameters.

Lhint を使用するには、特殊なヒント値 (通常はビットマスクまたは列挙型) を定義し、ドキュメントがこれらの値のいずれかに合格するようにします。To use lHint, define special hint values, typically a bitmask or an enumerated type, and have the document pass one of these values. Phint を使用するには、 CObjectからヒントクラスを派生させ、ドキュメントがヒントオブジェクトへのポインターを渡すようにします。をオーバーライドする場合は OnUpdateCObject:: IsKindOfメンバー関数を使用して、ヒントオブジェクトの実行時の型を決定します。To use pHint, derive a hint class from CObject and have the document pass a pointer to a hint object; when overriding OnUpdate, use the CObject::IsKindOf member function to determine the run-time type of the hint object.

通常、から直接描画を実行することはできません OnUpdateTypically you should not perform any drawing directly from OnUpdate. 代わりに、デバイス座標で、更新が必要な領域を示す四角形を特定します。この四角形を CWnd:: InvalidateRectに渡します。Instead, determine the rectangle describing, in device coordinates, the area that requires updating; pass this rectangle to CWnd::InvalidateRect. これにより、次に WM_PAINT メッセージを受信したときに描画が行われます。This causes painting to occur the next time a WM_PAINT message is received.

Lhint が0で PHINT が NULL の場合、ドキュメントは汎用更新通知を送信しています。If lHint is 0 and pHint is NULL, the document has sent a generic update notification. ビューが汎用更新通知を受信する場合、またはヒントをデコードできない場合は、クライアント領域全体を無効にする必要があります。If a view receives a generic update notification, or if it cannot decode the hints, it should invalidate its entire client area.

関連項目See also

MFC のサンプル MDIDOCVWMFC Sample MDIDOCVW
CWnd クラスCWnd Class
階層図Hierarchy Chart
CWnd クラスCWnd Class
CFrameWnd クラスCFrameWnd Class
CSplitterWnd クラスCSplitterWnd Class
CDC クラスCDC Class
CDocTemplate クラスCDocTemplate Class
CDocument クラスCDocument Class