Ich benutze folgende Funktion, um ein MessageBox mit eigenem Icon zu erstellen.
Delphi-Quellcode:
function MyMessageBox(hWnd: HWND; caption, Text: string; IDIcon: DWORD; Style: Cardinal): Boolean;
var
MsgInfo: TMsgBoxParams;
begin
MsgInfo.cbSize := SizeOf(TMsgBoxParams);
MsgInfo.hwndOwner := hWnd;
MsgInfo.hInstance := GetWindowLong(hWnd, GWL_HINSTANCE);
MsgInfo.lpszText := @Text[1];
MsgInfo.lpszCaption := @Caption[1];
MsgInfo.dwStyle := Style;
MsgInfo.lpszIcon := MAKEINTRESOURCE(IDICON);
case Cardinal(MessageBoxIndirect(MsgInfo)) of
IDYES: result := true;
IDNO: result := false;
end;
end;
Wenn alle anderen Fenster unten in der TaskBar minimiert sind, erscheint die MessageBox selbstverständlich ganz normal. Wenn aber ein anderes Fenster z.B. Windows-Explorer aktiv ist, erscheint die MessageBox hinter dem aktiven Fenster, so dass man gar nicht merkt, dass eine MessageBox angezeigt wird. Wie kann ich diese MessageBox über allen Fenster anzeigen lassen?