Aracılığıyla paylaş


İzlenecek yol: Yeni MFC Kabuk Denetimlerini Kullanma

Bu kılavuzda, Dosya Gezgini benzer bir uygulama oluşturacaksınız. İki bölmesi olan bir pencere oluşturacaksınız. Sol bölmede, Masaüstünüzü hiyerarşik bir görünümde görüntüleyen bir CMFCShellTreeCtrl nesnesi bulunur. Sağ bölmede, sol bölmede seçilen klasördeki dosyaları gösteren bir CMFCShellListCtrl bulunur.

Ön koşullar

  • Visual Studio 2017 ve sonraki sürümlerde MFC desteği isteğe bağlı bir bileşendir. Yüklemek için Windows Başlat menüsü Visual Studio Yükleyicisi açın. Kullandığınız Visual Studio sürümünü bulun ve Değiştir düğmesini seçin. C++ ile Masaüstü Geliştirme kutucuğunun işaretli olduğundan emin olun. İsteğe Bağlı Bileşenler'in altında MFC Desteği düğmesini denetleyin.

  • Bu kılavuzda, Visual Studio'yu Genel Geliştirme Ayarlar kullanacak şekilde ayarladığınız varsayılır. Farklı bir geliştirme ayarı kullanıyorsanız, bu kılavuzda kullandığımız bazı Visual Studio pencereleri varsayılan olarak görüntülenmeyebilir.

MFC Uygulama Sihirbazı'nı kullanarak yeni bir MFC uygulaması oluşturmak için

Bu adımlar, hangi Visual Studio sürümünü kullandığınıza bağlı olarak değişir. Tercih ettiğiniz Visual Studio sürümünün belgelerini görmek için Sürüm seçici denetimini kullanın. Bu sayfadaki içindekiler tablosunun en üstünde bulunur.

Visual Studio'da MFC projesi oluşturmak için

  1. Ana menüden Dosya>Yeni Proje'yi seçerek Yeni>Proje Oluştur iletişim kutusunu açın.

  2. Üstteki arama kutusuna MFC yazın ve sonuç listesinden MFC Uygulaması'nı seçin.

  3. İleri'ye tıklayın. Sonraki sayfada proje için bir ad girin ve isterseniz proje konumunu belirtin.

  4. Projeyi oluşturmak için Oluştur düğmesini seçin.

    MFC Uygulama Sihirbazı görüntülendikten sonra aşağıdaki seçenekleri kullanın:

    1. Sol tarafta Uygulama Türü'nü seçin. Ardından Tek belge'yi ve ardından Belge/Görünüm mimarisi desteğini seçin. Proje stili'nin altında Visual Studio'yu seçin ve Görsel stili ve renkler açılan listesinden Office 2007 (Mavi tema)'yı seçin.

    2. Bileşik Belge Desteği bölmesinde Yok'a tıklayın.

    3. Belge Şablonu Özellikleri bölmesinde değişiklik yapmayın.

    4. Kullanıcı Arabirimi Özellikleri bölmesinde Menü çubuğu ve araç çubuğu kullan seçeneğinin belirlendiğinden emin olun. Diğer tüm seçenekleri olduğu gibi bırakın.

    5. Gelişmiş Özellikler bölmesinde ActiveX denetimleri, Ortak Denetim Bildirimi ve Gezinti bölmesi seçeneğini belirleyin. Diğer herşeyi olduğu gibi bırakın. Gezinti Bölmesi seçeneği, sihirbazın pencerenin solunda zaten eklenmiş bir CMFCShellTreeCtrl bölme oluşturmasına neden olur.

    6. Oluşturulan Sınıflar bölmesinde herhangi bir değişiklik yapmayacağız, bu nedenle yeni MFC projenizi oluşturmak için Son'a tıklayın.

Visual Studio 2017 veya önceki sürümlerinde MFC projesi oluşturmak için

  1. Yeni bir MFC uygulaması oluşturmak için MFC Uygulama Sihirbazı'nı kullanın. Sihirbazı çalıştırmak için Dosya menüsünden Yeni'yi ve ardından Proje'yi seçin. Yeni Proje iletişim kutusu görüntülenir.

  2. Yeni Proje iletişim kutusunda, Proje türleri bölmesinde Visual C++ düğümünü genişletin ve MFC'yi seçin. Ardından Şablonlar bölmesinde MFC Uygulaması'nı seçin. Proje için gibi MFCShellControls bir ad yazın ve Tamam'a tıklayın.

    MFC Uygulama Sihirbazı görüntülendikten sonra aşağıdaki seçenekleri kullanın:

    1. Uygulama Türü bölmesinde, Uygulama türü'nin altında Sekmeli belgeler seçeneğini temizleyin. Ardından Tek belge'yi ve ardından Belge/Görünüm mimarisi desteğini seçin. Proje stili'nin altında Visual Studio'yu seçin ve Görsel stili ve renkler açılan listesinden Office 2007 (Mavi tema)'yı seçin.

    2. Bileşik Belge Desteği bölmesinde Yok'a tıklayın.

    3. Belge Şablonu Dizeleri bölmesinde değişiklik yapmayın.

    4. Veritabanı Desteği bölmesinde (Visual Studio 2015 ve üzeri), uygulama veritabanı kullanmadığından Yok'a tıklayın.

    5. Kullanıcı Arabirimi Özellikleri bölmesinde Menü çubuğu ve araç çubuğu kullan seçeneğinin belirlendiğinden emin olun. Diğer tüm seçenekleri olduğu gibi bırakın.

    6. Gelişmiş Özellikler bölmesindeki Gelişmiş özellikler'in altında yalnızca ActiveX denetimleri ve Ortak Denetim Bildirimi'ni seçin. Gelişmiş çerçeve bölmeleri'nin altında yalnızca Gezinti bölmesi seçeneğini belirleyin. Sihirbazın pencerenin solunda zaten eklenmiş bir CMFCShellTreeCtrl bölme oluşturmasına neden olur.

    7. Oluşturulan Sınıflar bölmesinde herhangi bir değişiklik yapmayacağız, bu nedenle yeni MFC projenizi oluşturmak için Son'a tıklayın.

Uygulamanın oluşturup çalıştırarak başarıyla oluşturulduğunu doğrulayın. Uygulamayı derlemek için, Derleme menüsünden Çözüm Derle'yi seçin. Uygulama başarıyla derleniyorsa, Hata Ayıklama menüsünden Hata Ayıklamayı Başlat'ı seçerek uygulamayı çalıştırın.

Sihirbaz otomatik olarak standart menü çubuğu, standart araç çubuğu, standart durum çubuğu ve pencerenin solunda Klasörler görünümü ve Takvim görünümü bulunan bir Outlook çubuğu bulunan bir uygulama oluşturur.

Kabuk listesi denetimini belge görünümüne eklemek için

  1. Bu bölümde, sihirbazın oluşturduğu görünüme örneğini CMFCShellListCtrl ekleyeceksiniz. Çözüm Gezgini MFCShellControlsView.h dosyasına çift tıklayarak görünüm üst bilgisi dosyasını açın.

    Üst bilgi dosyasının #pragma once üst kısmına yakın yönergesini bulun. Hemen altına bu kodu öğesinin üst bilgi dosyasını CMFCShellListCtrliçerecek şekilde ekleyin:

    #include <afxShellListCtrl.h>
    

    Şimdi türünde CMFCShellListCtrlbir üye değişkeni ekleyin. İlk olarak, üst bilgi dosyasında aşağıdaki açıklamayı bulun:

    // Generated message map functions
    

    Bu açıklamanın hemen üstüne şu kodu ekleyin:

    private:
    CMFCShellListCtrl m_wndList;
    
  2. MFC Uygulama Sihirbazı sınıfta zaten bir CMFCShellTreeCtrl nesne CMainFrame oluşturmuştur, ancak korumalı bir üyedir. Nesneye daha sonra erişeceğiz, bu nedenle şimdi nesne için bir erişimci oluşturun. MainFrm.h üst bilgi dosyasını Çözüm Gezgini çift tıklayarak açın. Aşağıdaki açıklamayı bulun:

    // Attributes
    

    Hemen altına aşağıdaki yöntem bildirimini ekleyin:

    public:
        CMFCShellTreeCtrl& GetShellTreeCtrl();
    

    Ardından MainFrm.cpp kaynak dosyasını Çözüm Gezgini çift tıklayarak açın. Bu dosyanın en altına aşağıdaki yöntem tanımını ekleyin:

    CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl()
    {
         return m_wndTree;
    }
    
  3. Şimdi windows iletisini işlemek için sınıfını WM_CREATE güncelleştiriyoruzCMFCShellControlsView. Sınıf Görünümü penceresini açın ve sınıfı seçinCMFCShellControlsView. Sağ tıklayın ve Özellikler'i seçin.

    Ardından, Sınıf Sihirbazı'nda İletiler sekmesine tıklayın. İletiyi WM_CREATE bulana kadar aşağı kaydırın. öğesinin yanındaki WM_CREATEaçılan listeden EkleOluştur'u> seçin<. komutu bizim için bir ileti işleyicisi oluşturur ve MFC ileti eşlemesini otomatik olarak güncelleştirir.

    yönteminde OnCreate şimdi nesnemizi CMFCShellListCtrl oluşturacağız. OnCreate MFCShellControlsView.cpp kaynak dosyasında yöntem tanımını bulun ve uygulamasını aşağıdaki kodla değiştirin:

    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. Önceki adımı ileti için WM_SIZE yineleyin. Bu, bir kullanıcı uygulama penceresinin boyutunu değiştirdiğinden uygulama görünümünüzün yeniden çizilmesine neden olur. yönteminin OnSize tanımını aşağıdaki kodla değiştirin:

    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. Son adım, CMFCShellTreeCtrl::SetRelatedList yöntemini kullanarak ve CMFCShellListCtrl nesnelerini bağlamaktırCMFCShellTreeCtrl. çağrısı CMFCShellTreeCtrl::SetRelatedListyaptıktan sonra , CMFCShellListCtrl içinde CMFCShellTreeCtrlseçilen öğenin içeriğini otomatik olarak görüntüler. CView::OnActivateView'dan geçersiz kılınan yöntemindeki OnActivateView nesneleri bağlarız.

    MFCShellControlsView.h üst bilgi dosyasında, sınıf bildiriminin CMFCShellControlsView içine aşağıdaki yöntem bildirimini ekleyin:

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

    Ardından MFCShellControlsView.cpp kaynak dosyasına yönteminin tanımını ekleyin:

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

    sınıfından CMainFrame yöntemleri çağırdığımız için MFCShellControlsView.cpp kaynak dosyasının en üstüne bir #include yönerge eklemeliyiz:

    #include "MainFrm.h"
    
  6. Uygulamanın oluşturup çalıştırarak başarıyla oluşturulduğunu doğrulayın. Uygulamayı derlemek için, Derleme menüsünden Çözüm Derle'yi seçin. Uygulama başarıyla derleniyorsa, Hata Ayıklama menüsünden Hata Ayıklamayı Başlat'ı seçerek uygulamayı çalıştırın.

    Şimdi görünüm bölmesinde seçilen CMFCShellTreeCtrl öğenin ayrıntılarını görmeniz gerekir. içinde bir düğüme CMFCShellTreeCtrlCMFCShellListCtrl tıkladığınızda , otomatik olarak güncelleştirilir. Benzer şekilde, içinde CMFCShellListCtrlCMFCShellTreeCtrl bir klasöre çift tıklarsanız, otomatik olarak güncelleştirilmelidir.

    Ağaç denetiminde veya liste denetiminde herhangi bir öğeye sağ tıklayın. Gerçek Dosya Gezgini kullanıyorsanız aynı bağlam menüsünü alırsınız.

Sonraki adımlar

  • Sihirbaz, hem Klasörler bölmesi hem de Takvim bölmesi içeren bir Outlook çubuğu oluşturdu. Gezgin penceresinde Takvim bölmesinin olması büyük olasılıkla mantıklı değildir, bu nedenle bu bölmeyi şimdi kaldırın.

  • , CMFCShellListCtrl dosyaları Büyük Simgeler, Küçük Simgeler, Liste ve Ayrıntılar gibi farklı modlarda görüntülemeyi destekler. Bu işlevi uygulamak için uygulamanızı güncelleştirin. İpucu: Bkz . Visual C++ Örnekleri.

Ayrıca bkz.

Kılavuz