MFC拆分窗口及它們之間的數據交換
源代碼:http://download.csdn.net/detail/nuptboyzhb/4221531
CSplitterWnd類
CSplitterWnd類提供一個分隔器窗口的功能,分隔器窗口是一個包含有多個窗格的窗口。窗格通常是應用程序特定的由CView派生的對象,但它也可以是具有適當子窗口ID的任何CWnd對象。
一個CSplitterWnd對象通常被嵌入CFrameWnd或CMDIChildWnd父對象。你應按如下步驟創建一個CSplitterWnd對象:
1.
在父框架中嵌入一個CSplitterWnd成員變量。
2.
重載父框架的CFrameWnd::OnCreateClient成員函數。
3.
從重載的OnCreateClient函數中調用類CSplitterWnd的Create或CreateStatic成員函數。
3.1調用Create成員函數可以創建一個動態的分隔器窗口。
3.2 使用CreateStatic成員函數可以創建一個靜態分隔器窗口。
4. 從重載的OnCreateClient函數中調用類CSplitterWnd的CreateView成員函數;
重要的函數講解:
BOOL Create( CWnd* pParentWnd,
int nMaxRows,
int nMaxCols,
SIZE sizeMin,
CCreateContext* pContext,
DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT,
UINT nID = AFX_IDW_PANE_FIRST
);
返回值:如果成功則返回非零值;否則返回0。
參數:
pParentWnd
分隔器窗口的父框架窗口。
nMaxRows
分隔器窗口中的最大行數。這個值不能超過2。
nMaxCols
分隔器窗口中的最大列數。這個值不能超過2。
sizeMin
指出顯示一個窗格所需的最小尺寸。
pContext
指向一個CCreateContext結構的指針。多數情況下,這個值可以是傳遞給父框架窗口的pContext。
dwStyle
指定窗口的風格。
nID
此窗口的子窗口ID。如果這個分隔器窗口不是嵌套在另一個分隔器窗口中的,則這個ID可以是AFX_IDW_PANE_FIRST。
BOOL CreateStatic( CWnd* pParentWnd,
int nRows,
int nCols,
DWORD dwStyle = WS_CHILD | WS_VISIBLE,
UINT nID = AFX_IDW_PANE_FIRST
);
返回值:如果成功則返回非零值;否則返回0。
參數:
pParentWnd
分隔器窗口的父框架窗口。
nRows
行數。這個值必須不超過16。
nCols
列數。這個值必須不超過16。
dwStyle
指定窗口的風格。
nID
此窗口的子窗口ID。如果這個分隔器窗口不是嵌套在另一個分隔器窗口中的,則這個ID可以是AFX_IDW_PANE_FIRSH。
virtual BOOL CreateView( int row, int col, CRuntimeClass* pViewClass, SIZE sizeInit, CCreateContext* pContext );
返回值:如果成功則返回非零值;否則返回0。
參數:
row
指定用來放置新視的分隔器窗口行。
col
指定用來放置新視的分隔器窗口列。
pViewClass
指定新視的CRuntimeClass。
sizeInit
指定新視的初始尺寸。
pContext
指向用來創建此視的創建環境的指針(通常,該pContext被傳遞給在其中創建此分隔器窗口的父框架的重載的OnCreateClient成員函數)。
注意: 第三個參數CruntimeClass為RUNTIME_CLASS(類名);如果該類是資源類,那么該類的父類必須是CformView,
應用舉例:
1. 新建一個單文檔的應用程序,命名為SplitterWndDemo;
2. 插入一個對話框的資源,作為其中一個分割窗口;為對話框添加相應的控件;
2.1設置對話框的屬性:將‘樣式’設置為‘下層’;禁止使用標題欄;邊框選擇‘調整大小’;其他格式暫時都不設置;
2.2為對話框創建一個類,類名CLeftView;父類選擇為CFormView;
3. 在CMainFrame嵌入一個CSplitterWnd成員變量。
CSplitterWnd m_splitterWnd;
4. 重載父框架CMainFrame的CFrameWnd::OnCreateClient成員函數,編輯代碼如下:
[cpp] view plaincopy