程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 在EVC3.0中創建MDI程序

在EVC3.0中創建MDI程序

編輯:關於VC++

前言

WinCE for PocketPC 2002通常只支持SDI MFC程序。我們可以使用一點欺騙技術來將它轉變為MDI應用。在任一時刻,你仍然只能有一個視圖。但是你可以隱藏、銷毀當前視圖或者其他視圖。新視圖將被動態創建並且只局限於內存的大小。

在這裡可以定義各種不同的視圖類,但是每個視圖只會有一個實例。原因是OnSelectNextView()和OnSelectPrevView()函數在當前視圖鏈中查找視圖是否已經存在。如果存在,它就被設置為活動的。否則,該視圖就將被創建並且加入視圖鏈中。

代碼

類具體實現步驟如下:

1、建立一個新的MFC 文檔/視圖結構項目,或者使用已有項目。

2、將文件SVMainFrame.cpp 和 SVMainFrame.h拷貝到項目所在目錄下,並將它們加入到項目中。

3、打開文件CmainFrm.h,用類名CSFMainFrame 取代CFrameWnd。

class CMainFrame : public CSVMainFrame
{
 // 類定義
}

4、在CMainFrm.h刪除行CCeCommandBar m_wndCommandBar,因為它已經在CSVMainFrame.h中聲明了。

5、在CMainFrm.cpp中,用CSVMainFrame取代CMainWnd。

6、根據需要建立多個視圖,用戶可以根據向導按鈕或菜單條來前移或後移視圖。創建CFormView類時,必須設置樣式為Child,同時Border設置為None。

7、在視圖鏈中,使用方法OnSelectNextView()後移視圖。在例子中,單選按鈕m_selection為0時表示隱藏窗口,為非0時銷毀當前窗口。

void CSelViewDemoView::OnNextViewButton()
{
  UpdateData();
  CMainFrame* pMFrame = (CMainFrame*)GetParentFrame();
  pMFrame->OnSelectNextView(RUNTIME_CLASS(CMySecondView),
        m_selection == 0 ? AIT_HIDE_WINDOW : AIT_DESTROY_WINDOW);
}

8、在視圖鏈中,使用方法OnSelectPrevView()前移視圖。在例子中,m_selection作用和前面所述一樣。如果視圖鏈沒有前置視圖,則當前視圖不變。

void CMySecondView::OnPreviousView()
{
   UpdateData();
   CMainFrame* pMFrame = (CMainFrame*)GetParentFrame();
   pMFrame->OnSelectPrevView(m_selection == 0 ? AIT_HIDE_WINDOW : AIT_DESTROY_WINDOW);

}

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved