Komfortabler Dateimanager mit vielen Funktionen

Kein Fehler aufgetreten

By Sven on 19.05.2006 - 12:46 in MFC

Henrik hat festgestellt, dass SpeedEdit beim Öffnen einer leeren Datei mit der Erweiterung .url die Meldung “Kein Fehler aufgetreten.” ausgibt. Beim Debuggen habe ich dann auch recht schnell den Grund dafür gefunden.

In der Funktion OpenDocumentFile des CDocManager-Objektes wird die Funktion AfxResolveShortcut aufgerufen, mit deren Hilfe Verknüpfungen aufgelöst werden sollen. AfxResolveShortcut verwendet dafür die Schnittstelle IShellLink und gibt im Erfolgsfall den aufgelösten Pfadnamen zurück. Bei einer leeren .url-Datei vermeldet IShellLink::Resolve zwar Erfolg, IShellLink::GetPath gibt aber einen leeren String zurück. AfxResolveShortcut meldet den Erfolg weiter und die MFC verwendet nun statt des Dateinamens für die .url-Datei den leeren String, um die Datei zu öffnen.

Abhilfe schafft die zusätzliche Prüfung auf einen leeren aufgelösten Pfadnamen in der Datei docmgr.cpp (Zeile 928):

if (AfxResolveShortcut(AfxGetMainWnd(), szPath, szLinkName, _MAX_PATH) && szLinkName[0])
{
    Checked::tcscpy_s(szPath, _countof(szPath), szLinkName);
}

Es können keine Kommentare abgegeben werden.

Top