Einzelnen Beitrag anzeigen

DelphiKlaus

Registriert seit: 18. Okt 2006
100 Beiträge
 
Delphi 6 Professional
 
#8

AW: wparam bei PostMessage in 64-Bit-Windows

  Alt 22. Apr 2014, 12:50
Vielen Dank für die Antworten.

Ich vermute mittlerweile, dass die Ursache eine andere ist. Die ist mir dann aber auch nicht verständlicher. Ich zeig mal einen Ausschnitt aus dem Code:

Delphi-Quellcode:
    procedure wmPasswortDialog (var Message_vb : TMessage); message wm_PasswortDialog;


procedure TFormPasswort_dd.FormCreate (Sender : TObject);

begin
  Inherited;

  if FileExists (ChangeFileExt (Application.ExeName, '.Tresor')) then
    begin
      PasswortAnforderung := dtPasswortBestaetigen;

      ...
      ...
    end
  else
    PasswortAnforderung := dtPasswortDefinieren
end;

procedure TFormPasswort_dd.FormShow (Sender : TObject);

begin
  Inherited;

  ...
  ...

  PostMessage (Self.Handle,
               wm_PasswortDialog,
               PasswortAnforderung,
               0)
end;

procedure TFormPasswort_dd.wmPasswortDialog (var Message_vb : TMessage);

begin
  if Message_vb.wParam ...... then

  ...
  ...
end;
In FormCreate wird die Variable PasswortAnforderung gesetzt, in FormShow wird sie mit PostMessage weitergeleitet und in wmPasswortDialog kommt sie nicht an. Deshalb hatte ich erstmal den Verdacht, dass es am PostMessage liegt.

Aber könnte es sein, dass die FormShow-Methode schon durch das Inherited im FormCreate aufgerufen wird. Dann wäre die Variable PasswortAnforderung natürlich noch nicht definiert. Nur wäre mir dann nicht klar, wieso bei einem 32-Bit-Windows FormCreate und FormShow nacheinander ablaufen, bei einem 64-Bit-Windows dahingegen das FormShow schon ablaufen sollte, bevor das FormCreate komplett abgearbeitet ist.

Ich hab das Programm mal auf die wesentlichen Teile reduziert und mit ShowMessages die einzelnen Aktionen ausgegeben. Als Ausgaben kommen jetzt bei mir:

- FormCreate startet
- FormCreate nach Inherited
- FormCreate: PasswortAnforderung := dtPasswortDefinieren
- FormCreate endet
- FormShow startet
- FormShow sendet mit PostMessage
- wmPasswortDialog 1
- FormShow endet

Das ist das, was ich erwartet hatte.

Ich habe das Testprogramm (Quellen und Exe-File) als Zip-Datei angehängt. Vielleicht kann das mal jemand unter einem 64-Bit-Windows ausprobieren und gucken, ob die Meldungen in der gleichen Reihenfolge erscheinen.

Vielen Dank schon mal

Klaus
Angehängte Dateien
Dateityp: zip Test.zip (204,7 KB, 2x aufgerufen)

Geändert von DelphiKlaus (23. Apr 2014 um 09:38 Uhr)
  Mit Zitat antworten Zitat