Condividi tramite


Servizi di CWinApp speciale

Oltre a eseguire il ciclo di messaggi e fornire una possibilità di inizializzare l'applicazione e pulire successivamente, CWinApp sono disponibili molti altri servizi.

Registrazione della shell

Per impostazione predefinita, la Creazione guidata applicazione MFC consente all'apertura di file di dati che l'applicazione ha creato tramite doppio clic in Esplora file o in File Manager.Se l'applicazione è un'applicazione MDI e si specifica un'estensione per i file creati dall'applicazione, la Creazione guidata applicazione MFC aggiunge le chiamate a RegisterShellFileTypes le funzioni membro e di EnableShellOpen di CWinApp a InitInstance eseguono l'override che scrive automaticamente.

RegisterShellFileTypes registra i tipi di documento dell'applicazione con Esplora file o il File Manager.La funzione aggiunge voci al database di registrazione che gestisce le finestre.Le voci relative a ciascun tipo di documento, associare un'estensione di file al tipo di file, specificare una riga di comando per aprire l'applicazione e specificare un comando (DDE) di scambio dinamico dati aprire un documento di quel tipo.

EnableShellOpen esegue il processo consentendo l'applicazione ricevere i controlli di DDE da Esplora file o File Manager aprire il file scelto dall'utente.

Questo supporto automatico di registrazione in CWinApp elimina la necessità di fornire un file REG con l'applicazione o di eseguire le operazioni di installazione speciale.

Se si desidera inizializzare GDI+ per l'applicazione (chiamando GdiplusStartup nella funzione di InitInstance ), è necessario eliminare il thread in background GDI+.

A questo scopo è necessario impostare il membro di SuppressBackgroundThread della struttura di GdiplusStartupInput a TRUE.In eliminare il thread in background GDI+, le chiamate di NotificationUnhook e di NotificationHook (vedere GdiplusStartupOutput) devono essere eseguite prima di fornire e di uscire dal ciclo dell'applicazione.Di conseguenza, l'oggetto ideale per chiamare GdiplusStartup e le funzioni di notifica hook sarebbero nell'override della funzione virtuale CWinApp::Run, come illustrato di seguito:

int CMyWinApp::Run()
{
   GdiplusStartupInput gdiSI;
   GdiplusStartupOutput gdiSO;
   ULONG_PTR gdiToken;
   ULONG_PTR gdiHookToken;

   gdiSI.SuppressBackgroundThread = TRUE;
   GdiplusStartup(&gdiToken,&gdiSI,&gdiSO);
   gdiSO.NotificationHook(&gdiHookToken);
   int nRet = CWinApp::Run();

   gdiSO.NotificationUnhook(gdiHookToken);
   GdiplusShutdown(gdiToken);

   return nRet;
}

Se non si elimina il thread in background GDI+, i controlli di DDE in anticipo possono essere rilasciati sull'applicazione prima della finestra principale sia stata creata.I controlli di DDE generati dalla shell in anticipo possono essere interrotti, con conseguente messaggi di errore.

Trascinamento della selezione del File Manager

I file possono essere trascinati dalla finestra visualizzazione del file in File Manager o Esplora file in una finestra nell'applicazione.È possibile, ad esempio, attivare uno o più file da trascinare la finestra principale di un'applicazione MDI, in cui è possibile recuperare i nomi file e aprire finestre figlio MDI ai file.

Per attivare il file trascinare e il calo nell'applicazione, la Creazione guidata applicazione MFC scrive una chiamata alla funzione membro DragAcceptFiles di CWnd della finestra cornice principale nel InitInstance.È possibile rimuovere la chiamata non si desidera distribuire la funzionalità di trascinamento.

[!NOTA]

È possibile distribuire i dati/trascinare trascinamento della selezione più generali tra o in un documento con OLE.Per informazioni, vedere l'articolo Trascinamento della selezione (OLE).

Tenere traccia dei documenti utilizzati di recente

Quando l'utente apre e chiudere i file, l'oggetto applicazione tiene traccia dei quattro file utilizzati di recente.I nomi di questi file vengono aggiunti al File e vengono aggiornati quando vengono modificate.Il framework archivia questi nomi file nel Registro di sistema o nel file ini, con lo stesso nome del progetto e li legge dal file quando l'applicazione viene avviata.Override di InitInstance che la Creazione guidata applicazione MFC crea automaticamente includono una chiamata alla funzione membro LoadStdProfileSettingsdi CWinApp , che carica le informazioni del file ini o del Registro di sistema, inclusi i nomi file utilizzati di recente.

Queste voci vengono archiviate come segue:

  • In Windows NT, Windows 2000 e versioni successive, il valore viene archiviato in una chiave del Registro di sistema.

  • In Windows 3.x, il valore viene archiviato nel file di WIN.INI.

  • In Windows 95 e versioni successive, il valore viene archiviato in una versione memorizzata nella cache di WIN.INI.

Vedere anche

Concetti

Classe CWinApp: The Application