Panduan: Menggunakan Kontrol Shell MFC Baru

Dalam panduan ini, Anda akan membuat aplikasi yang menyerupan File Explorer. Anda akan membuat jendela yang memiliki dua panel. Panel kiri akan menyimpan objek CMFCShellTreeCtrl yang menampilkan Desktop Anda dalam tampilan hierarkis. Panel kanan akan menahan CMFCShellListCtrl yang memperlihatkan file di folder yang dipilih di panel kiri.

Prasyarat

  • Di Visual Studio 2017 dan yang lebih baru, dukungan MFC adalah komponen opsional. Untuk menginstalnya, buka Penginstal Visual Studio dari Windows menu Mulai. Temukan versi Visual Studio yang Anda gunakan dan pilih tombol Ubah . Pastikan petak Peta Pengembangan Desktop dengan C++ dicentang. Di bawah Komponen Opsional, centang tombol Dukungan MFC.

  • Panduan ini mengasumsikan bahwa Anda telah menyiapkan Visual Studio untuk menggunakan Pengaturan Pengembangan Umum. Jika Anda menggunakan pengaturan pengembangan yang berbeda, beberapa jendela Visual Studio yang kami gunakan dalam panduan ini mungkin tidak ditampilkan secara default.

Untuk membuat aplikasi MFC baru dengan menggunakan MFC Application Wizard

Langkah-langkah ini bervariasi tergantung pada versi Visual Studio mana yang Anda gunakan. Untuk melihat dokumentasi untuk versi Visual Studio pilihan Anda, gunakan kontrol pemilih Versi. Kontrol tersebut dapat ditemukan di bagian atas daftar isi pada halaman ini.

Untuk membuat proyek MFC di Visual Studio

  1. Dari menu utama, pilih File>Baru>Proyek untuk membuka kotak dialog Buat Proyek Baru.

  2. Dalam kotak pencarian di bagian atas, ketik MFC lalu pilih Aplikasi MFC dari daftar hasil.

  3. Klik Berikutnya. Di halaman berikutnya, masukkan nama untuk proyek, dan tentukan lokasi proyek jika diinginkan.

  4. Pilih tombol Buat untuk membuat proyek.

    Setelah Wizard Aplikasi MFC ditampilkan, gunakan opsi berikut:

    1. Pilih Jenis Aplikasi di sebelah kiri. Lalu pilih Dokumen tunggal dan pilih Dukungan arsitektur Dokumen/Tampilan. Di bawah Gaya proyek, pilih Visual Studio, dan dari daftar turun bawah Gaya visual dan warna pilih Office 2007 (Tema biru).

    2. Pada panel Dukungan Dokumen Gabungan, pilih Tidak Ada.

    3. Jangan membuat perubahan apa pun pada panel Properti Templat Dokumen.

    4. Pada panel Fitur Antarmuka Pengguna, pastikan opsi Gunakan bilah menu dan toolbar dipilih. Biarkan semua opsi lain apa adanya.

    5. Pada panel Fitur Tingkat Lanjut, pilih opsi kontrol ActiveX, Manifes Kontrol Umum, dan panel Navigasi. Tinggalkan segala sesuatu yang lain apa adanya. Opsi Panel Navigasi akan menyebabkan panduan membuat panel di sebelah kiri jendela dengan CMFCShellTreeCtrl yang sudah disematkan.

    6. Kami tidak akan membuat perubahan apa pun pada panel Kelas yang Dihasilkan, jadi klik Selesai untuk membuat proyek MFC baru Anda.

Untuk membuat proyek MFC di Visual Studio 2017 atau yang lebih lama

  1. Gunakan Wizard Aplikasi MFC untuk membuat aplikasi MFC baru. Untuk menjalankan wizard, dari menu File pilih Baru, lalu pilih Proyek. Kotak dialog Proyek Baru akan ditampilkan.

  2. Dalam kotak dialog Proyek Baru, perluas simpul Visual C++ di panel Jenis proyek dan pilih MFC. Kemudian, di panel Templat , pilih Aplikasi MFC. Ketik nama untuk proyek, seperti MFCShellControls dan klik OK.

    Setelah Wizard Aplikasi MFC ditampilkan, gunakan opsi berikut:

    1. Pada panel Jenis Aplikasi, di bawah Jenis aplikasi, kosongkan opsi Dokumen bertab. Selanjutnya, pilih Dokumen tunggal dan pilih Dukungan arsitektur Dokumen/Tampilan. Di bawah Gaya proyek, pilih Visual Studio, dan dari daftar turun bawah Gaya visual dan warna pilih Office 2007 (Tema biru).

    2. Pada panel Dukungan Dokumen Gabungan, pilih Tidak Ada.

    3. Jangan membuat perubahan apa pun pada panel String Templat Dokumen.

    4. Pada panel Dukungan Database (Visual Studio 2015 dan yang lebih lama), pilih Tidak Ada karena aplikasi tidak menggunakan database.

    5. Pada panel Fitur Antarmuka Pengguna, pastikan opsi Gunakan bilah menu dan toolbar dipilih. Biarkan semua opsi lain apa adanya.

    6. Pada panel Fitur Tingkat Lanjut, di bawah Fitur tingkat lanjut, pilih hanya kontrol ActiveX dan Manifes Kontrol Umum. Di bawah Panel bingkai tingkat lanjut, pilih hanya opsi panel Navigasi. Ini akan menyebabkan wizard membuat panel di sebelah kiri jendela dengan yang CMFCShellTreeCtrl sudah disematkan.

    7. Kami tidak akan membuat perubahan apa pun pada panel Kelas yang Dihasilkan, jadi klik Selesai untuk membuat proyek MFC baru Anda.

Verifikasi bahwa aplikasi berhasil dibuat dengan membangun dan menjalankannya. Untuk membuat aplikasi, dari menu Build pilih Build Solution. Jika aplikasi berhasil dibangun, jalankan aplikasi dengan memilih Mulai Penelusuran Kesalahan dari menu Debug .

Panduan secara otomatis membuat aplikasi yang memiliki bilah menu standar, bilah alat standar, bilah status standar, dan bilah Outlook di sebelah kiri jendela dengan tampilan Folder dan tampilan Kalender .

Untuk menambahkan kontrol daftar shell ke tampilan dokumen

  1. Di bagian ini, Anda akan menambahkan instans CMFCShellListCtrl ke tampilan yang dibuat wizard. Buka file header tampilan dengan mengklik ganda MFCShellControlsView.h di Penjelajah Solusi.

    Temukan direktif #pragma once di dekat bagian atas file header. Segera di bawahnya, tambahkan kode ini untuk menyertakan file header untuk CMFCShellListCtrl:

    #include <afxShellListCtrl.h>
    

    Sekarang tambahkan variabel anggota jenis CMFCShellListCtrl. Pertama, temukan komentar berikut di file header:

    // Generated message map functions
    

    Tepat di atas komentar tersebut, tambahkan kode ini:

    private:
    CMFCShellListCtrl m_wndList;
    
  2. Wizard Aplikasi MFC sudah membuat CMFCShellTreeCtrl objek di CMainFrame kelas , tetapi merupakan anggota yang dilindungi. Kita akan mengakses objek nanti, jadi buat aksesor untuk itu sekarang. Buka file header MainFrm.h dengan mengklik dua kali di Penjelajah Solusi. Temukan komentar berikut:

    // Attributes
    

    Segera di bawahnya, tambahkan deklarasi metode berikut:

    public:
        CMFCShellTreeCtrl& GetShellTreeCtrl();
    

    Selanjutnya, buka file sumber MainFrm.cpp dengan mengklik dua kali di Penjelajah Solusi. Di bagian bawah file tersebut, tambahkan definisi metode berikut:

    CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl()
    {
         return m_wndTree;
    }
    
  3. Sekarang kita memperbarui CMFCShellControlsView kelas untuk menangani WM_CREATE pesan windows. Buka jendela Tampilan Kelas dan pilih CMFCShellControlsView kelas . Klik kanan dan pilih Properti.

    Selanjutnya, di Panduan Kelas, klik tab Pesan . Gulir ke bawah hingga Anda menemukan WM_CREATE pesan. Dari daftar drop-down di samping WM_CREATE, pilih <Tambahkan> AktifBuat. Perintah membuat handler pesan untuk kami dan secara otomatis memperbarui peta pesan MFC.

    Dalam metode , OnCreate kita sekarang akan membuat objek kita CMFCShellListCtrl . OnCreate Temukan definisi metode dalam file sumber MFCShellControlsView.cpp, dan ganti implementasinya dengan kode berikut:

    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. Ulangi langkah sebelumnya tetapi untuk WM_SIZE pesan. Ini akan menyebabkan tampilan aplikasi Anda digambar ulang setiap kali pengguna mengubah ukuran jendela aplikasi. Ganti definisi untuk OnSize metode dengan kode berikut:

    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. Langkah terakhir adalah menyambungkan CMFCShellTreeCtrl objek dan CMFCShellListCtrl dengan menggunakan metode CMFCShellTreeCtrl::SetRelatedList . Setelah Anda memanggil CMFCShellTreeCtrl::SetRelatedList, CMFCShellListCtrl akan secara otomatis menampilkan konten item yang dipilih di CMFCShellTreeCtrl. Kami menghubungkan objek dalam OnActivateView metode , yang ditimpa dari CView::OnActivateView.

    Dalam file header MFCShellControlsView.h, di dalam CMFCShellControlsView deklarasi kelas, tambahkan deklarasi metode berikut:

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

    Selanjutnya, tambahkan definisi untuk metode ke file sumber 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);
    }
    

    Karena kami memanggil metode dari CMainFrame kelas , kita harus menambahkan #include direktif di bagian atas file sumber MFCShellControlsView.cpp:

    #include "MainFrm.h"
    
  6. Verifikasi bahwa aplikasi berhasil dibuat dengan membangun dan menjalankannya. Untuk membuat aplikasi, dari menu Build pilih Build Solution. Jika aplikasi berhasil dibangun, jalankan dengan memilih Mulai Debugging dari menu Debug .

    Sekarang Anda akan melihat detail untuk item yang dipilih di CMFCShellTreeCtrl panel tampilan. Ketika Anda mengklik simpul di CMFCShellTreeCtrl, CMFCShellListCtrl akan diperbarui secara otomatis. Demikian juga, jika Anda mengklik ganda folder di CMFCShellListCtrl, CMFCShellTreeCtrl akan diperbarui secara otomatis.

    Klik kanan item apa pun di kontrol pohon atau di kontrol daftar. Anda mendapatkan menu konteks yang sama seolah-olah Anda menggunakan File Explorer asli.

Langkah berikutnya

  • Panduan membuat bilah Outlook dengan panel Folder dan panel Kalender . Mungkin tidak masuk akal untuk memiliki panel Kalender di jendela Explorer , jadi hapus panel itu sekarang.

  • Mendukung CMFCShellListCtrl tampilan file dalam mode yang berbeda, seperti Ikon Besar, Ikon Kecil, Daftar, dan Detail. Perbarui aplikasi Anda untuk menerapkan fungsionalitas ini. Petunjuk: lihat Sampel Visual C++.

Baca juga

Walkthroughs