Condividi tramite


Servizi CWinApp speciali

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

Registrazione Shell

Per impostazione predefinita, la Creazione guidata di applicazione MFC consente all'utente di aprire file di dati che l'applicazione ha creato facendo doppio clic nell'Esplora file o nel 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 alle funzioni membro RegisterShellFileTypes e EnableShellOpen di CWinApp all'override InitInstance che scrive automaticamente.

RegisterShellFileTypes registra i tipi di documenti dell'applicazione tramite l'Esplora File o il File Manager. La funzione aggiunge voci al database di registrazione che Windows gestisce. Le voci registrano ogni tipo di documento, associano un'estensione di file al tipo di file, specificano una riga di comando per aprire l'applicazione e specificano un comando di scambio dinamico di dati (DDE) per aprire un documento di quel tipo.

EnableShellOpen completa il processo consentendo all'applicazione di ricevere i comandi DDE dal'Esplora file o dal File Manager per aprire il file scelto dall'utente.

Questo supporto automatico di registrazione in CWinApp elimina la necessità di fornire un file con estensione reg con l'applicazione o di eseguire operazioni di installazione speciali.

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

Si può fare ciò impostando il membro SuppressBackgroundThread della struttura GdiplusStartupInput a TRUE. Quando si elimina il thread in background di GDI+, le chiamate NotificationUnhook e NotificationHook (vedere GdiplusStartupOutput) devono essere eseguite prima di entrare e uscire dal ciclo di messaggio dell'applicazione. Di conseguenza, si consiglia di chiamare GdiplusStartup e le funzioni di notifica hook in un 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 sopprime il thread di background GDI+, i comandi DDE possono essere rilasciati prematuramente all'applicazione prima che la finestra principale sia stata creata. I comandi DDE rilasciati dalla shell possono essere interrotti prematuramente, con conseguenti messaggi di errore.

Trascinamento della selezione in File Manager

I file possono essere trascinati dalla finestra visualizzazione del file del File Manager o dell'Esplora file ad una finestra nell'applicazione. È possibile, ad esempio, abilitare uno o più file ad essere trascinati alla finestra principale di un'applicazione MDI, in cui l'applicazione può recuperare i nomi dei file e aprire finestre figlio MDI per tali file.

Per abilitar il trascinare e il rilascio file nell'applicazione, la Creazione guidata applicazione MFC scrive una chiamata alla funzione membro CWnd di DragAcceptFiles per la finestra principale in InitInstance. È possibile rimuovere quella chiamata se non si desidera implementare la funzionalità di trascinamento della selezione.

Nota

È anche possibile implementare un trascinamento della selezione più generale trascinando i dati tra o nei documenti tramite OLE.Per informazioni, vedere l'articolo Trascinamento della selezione (OLE).

Tenere traccia dei documenti utilizzati di recente

Poiché 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 menu File e vengono aggiornati quando vengono modificati. Il framework archivia questi nomi file nel Registro di sistema o nei file .ini, con lo stesso nome del progetto e li legge dal file quando l'applicazione viene avviata. L'override di InitInstance che la Creazione guidata applicazione MFC crea automaticamente include una chiamata alla funzione membro CWinApp di LoadStdProfileSettings, che carica le informazioni dal registro o dal file .ini, includendo i nomi dei file utilizzati di recente.

Queste voci vengono archiviate come segue:

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

  • In windows 3.x, il valore viene memorizzato nel file WIN.INI.

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

Vedere anche

Concetti

CWinApp: classe Application