Condividi tramite


Procedura dettagliata: utilizzo dei nuovi controlli Shell MFC

In questa procedura dettagliata si creerà un'applicazione simile a Esplora file. Verrà creata una finestra con due riquadri. Il riquadro sinistro conterrà un oggetto CMFCShellTreeCtrl che visualizza il desktop in una visualizzazione gerarchica. Il riquadro destro conterrà un CMFCShellListCtrl che mostra i file nella cartella selezionata nel riquadro sinistro.

Prerequisiti

  • In Visual Studio 2017 e versioni successive il supporto MFC è un componente facoltativo. Per installarlo, aprire il Programma di installazione di Visual Studio da Windows menu Start. Trovare la versione di Visual Studio in uso e scegliere il pulsante Modifica . Verificare che il riquadro Sviluppo di applicazioni desktop con C++ sia selezionato. In Componenti facoltativi selezionare il pulsante Supporto MFC.

  • Questa procedura dettagliata presuppone che Visual Studio sia stato configurato per l'uso di Impostazioni sviluppo generale. Se si usa un'impostazione di sviluppo diversa, alcune finestre di Visual Studio usate in questa procedura dettagliata potrebbero non essere visualizzate per impostazione predefinita.

Per creare una nuova applicazione MFC tramite la Creazione guidata applicazione MFC

Questi passaggi variano a seconda della versione di Visual Studio in uso. Per visualizzare la documentazione relativa alla versione preferita di Visual Studio, usare il controllo selettore della versione . Si trova nella parte superiore del sommario in questa pagina.

Per creare un progetto MFC in Visual Studio

  1. Dal menu principale scegliere File>Nuovo>Progetto per aprire la finestra di dialogo Crea nuovo progetto.

  2. Nella casella di ricerca nella parte superiore digitare MFC e quindi scegliere App MFC dall'elenco risultati.

  3. Fare clic su Avanti. Nella pagina successiva immettere un nome per il progetto e specificare il percorso del progetto, se necessario.

  4. Scegliere il pulsante Crea per creare il progetto.

    Dopo la visualizzazione guidata applicazione MFC, usare le opzioni seguenti:

    1. Scegliere Tipo di applicazione a sinistra. Selezionare quindi Documento singolo e selezionare Supporto architettura documento/visualizzazione. In Stile progetto selezionare Visual Studio e nell'elenco a discesa Stile e colori dell'oggetto visivo selezionare Office 2007 (tema blu).

    2. Nel riquadro Supporto documenti composti selezionare Nessuno.

    3. Non apportare modifiche al riquadro Proprietà modello di documento.

    4. Nel riquadro Funzionalità interfaccia utente verificare che l'opzione Usa barra dei menu e barra degli strumenti sia selezionata. Lasciare invariate tutte le altre opzioni.

    5. Nel riquadro Funzionalità avanzate selezionare Controlli ActiveX, Manifesto controllo comune e opzione riquadro di spostamento. Lascia inalterato il resto. L'opzione Riquadro di spostamento causerà la creazione guidata del riquadro a sinistra della finestra con un CMFCShellTreeCtrl oggetto già incorporato.

    6. Non verranno apportate modifiche al riquadro Classi generate, quindi fare clic su Fine per creare il nuovo progetto MFC.

Per creare un progetto MFC in Visual Studio 2017 o versioni precedenti

  1. Usare la Creazione guidata applicazione MFC per creare una nuova applicazione MFC. Per eseguire la procedura guidata, scegliere Nuovo dal menu File e quindi selezionare Progetto. Verrà visualizzata la finestra di dialogo Nuovo progetto .

  2. Nella finestra di dialogo Nuovo progetto espandere il nodo Visual C++ nel riquadro Tipi di progetto e selezionare MFC. Quindi, nel riquadro Modelli selezionare Applicazione MFC. Digitare un nome per il progetto, ad esempio MFCShellControls e fare clic su OK.

    Dopo la visualizzazione guidata applicazione MFC, usare le opzioni seguenti:

    1. Nel riquadro Tipo di applicazione, in Tipo di applicazione, deselezionare l'opzione Documenti a schede. Selezionare quindi Documento singolo e selezionare Supporto architettura documento/visualizzazione. In Stile progetto selezionare Visual Studio e nell'elenco a discesa Stile e colori dell'oggetto visivo selezionare Office 2007 (tema blu).

    2. Nel riquadro Supporto documenti composti selezionare Nessuno.

    3. Non apportare modifiche al riquadro Stringhe modello di documento.

    4. Nel riquadro Supporto database (Visual Studio 2015 e versioni precedenti) selezionare Nessuno perché l'applicazione non usa un database.

    5. Nel riquadro Funzionalità interfaccia utente verificare che l'opzione Usa barra dei menu e barra degli strumenti sia selezionata. Lasciare invariate tutte le altre opzioni.

    6. Nel riquadro Funzionalità avanzate, in Funzionalità avanzate, selezionare solo controlli ActiveX e Manifesto del controllo comune. In Riquadri cornice avanzati selezionare solo l'opzione Riquadro di spostamento. La procedura guidata creerà il riquadro a sinistra della finestra con un CMFCShellTreeCtrl oggetto già incorporato.

    7. Non verranno apportate modifiche al riquadro Classi generate, quindi fare clic su Fine per creare il nuovo progetto MFC.

Verificare che l'applicazione sia stata creata correttamente compilando ed eseguendola. Per compilare l'applicazione, scegliere Compila soluzione dal menu Compila. Se l'applicazione viene compilata correttamente, eseguire l'applicazione selezionando Avvia debug dal menu Debug .

La procedura guidata crea automaticamente un'applicazione con una barra dei menu standard, una barra degli strumenti standard, una barra di stato standard e una barra di Outlook a sinistra della finestra con una visualizzazione Cartelle e una visualizzazione Calendario .

Per aggiungere il controllo elenco shell alla visualizzazione documento

  1. In questa sezione si aggiungerà un'istanza di CMFCShellListCtrl alla visualizzazione creata dalla procedura guidata. Aprire il file di intestazione di visualizzazione facendo doppio clic su MFCShellControlsView.h nel Esplora soluzioni.

    Individuare la #pragma once direttiva nella parte superiore del file di intestazione. Immediatamente sotto aggiungi questo codice per includere il file di intestazione per CMFCShellListCtrl:

    #include <afxShellListCtrl.h>
    

    Aggiungere ora una variabile membro di tipo CMFCShellListCtrl. Individuare prima di tutto il commento seguente nel file di intestazione:

    // Generated message map functions
    

    Immediatamente sopra il commento aggiungere questo codice:

    private:
    CMFCShellListCtrl m_wndList;
    
  2. La Creazione guidata applicazione MFC ha già creato un CMFCShellTreeCtrl oggetto nella CMainFrame classe , ma è un membro protetto. Si accederà all'oggetto in un secondo momento, quindi si creerà una funzione di accesso per il momento. Aprire il file di intestazione MainFrm.h facendo doppio clic su di esso nel Esplora soluzioni. Individuare il commento seguente:

    // Attributes
    

    Immediatamente sotto di esso aggiungere la dichiarazione di metodo seguente:

    public:
        CMFCShellTreeCtrl& GetShellTreeCtrl();
    

    Aprire quindi il file di origine MainFrm.cpp facendo doppio clic su di esso nella Esplora soluzioni. Nella parte inferiore del file aggiungere la definizione del metodo seguente:

    CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl()
    {
         return m_wndTree;
    }
    
  3. Ora aggiorniamo la CMFCShellControlsView classe per gestire il messaggio di WM_CREATE Windows. Aprire la finestra Visualizzazione classi e selezionare la CMFCShellControlsView classe . Fare clic con il pulsante destro del mouse e selezionare Proprietà.

    Successivamente, in Creazione guidata classe fare clic sulla scheda Messaggi . Scorrere verso il basso fino a trovare il WM_CREATE messaggio. Nell'elenco a discesa accanto a WM_CREATEselezionare <Aggiungi> OnCrea. Il comando crea automaticamente un gestore messaggi e aggiorna automaticamente la mappa dei messaggi MFC.

    OnCreate Nel metodo si creerà ora l'oggetto CMFCShellListCtrl . Trovare la definizione del OnCreate metodo nel file di origine MFCShellControlsView.cpp e sostituirla con il codice seguente:

    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. Ripetere il passaggio precedente, ma per il WM_SIZE messaggio. La visualizzazione delle applicazioni verrà ridisegnata ogni volta che un utente modifica le dimensioni della finestra dell'applicazione. Sostituire la definizione per il OnSize metodo con il codice seguente:

    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. L'ultimo passaggio consiste nel connettere gli CMFCShellTreeCtrl oggetti e CMFCShellListCtrl usando il metodo CMFCShellTreeCtrl::SetRelatedList . Dopo aver chiamato CMFCShellTreeCtrl::SetRelatedList, CMFCShellListCtrl verrà visualizzato automaticamente il contenuto dell'elemento selezionato in CMFCShellTreeCtrl. Connettiamo gli oggetti nel OnActivateView metodo, sottoposto a override da CView::OnActivateView.

    Nel file di intestazione MFCShellControlsView.h aggiungere la dichiarazione di metodo seguente all'interno della dichiarazione di CMFCShellControlsView classe:

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

    Aggiungere quindi la definizione per il metodo al file di origine 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);
    }
    

    Poiché si chiamano metodi dalla CMainFrame classe , è necessario aggiungere una #include direttiva all'inizio del file di origine MFCShellControlsView.cpp:

    #include "MainFrm.h"
    
  6. Verificare che l'applicazione sia stata creata correttamente compilando ed eseguendola. Per compilare l'applicazione, scegliere Compila soluzione dal menu Compila. Se l'applicazione viene compilata correttamente, eseguirla selezionando Avvia debug dal menu Debug .

    Verranno ora visualizzati i dettagli per l'elemento selezionato nel CMFCShellTreeCtrl riquadro di visualizzazione. Quando si fa clic su un nodo in , l'oggetto CMFCShellTreeCtrlCMFCShellListCtrl verrà aggiornato automaticamente. Analogamente, se si fa doppio clic su una cartella in , l'oggetto CMFCShellListCtrlCMFCShellTreeCtrl deve essere aggiornato automaticamente.

    Fare clic con il pulsante destro del mouse su qualsiasi elemento nel controllo albero o nel controllo elenco. Si ottiene lo stesso menu di scelta rapida come se si usasse il Esplora file reale.

Passaggi successivi

  • La procedura guidata ha creato una barra di Outlook con un riquadro Cartelle e un riquadro Calendario . Probabilmente non ha senso avere un riquadro Calendario in una finestra di Esplora risorse, quindi rimuovere il riquadro ora.

  • CMFCShellListCtrl supporta la visualizzazione di file in modalità diverse, ad esempio icone di grandi dimensioni, icone piccole, elenco e dettagli. Aggiornare l'applicazione per implementare questa funzionalità. Hint: vedere Esempi di Visual C++.

Vedi anche

Procedure dettagliate