CView Class

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

提供使用者定義的檢視類別的基本功能。

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) 資源。
Ongetembeddeditem呼叫來轉譯螢幕顯示、 列印或預覽列印的文件的映像。 所需的實作。
CView::OnEndPrinting呼叫時結束某項列印工作。若要解除配置 GDI 資源覆寫。
CView::OnEndPrintPreview預覽模式結束時呼叫。
CView::OnPreparePrinting列印或預覽; 文件之前呼叫覆寫以初始化 [列印] 對話方塊。
CView::OnPrint呼叫以列印或預覽文件的頁面。
CView::OnUpdate呼叫以通知的檢視,其文件已被修改。

檢視附加至文件,並做為文件與使用者之間的媒介︰ 檢視呈現在螢幕或印表機上的文件影像,但將使用者輸入解譯為文件的操作。

檢視是框架視窗的子系。 多個檢視可以共用框架視窗,如下所示的分隔視窗的大小寫。 框架視窗類別中,檢視類別的文件類別之間的關聯性由建立CDocTemplate物件。 當使用者開啟新視窗或分割現有一個架構建構新的檢視,並將其附加至文件。

檢視可以附加至單一文件,但文件可以有多個同時連接到它的檢視 — 例如,如果文件會顯示在分隔視窗中,或在多個文件介面 (MDI) 應用程式中的多個子視窗。 您的應用程式可支援不同類型的檢視給定文件類型。例如,文書處理程式可能會提供文件的完整文字檢視和顯示區段標頭的大綱檢視。 這些不同類型的檢視可以放在個別的框架視窗中,或在個別的單一框架視窗的窗格如果您使用的分隔視窗。

檢視可能會負責處理許多不同類型的輸入,例如鍵盤、 滑鼠輸入或輸入透過拖放,以及命令的功能表、 工具列或捲軸。 檢視接收轉送的其框架視窗的命令。 如果檢視不會處理指定的命令,它會轉送至其相關聯的文件的命令。 所有的命令目標,例如檢視會處理透過訊息對應的訊息。

此檢視會負責顯示和修改文件的資料,但不適用於儲存它。 文件提供有關其資料與必要的詳細資料檢視。 您可以讓文件的資料成員,或者您可以提供成員函式呼叫的檢視類別的文件類別中的檢視存取權。

當文件的資料變更時,負責變更檢視通常會呼叫CDocument::UpdateAllViews文件,就會通知所有其他檢視所呼叫的函式OnUpdate每個成員函式。 預設實作OnUpdate使檢視的整個用戶端區域。 您可以覆寫它使其失效的只有這些區域的工作區對應至文件已修改的部分。

若要使用CView、 衍生的類別和實作OnDraw進行螢幕顯示的成員函式。 您也可以使用OnDraw執行列印和預覽列印。 架構會處理列印和文件預覽列印迴圈。

檢視會處理具有捲軸訊息CWnd::OnHScrollCWnd::OnVScroll成員函式。 您可以實作捲軸訊息處理的這些函式,或者您可以使用CView衍生的類別CScrollView來處理您捲動功能。

除了CScrollView,Mfc 程式庫提供九個衍生自其他類別CView:

  • CCtrlView,允許文件-架構與樹狀目錄、 清單和 rich edit 控制項的檢視使用的檢視。

  • CDaoRecordView,對話方塊在控制項中顯示資料庫記錄的檢視。

  • CEditView,提供一個簡單的多行文字編輯器的檢視。 您可以使用CEditView為控制項的對話方塊,以及文件中的檢視中的物件。

  • CFormView,包含對話方塊控制項和對話方塊範本資源為基礎的可捲動檢視。

  • CListView,允許使用文件-使用清單控制項的檢視架構的檢視。

  • CRecordView,對話方塊在控制項中顯示資料庫記錄的檢視。

  • CRichEditView,允許文件-架構與 rich edit 控制項的檢視使用的檢視。

  • CScrollView,會自動提供支援捲動檢視。

  • CTreeView,允許使用文件-檢視架構與樹狀目錄控制項的檢視。

CView類別也具有名為衍生的實作類別CPreviewView,由架構用來執行 預覽列印時。 這個類別提供預覽列印 視窗中,例如工具列、 單一或雙頁面預覽的獨特功能的支援和縮放的,擴大預覽的影像。 您不需要呼叫或覆寫任何CPreviewView的成員函式,除非您想要實作您自己的預覽列印的介面 (例如,如果您想要支援在預覽列印模式中編輯)。 如需有關使用CView,請參閱文件/檢視架構列印。 此外,請參閱技術附註 30如需有關自訂列印預覽。

CObject

CCmdTarget

CWnd

CView

標題: afxwin.h

建構 CView 物件。

CView();

備註

建立新的框架視窗,或分隔視窗時,架構會呼叫建構函式。 覆寫OnInitialUpdate文件連結之後初始化檢視的成員函式。

呼叫此函式的覆寫從OnPreparePrinting叫用 [列印] 對話方塊中,並建立印表機裝置內容。

BOOL DoPreparePrinting(CPrintInfo* pInfo);

參數

pInfo
指向描述目前列印工作的 CPrintInfo 結構。

傳回值

非零,如果可以開始列印或列印預覽。0,表示作業已取消。

備註

此函式的行為取決於是否呼叫它的列印或預覽列印 (所指定m_bPreview成員pInfo參數)。 如果列印檔案後,此函式會叫用列印對話方塊中,使用中的值CPrintInfo結構pInfo指向; 使用者關閉對話方塊之後,此函數便會根據使用者在對話方塊中指定,並傳回透過這個裝置內容設定的印表機裝置內容pInfo參數。 這個裝置內容用來列印文件。

如果預覽檔案時,此函式會建立使用目前的印表機設定,印表機裝置內容這個裝置內容可以用來模擬在預覽期間的印表機。

呼叫此函式可取得檢視的文件的指標。

CDocument* GetDocument() const;  

傳回值

指標CDocument與檢視相關聯的物件。 NULL檢視並未附加至文件。

備註

這可讓您呼叫文件的成員函式。

若要檢查是否已選取指定的文件項目架構呼叫。

virtual BOOL IsSelected(const CObject* pDocItem) const;  

參數

pDocItem
指向要測試的文件項目。

傳回值

選取指定的文件項目; 如果為非零否則為 0。

備註

此函式的預設實作會傳回FALSE。 覆寫這個函式,如果您正在實作選擇使用CDocItem物件。 如果您檢視包含 OLE 項目,您必須覆寫這個函式。

包含檢視的框架視窗是啟用或停用時,由架構呼叫。

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

參數

nState
指定是否要在框架視窗啟用或停用。 它可以是下列值之一︰

  • WA_INACTIVE框架視窗正在停用。

  • WA_ACTIVE框架視窗正在啟用透過某些方法以外 (例如,藉由使用的選取視窗的鍵盤介面) 按一下滑鼠。

  • WA_CLICKACTIVE滑鼠點按啟動框架視窗

pFrameWnd
要啟動的框架視窗的指標。

備註

如果您想要執行特殊處理與檢視相關聯的框架視窗是啟用或停用時,覆寫此成員函式。 例如, CFormView執行此覆寫時,它會儲存並還原具有焦點的控制項。

啟用或停用檢視時,由架構呼叫。

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

參數

bActivate
指出檢視是否目前已啟用或停用。

pActivateView
正在啟動之 view 物件的指標。

pDeactiveView
正在停用的檢視物件的指標。

備註

此函式的預設實作會將焦點設的檢視,使其無法啟動。 如果您想要執行特殊處理,啟用或停用檢視時,覆寫這個函式。 例如,如果您想要提供特殊視覺提示以區別現用檢視的非作用中的檢視,您會檢查bActivate參數並據此更新檢視的外觀。

pActivateViewpDeactiveView參數指向同一個檢視如果應用程式的主框架視窗已啟動且不會變更使用中的檢視 — 例如,如果焦點在傳輸到這台,另一個應用程式,而不是一個檢視,以另一個應用程式內或 MDI 子視窗之間切換時。 如有需要這可讓重新了解其調色盤上,檢視。

這些參數與不同時CFrameWnd::SetActiveView檢視不同的功能稱為CFrameWnd::GetActiveView會傳回。 發生這種情況最常使用分隔視窗。

在呼叫 OnPreparePrinting 之後,由架構在列印或預覽列印工作開始時呼叫。

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

參數

pDC
指向印表機裝置內容。

pInfo
指向描述目前列印工作的 CPrintInfo 結構。

備註

此函式的預設實作不做任何動作。 覆寫此函式以配置列印特別需要的任何 GDI 資源,例如畫筆或字型。 選取的 GDI 物件放入裝置內容中,從OnPrint成員函式會使用這些資源的每一頁。 如果您使用相同的檢視物件來執行螢幕顯示和列印,請為每個顯示所需的 GDI 資源使用不同的變數;這可讓您在列印期間更新螢幕。

您也可以使用此函式,執行因印表機裝置內容屬性而異的初始設定。 例如,列印文件所需的頁數可能會因使用者在 [列印] 對話方塊中指定的設定 (例如頁面長度) 而異。 在這種情況下,您無法指定文件的長度,以OnPreparePrinting成員函式,其中通常會進行操作,您必須等到印表機裝置內容建立根據對話方塊設定。 OnBeginPrinting 是第一個可讓您存取代表印表機裝置內容之 CDC 物件的可覆寫函式,因此您可以從此函式設定文件長度。 請注意,如果此時未指定文件長度,預覽列印期間將不會顯示捲軸。

當滑鼠初次進入置放目標視窗的非捲動區域,由架構呼叫。

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

參數

pDataObject
指向COleDataObject被拖曳至檢視的放置區。

dwKeyState
包含輔助按鍵的狀態。 這是下列任何數目的組合︰ MK_CONTROLMK_SHIFTMK_ALTMK_LBUTTONMK_MBUTTON,和MK_RBUTTON

point
目前滑鼠位置相對於用戶端區域的檢視。

傳回值

介於DROPEFFECT列舉型別,指出如果使用者在這個位置卸除物件就會發生的卸除的類型。 卸除類型通常取決於目前所指示的索引鍵狀態dwKeyState。 以 keystates 標準對應DROPEFFECT值為︰

  • DROPEFFECT_NONE無法卸除的資料物件,此視窗中。

  • DROPEFFECT_LINKMK_CONTROL |MK_SHIFT建立物件和它的伺服器之間的連結。

  • DROPEFFECT_COPYMK_CONTROL會建立一份已卸除物件。

  • DROPEFFECT_MOVEMK_ALT會建立一份已卸除的物件,並刪除原始的物件。 這通常是預設的拖放效果,檢視可接受這個資料物件。

如需詳細資訊,請參閱 MFC 進階概念範例OCLIENT

備註

預設實作會執行任何動作,並傳回DROPEFFECT_NONE

若要準備的未來呼叫此函式會覆寫OnDragOver成員函式。 應該擷取從資料物件所需的任何資料,供稍後使用,此時OnDragOver成員函式。 讓使用者視覺化回應,此時也應該更新檢視。 如需詳細資訊,請參閱文章將拖放︰ 實作置放目標

有效的置放區超出該視窗移動滑鼠時呼叫架構在拖曳作業期間。

virtual void OnDragLeave();

備註

如果目前的檢視必須清除期間採取任何動作,請覆寫此函數OnDragEnterOnDragOver呼叫,例如當物件被拖曳和卸除時移除任何視覺化使用者意見反應。

當滑鼠移動經過置放目標視窗呼叫由架構在拖曳作業期間。

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

參數

pDataObject
指向COleDataObject拖曳到置放目標。

dwKeyState
包含輔助按鍵的狀態。 這是下列任何數目的組合︰ MK_CONTROLMK_SHIFTMK_ALTMK_LBUTTONMK_MBUTTON,和MK_RBUTTON

point
目前的滑鼠位置相對於檢視用戶端區域。

傳回值

介於DROPEFFECT列舉型別,指出如果使用者在這個位置卸除物件就會發生的卸除的類型。 卸除類型通常取決於目前的索引鍵狀態所示dwKeyState。 以 keystates 標準對應DROPEFFECT值為︰

  • DROPEFFECT_NONE無法卸除的資料物件,此視窗中。

  • DROPEFFECT_LINKMK_CONTROL |MK_SHIFT建立物件和它的伺服器之間的連結。

  • DROPEFFECT_COPYMK_CONTROL會建立一份已卸除物件。

  • DROPEFFECT_MOVEMK_ALT會建立一份已卸除的物件,並刪除原始的物件。 這通常是預設的拖放效果,檢視可接受的資料物件。

如需詳細資訊,請參閱 MFC 進階概念範例OCLIENT

備註

預設實作會執行任何動作,並傳回DROPEFFECT_NONE

此函式可讓使用者視覺化回應拖曳作業期間會覆寫。 因為連續呼叫此函式,其內所含的任何程式碼應該最佳化儘可能。 如需詳細資訊,請參閱文章將拖放︰ 實作置放目標

然後再呼叫架構呼叫OnDragEnterOnDragOver判斷點是否捲動區域。

virtual DROPEFFECT OnDragScroll(
    DWORD dwKeyState,  
    CPoint point);

參數

dwKeyState
包含輔助按鍵的狀態。 這是下列任何數目的組合︰ MK_CONTROLMK_SHIFTMK_ALTMK_LBUTTONMK_MBUTTON,和MK_RBUTTON

point
包含的資料指標,相對於螢幕像素為單位的位置。

傳回值

介於DROPEFFECT列舉型別,指出如果使用者在這個位置卸除物件就會發生的卸除的類型。 卸除類型通常取決於目前所指示的索引鍵狀態dwKeyState。 以 keystates 標準對應DROPEFFECT值為︰

  • DROPEFFECT_NONE無法卸除的資料物件,此視窗中。

  • DROPEFFECT_LINKMK_CONTROL |MK_SHIFT建立物件和它的伺服器之間的連結。

  • DROPEFFECT_COPYMK_CONTROL會建立一份已卸除物件。

  • DROPEFFECT_MOVEMK_ALT會建立一份已卸除的物件,並刪除原始的物件。

  • DROPEFFECT_SCROLL表示拖曳捲軸作業即將發生或發生在 [目標] 檢視。

如需詳細資訊,請參閱 MFC 進階概念範例OCLIENT

備註

當您想要針對此事件提供特殊行為時,覆寫這個函式。 預設實作資料指標拖曳至預設的捲動區域內的每個視窗框線時,會自動捲動 windows。如需詳細資訊,請參閱文章將拖放︰ 實作置放目標

呈現影像的文件的架構所呼叫。

virtual void OnDraw(CDC* pDC) = 0;  

參數

pDC
裝置內容,以便用來呈現文件的映像的指標。

備註

架構會呼叫此函式來執行螢幕顯示、 列印和預覽列印,並且會傳遞不同的裝置內容中的每個案例。 沒有預設的實作。

您必須覆寫這個函式來顯示文件的檢視。 您可以使用的圖形裝置介面 (GDI) 呼叫CDC指向的物件pDC參數。 您可以選取放入裝置內容中繪製前的 GDI 資源,例如 [畫筆] 或 [字型],並接著之後取消。 繪圖程式碼通常可以與裝置無關。也就是說,它不需要哪種裝置類型顯示影像的相關資訊。

若要最佳化的繪圖,呼叫RectVisible裝置內容,以找出是否要繪製指定的矩形的成員函式。 如果您需要區別正常螢幕顯示和列印,呼叫IsPrinting裝置內容的成員函式。

在使用者釋放資料物件的有效置放目標時,由架構呼叫。

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

參數

pDataObject
指向COleDataObject ,放入置放目標。

dropEffect
使用者已要求置放效果。

  • DROPEFFECT_COPY建立要卸除的資料物件的複本。

  • DROPEFFECT_MOVE將資料物件移至目前的滑鼠位置。

  • DROPEFFECT_LINK建立資料物件和它的伺服器之間的連結。

point
目前的滑鼠位置相對於檢視用戶端區域。

傳回值

非零,如果卸除成功。否則為 0。

備註

預設實作不做任何動作,並傳回FALSE

覆寫此函式可檢視的工作區中實作的 OLE 拖放效果。 資料物件可以透過檢查pDataObject剪貼簿資料格式和資料在卸除指定的點。

System_CAPS_ICON_note.jpg 注意

架構不會呼叫此函式,如果沒有覆寫, 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表示拖曳捲軸作業即將發生或發生在目標中。

如需有關如何設定預設的功能表命令的詳細資訊,請參閱SetMenuDefaultItem中Windows SDK和CMenu::GetSafeHmenu此磁碟區中。

列印或預覽的文件之後,由架構呼叫。

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

參數

pDC
指向印表機裝置內容。

pInfo
指向描述目前列印工作的 CPrintInfo 結構。

備註

此函式的預設實作不做任何動作。 覆寫這個函式來釋放任何您在中配置的 GDI 資源OnBeginPrinting成員函式。

當使用者結束預覽列印模式時,由架構呼叫。

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

參數

pDC
指向印表機裝置內容。

pInfo
指向描述目前列印工作的 CPrintInfo 結構。

point
在上一次顯示在預覽模式 頁面上指定的點。

pView
用來預覽的檢視物件的指標。

備註

此函式的預設實作會呼叫OnEndPrinting成員函式並還原主框架視窗的預覽列印之前的狀態開始。 覆寫這個函式來執行特殊處理終止預覽模式時。 例如,如果您想要維護使用者的文件中的位置,從 [預覽] 模式切換到一般顯示模式時,您可以捲動所描述的位置point參數和m_nCurPage成員CPrintInfo結構pInfo參數所指向。

請務必呼叫基底類別版本OnEndPrintPreview從您的覆寫通常是在函式結尾。

檢視第一次連接到文件之後,但一開始會顯示檢視之前,由架構呼叫。

virtual void OnInitialUpdate();

備註

此函式的預設實作會呼叫OnUpdate成員函式,而沒有提示的資訊 (也就使用預設值為 0,表示lHint參數和NULLpHint參數)。 覆寫這個函式來執行任何需要文件的相關資訊的單次初始化。 比方說,如果您的應用程式有固定大小的文件,您可以使用此函式來初始化檢視的捲動根據文件大小的限制。 如果您的應用程式支援可變大小的文件,使用OnUpdate更新捲動會限制每次文件的變更。

之前的架構所呼叫OnDraw螢幕顯示和更早呼叫成員函式OnPrint成員函式列印或預覽列印期間,會呼叫每個頁面。

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

參數

pDC
裝置內容,以便用來呈現文件的映像的指標。

pInfo
指向CPrintInfo結構描述目前的列印工作,如果OnPrepareDC呼叫以列印或列印預覽功能;m_nCurPage成員指定即將列印的頁面。 這個參數是NULL如果OnPrepareDC螢幕上的呼叫。

備註

如果螢幕顯示被呼叫函式,此函式的預設實作會沒有作用。 不過,此函式會覆寫在衍生類別中,例如CScrollView、 調整屬性的裝置內容中; 因此,務必呼叫基底類別實作您的覆寫的開頭。

如果列印的呼叫函式,則預設實作會檢查中儲存的頁面資訊pInfo參數。 如果未指定文件的長度,OnPrepareDC假設只有一頁長文件,並在列印頁之後,停止列印迴圈。 函式藉由設定停止列印迴圈m_bContinuePrinting結構的成員FALSE

覆寫OnPrepareDC基於下列原因︰

  • 視需要針對指定的頁面調整裝置內容的屬性。 比方說,如果您需要設定的對應模式] 或 [裝置內容的其他特性,這樣在這個函式。

  • 若要執行列印時分頁。 通常您指定長度的文件列印開始時,使用OnPreparePrinting成員函式。 不過,如果您不知道事先多久文件列印中時 (例如,不確定的數目的記錄從資料庫),覆寫OnPrepareDC測試時在列印文件結尾。 當有沒有其他要列印的文件,來設定m_bContinuePrinting成員CPrintInfo結構以FALSE

  • 若要傳送至印表機的頁面為基礎的逸出程式碼。 若要傳送逸出程式碼從OnPrepareDC,呼叫逸出成員函式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);
   }
}

由架構呼叫之前列印或預覽文件。

virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);

參數

pInfo
指向描述目前列印工作的 CPrintInfo 結構。

傳回值

非零開始列印。0,表示已取消列印工作。

備註

預設實作不做任何動作。

您必須覆寫這個函式會啟用列印和預覽列印。 呼叫DoPreparePrinting成員函式,將它傳遞pInfo參數,然後傳回它的傳回值。DoPreparePrinting會顯示 [列印] 對話方塊中,並建立印表機裝置內容。 如果您想要初始化列印對話方塊中,使用預設值以外的值,指定的成員值pInfo。 例如,如果您知道文件的長度,將值傳遞到SetMaxPage成員函式pInfo之前,先呼叫DoPreparePrinting。 這個值會顯示在 [收件者:] 方塊中的 [列印] 對話方塊中的範圍部分。

DoPreparePrinting不會顯示預覽工作 [列印] 對話方塊。 如果您想要略過的列印工作的 [列印] 對話方塊,請檢查m_bPreview成員pInfoFALSE然後將它設定為TRUE再傳遞給DoPreparePrinting; 它重設為FALSE之後。

如果您要執行需要存取的初始化CDC物件,代表印表機裝置內容 (例如,如果您需要知道的頁面大小指定文件的長度),覆寫OnBeginPrinting成員函式。

如果您想要設定的值m_nNumPreviewPagesm_strPageDesc成員pInfo參數,執行這項操作之後呼叫DoPreparePrintingDoPreparePrinting成員函式集合m_nNumPreviewPages找到的應用程式中的值。INI 檔案,並設定m_strPageDesc為其預設值。

範例

覆寫OnPreparePrinting呼叫DoPreparePrinting覆寫從使得架構將顯示 [列印] 對話方塊,然後為您建立的印表機 DC。

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

如果您知道文件中包含的頁數,請在中設定最大頁面OnPreparePrinting之前,先呼叫DoPreparePrinting。 架構會顯示 [列印] 對話方塊中的 「 目標 」 方塊中的最大頁面數目。

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

若要列印或預覽文件的頁面架構呼叫。

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

參數

pDC
指向印表機裝置內容。

pInfo
指向CPrintInfo該結構描述目前的列印工作。

備註

針對每個正在列印的頁面,架構會呼叫此函式後立即呼叫OnPrepareDC成員函式。 正在列印的頁面由m_nCurPage成員CPrintInfo結構pInfo指向。 預設實作會呼叫OnDraw成員函式,並將它印表機裝置內容。

基於下列原因,覆寫這個函式︰

  • 若要允許列印多頁文件。 轉譯只對應於目前列印的頁面的文件的一部分。 如果您使用OnDraw若要執行的轉譯,您可以調整檢視區原點使列印文件的適當部分。

  • 若要列印的影像看起來不同於螢幕影像 (也就是說,如果您的應用程式不是 WYSIWYG)。 而不是傳遞印表機裝置內容至OnDraw,用來呈現使用屬性不會顯示在螢幕上影像的裝置內容。

    如果您不要使用螢幕上顯示的列印需要 GDI 資源放入裝置內容中繪製前加以選取,之後將它們取消選取。 這些 GDI 資源應該配置在OnBeginPrinting及發行在OnEndPrinting

  • 若要實作的頁首或頁尾。 您仍然可以使用OnDraw如何呈現藉由限制可列印的區域。

請注意, m_rectDraw成員pInfo參數描述中的邏輯單元的頁面可列印區域。

請勿呼叫OnPrepareDC在覆寫OnPrint,架構會呼叫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

若要判斷是否捲動架構呼叫可供使用。

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

參數

nScrollCode
捲軸程式碼,指出使用者的捲動要求。 這個參數由兩個部分組成︰ 低序位位元組,這會決定捲動發生水平的型別,以及高序位位元組,這會決定捲動發生垂直的型別︰

  • SB_BOTTOM向下捲動。

  • SB_LINEDOWN向下捲動一行。

  • SB_LINEUP向上捲動一行。

  • SB_PAGEDOWN向下捲動一頁。

  • SB_PAGEUP向上捲動一頁。

  • SB_THUMBTRACK拖曳捲動方塊以指定的位置。 目前的位置中指定nPos

  • SB_TOP捲動至最上方。

nPos
如果捲軸的程式碼,包含目前的捲動方塊位置SB_THUMBTRACK; 否則會無法使用。 根據初始的捲軸範圍,nPos可能是負數,並且應該轉換成int如有必要。

bDoScroll
決定是否應該實際進行指定捲動的動作。 如果為 TRUE,再捲動應該發生; 如果FALSE,然後捲動應該不會發生。

傳回值

如果bDoScrollTRUE實際上捲動檢視,然後傳回非零,否則為 0。 如果bDoScrollFALSE,則傳回值,如果會傳回您bDoScrollTRUE,即使實際上沒有進行捲動。

備註

使用架構在某種情況下呼叫這個函式bDoScrollTRUE檢視當接收捲軸訊息。 在此情況下,您應該實際捲動檢視。 在其他情況下呼叫這個函式與bDoScrollFALSE當 OLE 項目一開始拖曳到置放目標的自動捲動區域捲動實際發生之前。 在此情況下,您不應該實際捲動檢視。

當使用者檢視之外存在的文件,藉由拖曳 OLE 項目對檢視目前的框線或操作的垂直或水平捲軸檢視區域時,由架構呼叫。

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

參數

sizeScroll
水平及垂直,捲動到 像素數目。

bDoScroll
判斷是否捲動檢視。 如果為 TRUE,捲動會發生; 然後FALSE,然後捲動不會發生。

傳回值

檢視已設為 1; 如果為非零否則為 0。

備註

在衍生類別中這個方法會檢查以查看是否可在使用者要求,然後更新新的區域,如有必要的方向捲動檢視。 此函式會自動呼叫CWnd::OnHScrollCWnd::OnVScroll執行實際的捲動要求。

這個方法的預設實作不會變更檢視,但如果不呼叫時,檢視不會捲動中CScrollView-衍生的類別。

如果文件寬度或高度超過 32767 個像素,超過 32767 捲動會失敗,因為OnScrollBy稱為無效sizeScroll引數。

修改檢視的文件; 之後,由框架呼叫此函式會呼叫CDocument::UpdateAllViews ,並可讓更新以反映這些修改顯示的檢視。

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

參數

pSender
指向修改文件中,檢視或NULL如果所有的檢視更新。

lHint
包含資訊所做的修改。

pHint
指向以儲存修改的相關資訊的物件。

備註

它也可以呼叫的預設實作OnInitialUpdate。 預設實作會使整個工作區中,繪製時,將下一個WM_PAINT接收訊息。 如果您想要更新只有在對應至文件已修改的部分的區域,請覆寫此函式。 若要這樣做,您必須傳遞修改使用提示參數的相關資訊。

若要使用lHint、 定義特殊的提示值通常位元遮罩或列舉型別,以及文件傳遞其中一個值。 若要使用pHint,衍生的提示類別CObject和文件的覆寫時,將指標傳遞到提示的物件; OnUpdate,使用cobject:: Iskindof成員函式來判斷提示物件的執行階段型別。

通常您不應該執行任何直接從描繪OnUpdate。 相反地,判斷裝置座標中描述需要更新; 區域的矩形傳遞到這個矩形CWnd::InvalidateRect。 這會導致發生在下一次繪製WM_PAINT接收訊息。

如果lHint為 0 和pHintNULL,文件已傳送的一般更新通知。 如果檢視收到一般的更新通知,或無法解碼的提示,它應該確認其整個工作區。

MFC 範例 MDIDOCVW
CWnd 類別
階層架構圖表
CWnd 類別
CFrameWnd 類別
CSplitterWnd 類別
CDC 類別
CDocTemplate 類別
CDocument 類別

顯示: