Einzelnen Beitrag anzeigen

Mephistopheles
(Gast)

n/a Beiträge
 
#92

Re: Wo ist oder wie heißt die Funktion: SHMessageBoxCheck?

  Alt 6. Mai 2005, 13:36
Zitat von marabu:
Warum spottest du? Ich brauche keinen Debugger um einen Fehler im Quelltext zu sehen!
Warum spottest du? Wir haben dich um eine Korrektur gebeten. Mehrfach!

Zitat von marabu:
Ich habe bereits gesagt, was du falsch machst. Fange den Rückgabewert ab und prüfe auf -1. Nur dann interessiert mich LastError.
Das hilft aber auch nichts, wenn die MessageBox() ganz simpel nicht angezeigt wird. Und so amateurhaft bin ich nun auch wieder nicht, daß ich nicht vorher SetLastError(ERROR_SUCCESS) setzen würde. Der Rückgabewert ist also irrelevant, weil der Fehler während des Aufrufs passiert sein muß.

Aber vielleicht kann ich ja dein "Interesse" mit einer Ausgabe, die da lautet "1400", dieses Programmes wecken:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
uses
  CommCtrl,
  Windows;

function SHMessageBoxCheckW(hWnd: THandle; Text: PWideChar; Title: PWideChar;
    dwType: DWORD; Default: Integer; RegVal: PChar): Integer; stdcall; external 'shlwapi.dllindex 191;

function GetShellWindow():HWND; stdcall; external 'user32.dll';

begin
  InitCommonControls();
  SetLastError(ERROR_SUCCESS);
  if(-1 = SHMessageBoxCheckW(GetShellWindow(), 'Dies ist nur ein Testtext.',
    'Und dies ist der Titel', MB_OK or MB_ICONINFORMATION, IDNO,
    '2C622957-D0A5-41CA-8571-898247531A2C')) then
  begin
    Writeln(GetLastError());
  end
  else
    Writeln('Successful call');
  Readln;
end.
Ja, ich habe soeben den XP SP1 Rechner nochmal für unseren gefiederten Freund angeworfen und die Ausgabe bleibt stur bei 1400.

Dennoch hilft uns die Tatsache, daß -1 zurückgegeben wird, nicht den Fehler einzugrenzen.
  Mit Zitat antworten Zitat