共用方式為


逐步解說: 使用新的 MFC 殼層控制項

在這個逐步解說中,您將建立的應用程式,類似於 [檔案總管]。您會建立包含兩個窗格的視窗。左的窗格會包含 CMFCShellTreeCtrl 的階層式檢視顯示桌面上的物件。右窗格會包含 CMFCShellListCtrl ,其顯示在左邊窗格中選取的資料夾中的檔案。

必要條件

這個逐步解說假設您已設定Visual Studio使用一般開發設定。如果您正在使用一個不同的開發設定中,有些Visual Studio我們在這個逐步解說中使用的 windows 可能不會顯示預設情況下。

若要使用 MFC 應用程式精靈建立一個新的 MFC 應用程式

  1. 使用 MFC 應用程式精靈來建立一個新的 MFC 應用程式。若要執行精靈,從檔案 ] 功能表選取 新增,綴恁寁 專案新的專案 ] 對話方塊隨即出現。

  2. 新的專案 對話方塊方塊中,展開 Visual C++ 中的節點專案類型 窗格,然後選取 MFC。然後,在範本 ] 窗格中,選取 的 MFC 應用程式。輸入專案名稱,例如 MFCShellControls 再利用確定MFC 應用程式精靈隨即出現。

  3. MFC 應用程式精靈 對話方塊中,按一下 [ 下一步應用程式類型窗格隨即出現。

  4. 應用程式類型 窗格,在 應用程式類型的空心 索引標籤式文件選項。接下來,選取 [ 單一文件 ,然後選取 [ 文件/檢視架構支援。在專案樣式,請選取 Visual Studio,並從 視覺化樣式和色彩 拉下清單中選取 Office 2007 (Blue 佈景主題)。保留所有其他選項。按一下 [ 下一步 以顯示 複合文件支援窗格。

  5. 複合文件支援 ] 窗格中,選取 。按一下 [ 下一步 以顯示 文件樣板字串窗格。

  6. 不要進行任何變更到文件樣板字串窗格。按一下 [ 下一步 以顯示 資料庫支援窗格。

  7. 資料庫支援 ] 窗格中,選取 因為此應用程式不使用資料庫。按一下 [ 下一步 以顯示 使用者介面功能窗格。

  8. 使用者介面功能 ] 窗格中,請確定 使用功能表列和工具列選項。保留所有其他選項。按一下 [ 下一步 以顯示 進階功能窗格。

  9. 進階功能 窗格,在 進階的功能,選取 [僅顯示 ActiveX 控制項通用控制項資訊清單。在進階框架窗格,選取 [僅顯示 瀏覽窗格選項。這會導致使用精靈來建立與視窗的左邊窗格CMFCShellTreeCtrl已內嵌。按一下 [ 下一步 以顯示 產生的類別窗格。

  10. 我們不會進行任何變更到產生的類別窗格。因此,請按一下完成來建立新的 MFC 專案。

  11. 建置並執行應用程式,以確認應用程式建立成功。若要從建置應用程式時, 建置 ] 功能表選取 建置方案。如果應用程式建置成功時,執行應用程式,藉由選取啟動偵錯偵錯功能表。

    精靈會自動建立具有視窗的左邊有一個標準功能表列、 標準工具列、 標準的狀態列及 outlook 功能區的應用程式資料夾 檢視和 行事曆檢視。

若要將命令介面的清單控制項加入至文件檢視

  1. 在本節中,您將加入的執行個體CMFCShellListCtrl至精靈所建立的檢視。檢視標頭檔按兩下以開啟中的 MFCShellControlsView.h 方案總管] 中

    找出#pragma once靠近頂端的標頭檔指示詞。下面因其而增加此程式碼中包含的標頭檔,請立即CMFCShellListCtrl

    #include <afxShellListCtrl.h>
    

    現在,加入成員變數的型別CMFCShellListCtrl。首先,在標頭檔中找到下列註解:

    // Generated message map functions
    

    立即該註解上面加入下列程式碼:

    private:
        CMFCShellListCtrl m_wndList;
    
  2. MFC 應用程式精靈已經建立CMFCShellTreeCtrl物件在CMainFrame類別,但它是受保護的成員。我們稍後會存取此物件。因此,現在建立它的存取子。按兩下以開啟 MainFrm.h 標頭檔方案總管] 中。找出下列註解:

    // Attributes
    

    緊接著下面,加入以下的方法宣告:

    public:
        CMFCShellTreeCtrl& GetShellTreeCtrl();
    

    接下來,MainFrm.cpp 的原始程式檔按兩下以開啟在方案總管] 中。在該檔案的下方,加入下列方法定義:

    CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl()
    {
        return m_wndTree;
    }
    
  3. 現在我們更新CMFCShellControlsView類別來處理WM_CREATE windows 訊息。開啟 MFCShellControlsView.h 標頭檔,按一下這行程式碼:

    class CMFCShellControlsView : public CView
    

    接著,在屬性 ] 視窗中,按一下 訊息圖示。向下捲動直到您找到WM_CREATE訊息。從下拉式清單旁邊WM_CREATE,請選取 <Add> OnCreate。這會為我們的 [訊息處理常式,並且會自動更新 [MFC 訊息對應。

    OnCreate方法,現在我們將建立我們CMFCShellListCtrl物件。找出OnCreate MFCShellControlsView.cpp 中的方法定義來源檔案和它的實作取代成下列程式碼:

    int CMFCShellControlsView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
        if (CView::OnCreate(lpCreateStruct) == -1)
            return -1;
    
        CRect rectDummy (0, 0, 0, 0);
        m_wndList.Create(WS_CHILD | WS_VISIBLE | LVS_REPORT,
            rectDummy, this, 1);
    
        return 0;
    }
    
  4. 重複上述步驟,但WM_SIZE訊息。這會導致您的應用程式檢視,以每次使用者變更應用程式視窗的大小會重新繪製。取代為定義OnSize與下列程式碼的方法:

    void CMFCShellControlsView::OnSize(UINT nType, int cx, int cy)
    {
        CView::OnSize(nType, cx, cy);
        m_wndList.SetWindowPos(NULL, -1, -1, cx, cy,
            SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
    }
    
  5. 最後一個步驟是要連接CMFCShellTreeCtrlCMFCShellListCtrl物件藉由使用CMFCShellTreeCtrl::SetRelatedList方法。您呼叫這個方法之後, CMFCShellListCtrl就會自動顯示在 [選取項目的內容CMFCShellTreeCtrl。我們將會執行此作業OnActivateView方法,這麼做會覆寫從CView::OnActivateView

    在 MFCShellControlsView.h 標頭檔中,在CMFCShellControlsView類別宣告,加入以下方法宣告:

    protected:
        virtual void OnActivateView(BOOL bActivate,
            CView* pActivateView,
            CView* pDeactiveView);
    

    接下來,將這個方法的定義加入至 MFCShellControlsView.cpp 的原始程式檔中:

    void CMFCShellControlsView::OnActivateView(BOOL bActivate,
        CView* pActivateView,
        CView* pDeactiveView) 
    {
        if (bActivate && AfxGetMainWnd() != NULL)
        {
            ((CMainFrame*)AfxGetMainWnd())->GetShellTreeCtrl().SetRelatedList(&m_wndList);
        }
    
        CView::OnActivateView(bActivate, pActivateView, pDeactiveView);
    }
    

    因為我們所呼叫的方法CMainFrame類別中,我們必須將#include指示詞在 MFCShellControlsView.cpp 的原始程式檔的頂端:

    #include "MainFrm.h"
    
  6. 建置並執行應用程式,以確認應用程式建立成功。若要從建置應用程式時, 建置 ] 功能表選取 建置方案。如果應用程式建置成功時,執行選取 [巨集啟動偵錯偵錯功能表。

    您現在應該可以看到選取的項目之詳細資料CMFCShellTreeCtrl在 [檢視] 窗格中。當您按一下中的節點CMFCShellTreeCtrlCMFCShellListCtrl會自動更新。同樣地,如果您按兩下資料夾,以在CMFCShellListCtrlCMFCShellTreeCtrl ,應自動更新。

    在樹狀目錄控制項,或在清單控制項中的任何項目上按一下滑鼠右鍵。注意您會收到相同的快顯功能表,彷彿正在使用真正的檔案總管]。

後續步驟

  • 在精靈建立 outlook 功能區兼具資料夾 窗格和 行事曆窗格。可能絲毫 「 不會是合理的作法行事曆中的檔案總管視窗的窗格。因此,現在移除該窗格。

  • CMFCShellListCtrl支援,例如在不同的模式中檢視檔案大圖示小圖示清單,以及的詳細資訊。更新您的應用程式,以實作這項功能。Hint: see Visual C++ 範例.

請參閱

其他資源

逐步解說 (MFC)