Share via


Services de CWinApp de special

Outre l'exécution de la boucle de message et vous donner la possibilité d'initialiser l'application et pour nettoyer après cela, CWinApp fournit plusieurs autres services.

Inscription du shell

Par défaut, l'Assistant Application MFC permet à l'utilisateur ouvre des fichiers de données que votre application a créé en double-cliquant dessus dans l'Explorateur de fichiers ou le gestionnaire de fichiers.Si votre application est une application MDI et vous spécifiez une extension pour les fichiers que votre application crée la, l'Assistant Application MFC ajoute des appels à RegisterShellFileTypes et les fonctions membres d' EnableShellOpen de CWinApp à InitInstance remplacer qu'il écrit pour vous.

RegisterShellFileTypes stocke les types de document de votre application avec l'Explorateur de fichiers ou le gestionnaire de fichiers.La fonction ajoute des entrées dans la base de données d'inscription que les fenêtres met à jour.Les entrées inscrivent chaque type de document, avec une extension de fichier avec le type de fichier, spécifiez une ligne de commande pour ouvrir l'application, et spécifiez une commande de (DDE) échange dynamique de données pour ouvrir un document de ce type.

EnableShellOpen complète le processus en permettant à votre application accepte des commandes de DDE de l'Explorateur de fichiers ou de gestionnaire de fichiers d'ouvrir le fichier choisi par l'utilisateur.

Cette prise en charge automatique d'inscription dans CWinApp élimine la nécessité d'expédier un fichier .reg avec votre application ou d'effectuer le travail d'installation spéciale.

Si vous souhaitez initialiser GDI+ pour votre application (en appelant GdiplusStartup dans la fonction d' InitInstance ), vous devez supprimer le thread d'arrière-plan GDI+.

Vous pouvez effectuer cette opération en affectant au membre de SuppressBackgroundThread de la structure de GdiplusStartupInput à TRUE.En déplaçant le thread d'arrière-plan GDI+, les appels de NotificationHook et de NotificationUnhook (consultez GdiplusStartupOutput) doivent être faits juste avant d'écrire et de quitter la boucle de message de l'application.Par conséquent, un emplacement idéal pour appeler GdiplusStartup et les fonctions de notification de raccordement seraient dans une substitution de la fonction virtuelle CWinApp::Run, comme indiqué ci-dessous :

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;
}

Si vous ne supprimez pas le thread de GDI+ d'arrière-plan, les commandes de DDE prématurément peuvent être fournies à l'application avant que sa fenêtre principale a été créée.Les commandes de DDE émises par le shell peuvent être interrompues prématurément, provoquant ainsi des messages d'erreur.

Glisser-déplacer du gestionnaire de fichiers

Les fichiers peuvent faire glisser de la fenêtre affichage de fichier dans le gestionnaire de fichiers ou de l'Explorateur de fichiers vers une fenêtre dans votre application.Vous pouvez, par exemple, permettre à un ou plusieurs fichiers d'être déplacée à la fenêtre principale d'une application MDI, où l'application peut récupérer les noms de fichiers et les fenêtres MDI enfants ouvertes pour ces fichiers.

Pour activer le glisser-déplacer de fichier dans votre application, l'Assistant Application MFC écrit un appel à la fonction membre DragAcceptFiles de CWnd pour votre fenêtre frame principale de votre InitInstance.Vous pouvez supprimer cet appel si vous ne souhaitez pas implémenter la fonctionnalité de glisser-déplacer.

[!REMARQUE]

Vous pouvez également implémenter un glisser-déplacer plus général capacité- faisant glisser des données entre ou dans document- avec OLE.Pour plus d'informations, consultez l'article Glisser-déplacer OLE ().

Stocker les documents derniers fichiers utilisés

Lorsque l'utilisateur ouvre et de fermeture des fichiers, l'objet application contient les quatre derniers fichiers utilisés.Les noms de ces fichiers sont ajoutés au menu Fichier et mis à jour lorsqu'ils sont modifiés.L'infrastructure stocke ces noms de fichiers dans le Registre ou dans le fichier .ini, avec le même nom que votre projet et les lit à partir de le fichier lorsque votre application démarre.La substitution d' InitInstance que l'Assistant Application MFC crée pour vous inclut un appel à la fonction membre LoadStdProfileSettingsde CWinApp , qui charge les informations du Registre ou le fichier .ini, y compris les noms de le dernier fichier utilisé.

Ces entrées sont stockées comme suit :

  • Dans Windows NT, Windows 2000, et versions ultérieures, la valeur est stocké dans une clé de Registre.

  • Dans windows 3.x, la valeur est stockée dans le fichier de WIN.INI.

  • Dans Windows 95 et versions ultérieures, la valeur est stockée dans une version mise en cache de WIN.INI.

Voir aussi

Concepts

CWinApp: The Application, classe