單文檔多視圖的實現方法

來源:互聯網
上載者:User

本文利用 CMFCTabCtrl 實現多視圖的選項卡式顯示,程式如下:

第一步:建立兩個對話方塊,並分別為其添加類 CFirstDlg、CSecondDlg;

第二步:分別對兩個對話方塊的屬性做如下設定:
NoInheritLayout          True
Visible                          True
Style                              Child

 第三步:在程式的View類標頭檔中包含兩個對話方塊類的標頭檔,並分別為其聲明一個變數:

CFirstDlg m_dlgFirst;CSecondDlg m_dlgSecond;

第四步:在程式的View類標頭檔中聲明一個 CMFCTabCtrl 類型的變數m_wndTabs:

CMFCTabCtrl m_wndTabs;

第五步:在程式的View類的 OnCreate 函數中分別建立兩個對話方塊、m_wndTabs,以及將對話方塊與 m_wndTabs 關聯起來,代碼如下:

CRect rectDummy;rectDummy.SetRectEmpty();if( !m_wndTabs.Create(CMFCTabCtrl::STYLE_3D_ONENOTE, rectDummy, this, 1, CMFCBaseTabCtrl::LOCATION_TOP) ){   TRACE0("未能建立Tab控制項!");   return -1;}m_dlgFirst = new CFirstDLg();m_dlgSecond = new CSecondDlg();if( !m_dlgFirst->Create(IDD_DIALOG1, &m_wndTabs) ||   !m_dlgSecond->Create(IDD_DIALOG2, &m_wndTabs) ){   TRACE0("未能建立對話方塊!");   return -1;}UpdateFonts();m_wndTabs.AddTab( m_dlgFirst, "第一個", (UINT)0);m_wndTabs.AddTab( m_dlgSecond, "第二個", (UINT)1);m_wndTabs.EnableActiveTabCloseButton();

第六步:為程式的View類添加 WM_SIZE 訊息響應,在訊息的響應函數中設定m_wndTabs 的位置,代碼如下:

m_wndTabs.SetWindowPos(NULL, -1, -1, cx, cy, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER);

第七步:為程式的View類添加函數 void UpdateFonts() ,在函數中分別設定對話方塊的字型,代碼如下:

m_dlgFirst->SetFont(&afxGlobalData.fontRegular);m_dlgSecond->SetFont(&afxGlobalData.fontRegular);

好了,編譯運行,就可以看到如開頭圖片所示的程式了。希望大家舉一反三,想出更好的方法!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.