拆分窗口的示例源碼,在VC++中實(shí)現這種功能并不復雜,也叫做窗體分割、窗口分割,在本實(shí)例中,窗口的客戶(hù)區被分成了4 個(gè)部分,并且各個(gè)部分可以通過(guò)拖動(dòng)鼠標調整大小。具體效果如下:
在VC++中,可以這么實(shí)現窗口的拆分功能:使用VC++中的CSplitterWnd類(lèi),它看上去像是一種特殊的框架窗口,每個(gè)窗口都被相同的或者不同的視圖所填充。當窗口被切分后用戶(hù)可以使用鼠標移動(dòng)切分條來(lái)調整窗口的相對尺寸。
在主框架創(chuàng )建客戶(hù)區時(shí)先調用CSplitterWnd 類(lèi)的CreateStatic 設定分割的行數和列數,然后用該類(lèi)的CreateView 函數創(chuàng )建多個(gè)子窗口。
具體代碼實(shí)現:
(1)通過(guò)AppWizard 創(chuàng )建單文檔應用程序SplitWndDemo。
(2 ) 通過(guò)向導另外生成3 個(gè)CView 類(lèi):CView1 、CView2 、CView3。加上程序原來(lái)的視CsplitWndDemoView,總共有4 個(gè)視,對應了分割窗口的4 個(gè)部分。
(3)在CMainFrame 的頭文件中添加如下代碼:
1 | CSplitterWnd m_wndSplitter1; |
2 | CSplitterWnd m_wndSplitter2; |
(4)重載CMainFrame 的OnCreateClient()函數,分割窗口:
01 | BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) |
03 | //創(chuàng )建一個(gè)靜態(tài)分欄窗口,分為3 行1 列 |
04 | if(m_wndSplitter1.CreateStatic(this,3,1)==NULL) |
06 | //將CSplitWndDemoView 連接到0 行0 列窗格上 |
07 | m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CSplitWndDemoView), |
08 | CSize(100,100), pContext); |
09 | m_wndSplitter1.CreateView(2,0,RUNTIME_CLASS(CView4),CSize(100,100), |
10 | pContext); //將CView4 連接到0 行2 列 |
11 | if(m_wndSplitter2.CreateStatic(&m_wndSplitter1,1,2,WS_CHILD|WS_VISIBLE, m_wndSplitter1.IdFromRowCol(1, |
13 | return FALSE; //將第一行0 列再分開(kāi)1 行2 列 |
14 | //將CView2 類(lèi)連接到第二個(gè)分欄對象的0 行0 列 |
15 | m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CView2),CSize(400,300), |
16 | pContext); //將CView3 類(lèi)連接到第二個(gè)分欄對象的0 行1 列 |
17 | m_wndSplitter2.CreateView(0,1,RUNTIME_CLASS(CView3),CSize(400,300), |
是不是挺簡(jiǎn)單就實(shí)現了呢?若沒(méi)看懂,可這里下載完整的可編譯源碼包:多欄分割窗體的VC++實(shí)例
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。