Einzelnen Beitrag anzeigen

Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#1

Pointer auf Record in eigener Windows Message übergeben

  Alt 6. Dez 2004, 19:29
Hi,

ich habe folgendes Problem:

Delphi-Quellcode:
  TDeviceInfo = packed record
    Vol: Shortstring;
    GUID: Shortstring;
    Event: UINT;
  end;
  PDeviceInfo = ^TDeviceInfo;

//wird hier eingepackt:

FillMemory(@TransferDeviceInfo, Sizeof(TransferDeviceInfo), 0);
TransferDeviceInfo.Event := DBT_DeviceArrival;
TransferDeviceInfo.GUID := DeviceInfo.GUID; //hier sind die Werte noch korrekt!!
TransferDeviceInfo.Vol := DeviceInfo.Vol;

//und losgeschickt:
PostMessage(AWnd, WM_SOURCEFOUND, CCamera, Integer(@TransferDeviceInfo));

//eine andere App emfängt es:

procedure TDevCheckHandler.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
  Handled := False;
  case Msg.message of
    WM_SOURCEFOUND:
    begin
      FDeviceInfo.Event := PDeviceInfo(Msg.lParam).Event;
      if Msg.wParam = CVolume then
        FDeviceInfo.Vol := PDeviceInfo(Msg.lParam).Vol;
      if Msg.wParam = CCamera then
        FDeviceInfo.Guid := PDeviceInfo(Msg.lParam).GUID;
      if Assigned(FOnDevChange) then
        FOnDevChange;
      Handled := True;
    end;
    WM_PASSHANDLE:
    begin
      FDevCheckHandle := Msg.wParam;
      Handled := True;
    end;
  end;
end;
es kommt leider nur schrott an. Der wParam wird korrekt erkannt, es handelt
sich also um die richtige Nachricht. Ich vermute, ich habe die Pointer
versaut. Sieht jemand den Fehler? Probiere schon seit einer Stunde herum.

Grüße

Sebastian
Sebastian
  Mit Zitat antworten Zitat