Hallo,
ich habe mir gerade einen
nonVCL Ersatz für RaiseLastWin32Error gebastelt:
Code:
[b]procedure[/b] RaiseLastError(hWnd: Cardinal);
[b]var[/b]
LastError: DWORD;
szBuffer, szError : [b]array[/b][0..255] [b]of[/b] Char;
[b]begin[/b]
LastError := GetLastError;
wvsprintf(szBuffer, '
Win32-Fehler. Code: %d', PChar(@LastError));
lstrcat(szBuffer, #13#10);
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, [b]nil[/b], GetLastError, 0, szError,
sizeof(szError), [b]nil[/b]);
lstrcat(szBuffer, szError);
MessageBox(hWnd, szBuffer, 'Fehler', MB_ICONSTOP [b]or[/b] MB_APPLMODAL);
[b]end[/b];
Nur hat es den Schönheitsfehler, dass man das
Handle übergeben muß damit die Messagebox richtig funktioniert. Nur leider steht einem das
Handle nicht überall zur Verfügung. Es sei denn man deklariert eine globale Variable (unschön) oder übergibt jedes mal das
Handle, ist auch nicht so der Hit.
Jetzt dachte ich, ich könnte über die Instanz (hInstance) irgendwie an das
Handle kommen. Hm, Nico hat mir gerade gesagt ohne beträchtlichen Aufwand nicht möglich.
Andere Vorschläge ?