mfc深入淺出 系列 深入淺出mfc 第13章多重文件與多重顯示

第13章多重文件與多重顯示

1.       靜態分裂用到兩個CSplitterWnd成員函數:

1.BOOLCreateStatic( CWnd* pParentWnd, int nRows, in nCols,DWORDdwStyle = WS_CHILD |WS_VISIBLE,UINTnID = AFX_IDW_PANE_FIRST );

2.virtual BOOLCreateView( int row, int col, CRuntimeClass* pViewClass,

SIZEsizeInit,CCreateContext* pContext );

 

2.       窗口的靜態三叉分裂

3.       同源子窗口

從【Window/New Window】開始。這個菜單項目令Framework爲我們做出目前作

用中的view 窗口的另一份拷貝。如果我們能夠知道Framework 是如何動作,是不是可

以引導它使用另一個view 類別,以不同的方式表現同一份資料:

過程:

 ■進入AppWizard,製造一個Text 項目,採用各種預設的選項。獲得的主要類

別如下

■  進入整合環境中的Resource View 窗口,選擇IDR_TEXTTYPE菜單,在

【Window】菜單中加入兩個新命令項:

再在Resource View 窗口中選擇IDR_MAINFRAME工具欄,增加兩個按鈕,安

排在Help 按鈕之後

進入ClassWizard,爲兩個UI 對象製作Message Map

利用ClassWizard 產生一個新類別,準備做爲同源子窗口的第二個View 類別:

修改程序代碼,分別爲兩個view 類別都做出對應的Docment Template:

修改CTextDoc 程序代碼,添加成員變量。Document的數據是10 筆字符串:

定義CMainFrame 的兩個命令處理例程:OnWindowText和OnWindowHex,使選

單命令項目和工具欄按鈕得以發揮效用。函數內容直接拷貝自圖13-5,只要

修改其中第14 行即可。這兩個函數是本節的技術重點

■  如果你要兩個view 都有打印預視的能力,必須在CHexView 中改寫下面三個

虛擬函數,至於它們的內容,可以依樣畫葫蘆地從CTextView的同名函數中拷

貝一份過來

virtual BOOLOnPreparePrinting(CPrintInfo* pInfo);

virtual voidOnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);

virtual voidOnEndPrinting(CDC* pDC, CPrintInfo* pInfo);

4.       多重文件

A.新的 Document Template

我應該爲此新的文件類型產生一個Document Template,並把它加到系統所維護的DocTemplate串行中。

B.新的 UI 系統

下面就是爲了這新的 NewDoc 文件型態所對應的UI 系統,新添的文件內容(沒有什麼

好工具可以幫忙,一般文字編輯器的  copy/paste 最快):

 

 

 

 

 

 

 

程序效果圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章