Einzelnen Beitrag anzeigen

Assarbad
(Gast)

n/a Beiträge
 
#2

Re: Dialogphänomen mit non-VCL

  Alt 3. Aug 2003, 16:49
Delphi-Quellcode:
program Dialogtest;

uses
  Windows,
  Messages;

{$R main.res}

function DlgProc(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): BOOL; stdcall;
begin
  Result := True;
  case uMsg of
    WM_CLOSE:
      begin
// Cleanup hier, danach EndDialog() ...
        EndDialog(hwnd, 0);
      end;
    WM_COMMAND: case LOWORD(wParam) of
        IDOK,
          IDCANCEL: // Abbrechen-Button
          SendMessage(hwnd, WM_CLOSE, 0, 0);
      end;
  else
    Result := False;
  end;
end;

function ConfigDialog:Integer; // Korrigiert auf Hinweis von Luckie
begin
  result := DialogBox(hInstance, MAKEINTRESOURCE(101), GetForegroundWindow, @DlgProc);
end;

begin
  ConfigDialog;
end.
Ich habe mit obigem Code keine Probleme. GetForegroundWindow() bei DialogBox() könnte u.U. Probleme bereiten.

Ansonsten solltest du besser darauf achten, daß die Typen auch stimmen. Es hat was mit der Wartbarkeit des Code zu tun!

(Delphi 4/5 Pro auf W2K SP4)

Übrigens, Optimierungen an/aus hat u.U. noch andere Effekte. Bei mir hat das schon zu bösen Fehlern geführt. Sie waren auch reproduzierbar und nur mit dem Umstellen der Option abstellbar.

[Korrigiert auf Hinweis von Luckie]
  Mit Zitat antworten Zitat