Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Neben dem Ausführen der Nachrichtenschleife und dem Geben Sie eine Gelegenheit, die Anwendung zu initialisieren und der Datei zu bereinigen, bietet CWinApp einige andere Dienste.
Shell-Registrierung
Standardmäßig macht der MFC-Anwendungs-Assistent es möglich, dass der Benutzer Datendateien öffnet, die Anwendung erstellt wurde, indem Sie im Datei-Explorer oder im Datei-Manager doppelklicken.Wenn die Anwendung eine MDI-Anwendung ist und Sie eine Erweiterung für die Dateien angeben, die die Anwendung erstellt, fügt der MFC-Anwendungs-Assistent Aufrufe RegisterShellFileTypes hinzu und EnableShellOpen-Memberfunktionen von CWinApp zu InitInstance überschreiben, dass es für Sie.
RegisterShellFileTypes registriert die Dokumenttypen der Anwendung mit Datei-Explorer oder Datei-Manager.Die Funktion fügt Einträge der Registrierungsdatenbank hinzu, die Windows verwaltet.Die Einträge registrieren jeden Dokumenttyp, weisen eine Dateierweiterung mit dem Dateityp zu, geben eine Befehlszeile an, um die Anwendung zu öffnen und einen Befehl des dynamischen Datenaustausch (DDE), ein Dokument dieses Typs zu öffnen.
EnableShellOpen schließt den Prozess ab, indem Sie Ihre Anwendung ermöglicht, DDE-Befehle Explorer oder Datei-Manager von Datei zu empfangen, die Datei zu öffnen, die der Benutzer ausgewählt hat.
Diese automatische Registrierungsunterstützung in CWinApp entfällt die Notwendigkeit, eine REG-Datei mit der Anwendung erfordert oder Sondereinbauarbeit anzuwenden.
Wenn Sie GDI+ für die Anwendung initialisieren möchten (durch Aufrufen von GdiplusStartup in der InitInstance-Funktion), müssen Sie den GDI+-Hintergrundthread unterdrücken.
Sie erreichen dies, indem Sie den SuppressBackgroundThread-Member der GdiplusStartupInput-Struktur zu TRUE festlegen.Wenn Sie den GDI+-Hintergrundthread unterdrückt, sollten NotificationHook und die NotificationUnhook Aufrufe (siehe GdiplusStartupOutput), nur vor dem Eingeben und dem Beenden der Meldungsschleife der Anwendung ausgeführt werden.Deshalb wäre ein guter Stadt, von GdiplusStartup aufzurufen und die Hookbenachrichtigungsfunktionen in einer Überschreibung der virtuellen Funktion CWinApp::Run, wie unten sein:
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;
}
Wenn Sie nicht den Thread des Hintergrunds GDI+ unterdrücken, können DDE-Befehle zur Anwendung vorzeitig ausgegeben werden, bevor sein Hauptfenster erstellt wurde.Die DDE-Befehle, die von der Shell ausgegeben werden, können, Ergebnis der Fehlermeldungen vorzeitig abgebrochen werden.
Datei-Manager-Drag & Drop
Dateien können vom Dateiansichtsfenster im Datei-Manager oder im Datei-Explorer zu einem Fenster in der Anwendung gezogen werden.Sie aktivierten beispielsweise eine oder mehrere an das Hauptfenster gezogen werden, Dateien, einer MDI-Anwendung, in dem die Anwendung die Dateinamen abrufen und untergeordnete MDI-Fenster für diese Dateien öffnen kann.
Um Datei-Drag& Drop in der Anwendung zu aktivieren, schreibt der MFC-Anwendungs-Assistent einen Aufruf der Memberfunktion CWndDragAcceptFiles für das Hauptrahmenfenster im InitInstance.Sie können diesen Aufruf entfernen, wenn Sie nicht die Drag & Drop-Funktion implementieren möchten.
Hinweis |
|---|
Sie können allgemeineren Drag & Drop auch implementieren Daten Dokument-mit OLE zwischen oder in Funktion-ziehend.Weitere Informationen finden Sie im Artikel Drag & Drop (OLE). |
Verfolgen der zuletzt verwendeten Dokumente
Wenn der Benutzer Dateien öffnet und schließt, verwaltet das Anwendungsobjekt die vier zuletzt verwendeten Dateien nachverfolgt.Die Namen dieser Dateien werden zur Menü Datei hinzugefügt und aktualisiert, wenn sie ändern.Das Framework speichert diese Dateinamen entweder in der Registrierung oder in der INI-Datei, mit dem gleichen Namen wie das Projekt und liest sie aus der Datei, wenn die Anwendung oben beginnt.Die InitInstance Überschreibung, die der MFC-Anwendungs-Assistent für Sie erstellt, enthält einen Aufruf der Memberfunktion CWinAppLoadStdProfileSettings, die Informationen aus der Registrierung oder der INI-Datei lädt, einschließlich zuletzt verwendete Dateinamen.
Diese Einträge werden gespeichert, wie folgt:
In Windows NT wird Windows 2000 und höher, der Wert in einem Registrierungsschlüssel gespeichert.
In Windows 3.x, wird der Wert in der WIN.INI-Datei gespeichert.
In Windows 95 und höher, wird der Wert in einer zwischengespeicherten Version von WIN.INI gespeichert.
Hinweis