AutoLoad
In manchen Fällen kann es von Vorteil sein, wenn beim Starten eines Programms
die zuletzt benutzte Datei automatisch geöffnet wird. Die MFC speichert die Liste
der zuletzt benutzten Dateien, die so genannte MRU-Liste, in einem Objekt der Klasse
CRecentFileList ab. Diese Liste wird innerhalb der CWinApp Methode
InitInstance(...) durch den Aufruf der Methode LoadStdProfileSettings(...)
eingelesen. Das Applikationsobjekt enthält einen (nicht dokumentierten!) Zeiger
m_pRecentFileList auf dieses CRecentFileList-Objekt. Um nun die
zuletzt benutzte Datei automatisch beim Programmstart einzulesen ist die InitInstance(...)
wie folgt zu erweitern:
#include <afxadv.h>
....
BOOL CSerializeApp::InitInstance()
{
....
// Verteilung der in der Befehlszeile angegebenen Befehle
if (!ProcessShellCommand(cmdInfo))
return FALSE;
// Nur falls MRU-Liste
schon vorhanden ist
if ((*m_pRecentFileList)[0].GetLength()
!= 0)
// Oeffne
zuletzt benutzte Datei
if (!OnOpenRecentFile(ID_FILE_MRU_FILE1))
MessageBox(0,"Kann
zuletzt benutzte Datei nicht öffnen!",
"FEHLER",MB_OK);
// Das einzige Fenster ist initialisiert und kann jetzt angezeigt....
....
} |
 |
Damit die neu hinzugekommenen Methoden-Aufrufe dem Übersetzen des Programms
bekannt sind, muss die Header-Datei afxadv.h eingebunden werden! |
Bevor die zuletzt benutzte Datei eingelesen wird, muss zunächst abgeprüft werden,
ob eine solche überhaupt vorhanden ist. Dies erfolgt durch den Aufruf der CRecentFileList-Methode
GetLength(...). Die Methode liefert die Länge des Dateinamens eines bestimmten
Eintrags in der MRU-Liste zurück. Die zuletzt benutzte Datei belegt in der Liste
immer den ersten Eintrag. Besitzt die MRU-Liste noch keinen Eintrag, so liefert
die Methode GetLength(...) für den ersten Eintrag den Wert '0' zurück.
Enthält die MRU-Liste jedoch einen entsprechenden Eintrag, so kann die zuletzt benutzt
Datei durch den Aufruf der Methode OnOpenRecentFile(...) geöffnet werden.
Beachten Sie dabei bitte, dass als 'Dateiname' die Konstante ID_FILE_MRU_FILE1
anzugeben ist.
Ein Programm zu diesem Thema finden Sie unter 04DocView\OpenLRU.
Als Ausgangsbasis für diese Beispiel diente das Projekt Serialize2 aus einer
der vorherigen Lektionen.
|