![]() |
[x64] SendMessage nimmt lparam nicht an
Ich stelle meinen Code von 32 auf 64-bit um. Datei gibt es diesen Fehler:
Code:
in diesem Code
[dcc64 Fehler] E2089 Ungültige Typumwandlung
Delphi-Quellcode:
Was ist die Lösung dafür? Danke!
var
wnd: HWND; Pt: TPoint; i: Integer; begin ... i := SendMessage(wnd, LB_ITEMFROMPOINT, 0, ***lparam(PointToSmallpoint(Pt))***); <-- Fehler bei *** ... end; |
AW: [x64] SendMessage nimmt lparam nicht an
In diesem Fall besser Integer/LongInt statt LPARAM verwenden.
SmallPoint hat überall die selbe Größe. |
AW: [x64] SendMessage nimmt lparam nicht an
Zitat:
|
AW: [x64] SendMessage nimmt lparam nicht an
Zitat:
|
AW: [x64] SendMessage nimmt lparam nicht an
Deshalb benutzt man ja auch PointToLParam ;)
|
AW: [x64] SendMessage nimmt lparam nicht an
Delphi-Quellcode:
sollte auch reibungslos funktionieren falls es nicht das gleiche ist.
MakeLParam( Pt.X, Pt.Y )
|
AW: [x64] SendMessage nimmt lparam nicht an
Zitat:
Hier natürlich am Ziel nicht nach TPoint casten, sondern den lParam "richtig" konvertieren. Warum ist Windows hier nicht konsequent?
Delphi-Quellcode:
Aber die Umkehrfunktionen fehlen.
lParam = MakeLParam(MyX, MyY)
lParam = PointToLParam(MyPoint) lParam = SmallPointToPoint(MySmallPoint) So wie es auch hier gemacht wurde.
Delphi-Quellcode:
MakeLong <> HiWord und LoWord
function RGB(r, g, b: Byte): COLORREF;
function GetRValue(rgb: DWORD): Byte; function GetGValue(rgb: DWORD): Byte; function GetBValue(rgb: DWORD): Byte; type LOWORD = Word; LOBYTE = Byte; function MakeWord(A, B: Byte): Word; function MakeLong(A, B: Word): Longint; function HiWord(L: DWORD): Word; function HiByte(W: Word): Byte; MakeWord <> HiByte und LoByte |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz