首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

在 EVC 3.0 中建立 MDI 程式

     編輯:關於VC++

前言

WinCE for PocketPC 2002 通常僅支援 SDI MFC 程式。透過一些技巧,我們可以將其轉變為 MDI 應用程式。雖然任一時刻仍只能有一個視圖,但可以隱藏、銷毀目前視圖或其他視圖,新視圖將動態建立,僅受限於記憶體大小。

此處可定義多種不同的視圖類別,但每個視圖類別僅會有一個實例。原因在於 OnSelectNextView() 和 OnSelectPrevView() 函式會在目前視圖鏈中查找視圖是否已存在。若存在,則將其設為作用中;否則,建立該視圖並加入視圖鏈中。

具體實作步驟

  1. 建立新的 MFC 文件/視圖結構專案,或使用現有專案。
  2. 將 SVMainFrame.cpp 和 SVMainFrame.h 複製到專案目錄,並加入專案。
  3. 開啟 CmainFrm.h,將 CFrameWnd 替換為 CSFMainFrame:
    class CMainFrame : public CSVMainFrame
    {
        // 類別定義
    }
  4. 在 CMainFrm.h 刪除 CCeCommandBar m_wndCommandBar 行,因已在 CSVMainFrame.h 中宣告。
  5. 在 CMainFrm.cpp 中,將 CMainWnd 替換為 CSVMainFrame。
  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