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.



Copyright © 2004

Senden Sie Emails mit Fragen oder Kommentaren zu dieser Website an: mailto:info@cpp-tutor.de
 Wolfgang Schröder, Lerchenweg 23, D-72805 Lichtenstein. Tel: +49 7129 6470