Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi WM_COPYDATA versenden. Frage zu Parameter (https://www.delphipraxis.net/169413-wm_copydata-versenden-frage-zu-parameter.html)

TheMiller 18. Jul 2012 12:23

Delphi-Version: 2009

WM_COPYDATA versenden. Frage zu Parameter
 
Hallo,

da bin ich wieder ;)

Ich habe im Forum und in Google nach Anwendungsbeispielen zu WM_COPYDATA gesucht und viel gefunden. Nun verstehe ich eine Sache nicht und wollte auch noch Fragen, ob ich den Rest richtig verstanden habe. Also:

WM_COPYDATA hält eine Struktur bereit, die es mir erlaubt, zwischen verschiedenen Prozessen Daten auszutauschen. Dazu fülle ich die Felder der Struktur aus.
  • dwData = Kann beinhalten was es will. Ich muss damit nur was anfangen können.
  • cbData = Ist die Länge der zu übergebenden Daten, damit der Empfänger weiß, wie viel er lesen muss. Ergbit schließlich die Endposition
  • lpData = Ist ein Pointer auf die zu übergebenden Daten (Image, Record, String). Also quasi die Anfangsposition

Ich hoffe, das ist richtig so. Und nun zu dem, was ich nicht verstehe. Wenn ich dies nun per SendMessage versende - so steht's zumindest in alles Codes und Tuts - übergebe ich als WParam das FormHandle, gecastet nach Longint, also so:

Delphi-Quellcode:
  SendMessage(StrToInt(ParamStr(1)), WM_COPYDATA, Longint(Handle), Longint(@aCopyData)));
Warum wird beides mal nach LongInt gecastet und warum wird als WParam das (Form)Handle übergeben?

Danke!

DeddyH 18. Jul 2012 12:27

AW: WM_COPYDATA versenden. Frage zu Parameter
 
MSDN-Library durchsuchenwm_copydata
Zitat:

wparam

a handle to the window passing the data.
Lparam

a pointer to a copydatastruct structure that contains the data to be passed.

TheMiller 18. Jul 2012 12:29

AW: WM_COPYDATA versenden. Frage zu Parameter
 
Oh stimmt. Das hatte ich ja sogar schon gelesen. Da bin ich einfach durcheinander gekommen.

Danke!

ChrisE 18. Jul 2012 12:44

AW: WM_COPYDATA versenden. Frage zu Parameter
 
Zitat:

Zitat von DJ-SPM (Beitrag 1175050)
Warum wird beides mal nach LongInt gecastet...

Ich würde in hinblick auf die Zukunft auch eher auf WPARAM und LPARAM casten.

Das ist bei mir unter Delphi 2007
Delphi-Quellcode:
WPARAM = Longint;
LPARAM = Longint;
und unter XE2 ist es
Delphi-Quellcode:
WPARAM = UINT_PTR;
LPARAM = INT_PTR;
Gruß, Chris

[EDIT]
INT_PTR --> NativeInt = 32Bit Integer oder 64Bit Integer (Plattformabhängig)
UINT_PTR --> NativeUInt = 32Bit Unsigned-Integer oder 64Bit Unsinged-Integer (Plattformabhängig)
[/EDIT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz