Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#3

AW: LPARAM nur bei Zeigern? 64Bit

  Alt 31. Aug 2018, 23:55
Soweit ich das verstanden habe erwartet Windows einen 64Bit Wert, MAKELONG liefert aber nur einen 32Bit Wert. D.h. die hoch(wertigen) 32Bit sind nicht definiert.

Gruß
K-H
Das Problem ist das einige Leute sagen man soll die Werte so belassen wie sie sind und nur ausschließlich Zeiger Konvertieren über LPARAM als Beispiel.
Das ist wieder so eine Sache das man nicht weis was am ende der richtige weg ist.
Rein technisch gesehen würde ich es so auslegen.

SendMessage(WinHandle, WM_COMMAND, WPARAM(MAKELONG(Word(MenuWahl), 0)), 0);

Nur nicht jeder ist der gleichen Meinung.
Hier zum Beispiel!
Zitat:
I'd suggest don't use NativeInt or NativeUInt for non-pointer-based values. Try to keep your code semantically the same between 32-bit and 64-bit. If you need 32 bits of range, use Integer; if you need 64 bits, use Int64. That way your code should run the same on both bitnesses. Only if you're casting to and from a Pointer value of some kind, such as a reference or a THandle, should you use NativeInt.
gruss

Geändert von EWeiss (31. Aug 2018 um 23:58 Uhr)
  Mit Zitat antworten Zitat