Entwickler-Ecke
Windows API - PostMessage-Parameter 'wParam'
schnorchel - Mi 04.09.13 20:04
Titel: PostMessage-Parameter 'wParam'
Hallo,
ich muß ein mit Delphi 7 geschriebenes Programm nach Delphi XE4 portieren.
Problem: Unter D7 können bei PostMessage mittels des wParam-Parameters auch negative Werte übergeben werden, also etwa "PostMessage(Handle,WM_XXX,-100,0)". Unter XE4 dagegen bekomme ich für den negativen Wert beim Kompilieren die Fehlermeldung "subrange out of bounds".
Anscheinend sind jetzt nur noch nicht-negative Zahlen erlaubt. Bitte um erhellendes Wissen... Gibt es vielleicht eine Möglichkeit, dennoch negative Zahlen zu übergeben?
IhopeonlyReader - Mi 04.09.13 21:31
Integer zu Cardinal casten (geht ohne Probleme, da beides 4 Byte groß ist) und beim Empfänger wieder zurück von Cardinal zu Integer..
meineswissens dürfte das so funktionieren.. da gibt es aber nicht nur 4 Byte paare
Hier mal ein Paar Beispiele: Byte: Negative / Positive
1: ShortInt / Byte
2: SmallInt / Word
4: Integer / Cardinal
4: LongInt / LongWord
8: Int64 / UInt64
WasWeißDennIch - Do 05.09.13 08:17
Wieso nicht gleich zu wParam?
Delphi-Quelltext
1:
| PostMessage(SomeHandle, SomeMessage, wParam(-100), 0); |
schnorchel - Do 05.09.13 11:51
Danke für die Antworten, Casten funktioniert bestens.
Was ich eigentlich wissen wollte (und das kommt in meiner Anfrage nicht klar zum Ausdruck), war der Grund für das geschilderte andere Verhalten unter XE4. Wie ich inzwischen weiss, hat Embarcadero mit/ab XE2 die Definition von WPARM von INT_PTR auf UINT_PTR geändert, um der offiziellen Windows-API Definition "typedef UINT_PTR WPARAM" zu entsprechen und damit Problemen im 64-Bit-Bereich aus dem Wege zu gehen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!