Einzelnen Beitrag anzeigen

FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#35

AW: Wie kann ein Zeiger auf eine Funktion als Paramater übergeben werden?

  Alt 5. Dez 2010, 17:45
Also so wurde das über eine fest verknüpfte Message gemacht:
Delphi-Quellcode:
[...schnipp...]

  TMeineKlasse = class(TWinControl)
    procedure WMAdsDeviceNotification(var Message: TMessage); message WM_ADSDEVICENOTIFICATION; //feste Zuordnung von Methode zur Windows-Message

[...schnipp...]

Procedure NotificationCallback(   pAddr:PAmsAddr;
                                pNotification:PAdsNotificationHeader;
                                hUser:Longword ); stdcall;
begin
    PostMessage( HWND(hUser), WM_ADSDEVICENOTIFICATION, 0, 0);
end;

[...schnipp...]
Die Windows-Message message WM_ADSDEVICENOTIFICATION ruft natürlich nur die Methode procedure WMAdsDeviceNotification(var Message: TMessage) auf.
Deshalb habe ich das jetzt folgendermaßen geändert:
Delphi-Quellcode:
Procedure NotificationCallback(   pAddr:PAmsAddr;
                                pNotification:PAdsNotificationHeader;
                                hUser:Longword ); stdcall;
begin
    PostMessage(HWND(hUser), lwMessageID , 0, 0);
    ???.Perform(lwMessageID, 0, 0); //Hier weiß ich nicht weiter
end;
Um diese feste Zuordnung aufzulösen, soll eine eigene Windows-Message, mit der bei der Erzeugung des Objektes übergebenen Message-ID ("lwMessageID") gesendet werden.
Das PostMessage ist wohl richtig.
Aber anschließend muss ja noch WndProc mit der entsprechenden Message durchlaufen werden.
Das löst man mit Perform(lwMessageID, 0, 0) aus, richtig?
Hier weiß ich nicht weiter.
Herzlichen Gruß
FriendOfDelphi

Geändert von FriendOfDelphi ( 5. Dez 2010 um 17:53 Uhr)
  Mit Zitat antworten Zitat