![]() |
LPARAM nur bei Zeigern? 64Bit
Zitat:
Aber wie verhält es sich bei dieser Konstellation.
Delphi-Quellcode:
SendMessage(WinHandle, WM_COMMAND, MAKELONG(Word(MenuWahl), 0), 0);
MAKELONG ist ja eigentlich kein NativeUint.. WPARAM voran setzen oder ignorieren es funktioniert auch mit Integer. Bin mir da jetzt nicht so sicher da es nicht erwähnt wird. Die Infos sind alle etwas Halbfertig. gruss |
AW: LPARAM nur bei Zeigern? 64Bit
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 |
AW: LPARAM nur bei Zeigern? 64Bit
Zitat:
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.
Delphi-Quellcode:
SendMessage(WinHandle, WM_COMMAND, WPARAM(MAKELONG(Word(MenuWahl), 0)), 0);
Nur nicht jeder ist der gleichen Meinung. ![]() Zitat:
|
AW: LPARAM nur bei Zeigern? 64Bit
|
AW: LPARAM nur bei Zeigern? 64Bit
Zitat:
gruss |
AW: LPARAM nur bei Zeigern? 64Bit
Na ich wollte darauf hinaus wie Du Windows Deine 32bit Variable verkaufen könntest. Also aus der MAKELONG eine MAKELONGLONG. Tut mir leid wenn Ansatz falsch ist.
|
AW: LPARAM nur bei Zeigern? 64Bit
Zitat:
Nun muss erst mal sehen ob MAKELONGLONG NativeUint ist! (Nein ist UInt64) damit kann ich nichts anfangen. Denn darum geht es.. ;) Meine Frage bezog sich auf NativeUint denn das ist der Typ der von SendMessage bei WPARAM erwartet wird. Nicht um MAKELONG (Integer) oder MAKELONGLONG (UInt64) Ich möchte also wissen ob ich bei Sendmessage weiterhin Integer schicken oder den Typ hier als Beispiele MAKELONG (könnte auch was anderes sein) nach NativeUint konvertieren soll. Denn darüber gibt es unterschiedliche Ansichten. (Siehe mein Link) Zitat:
gruss |
AW: LPARAM nur bei Zeigern? 64Bit
LPARAM und WPARAM sind definiert als INT_PTR bzw. UINT_PTR und diese wiederum sind NativeInt und NativeUInt. Daher sehe ich nicht wirklich ein Problem, wenn du simpel einen Cast nach LPARAM bzw. WPARAM machst - eben genau das, was SendMessage erwartet.
Grüße Dalai |
AW: LPARAM nur bei Zeigern? 64Bit
Zitat:
Darum geht es nicht wie schon gesagt man ist da unterschiedlicher Meinung. Zudem möchte ich die 32Bit Kompatibilität wenn möglich mit gleichem Code erhalten. OK.. werde mal schauen ob es in er Zukunft Probleme bereitet wenn ich es so belasse wie es ist. Ich glaube da gibt es keine pauschale Lösung für. Danke! gruss |
AW: LPARAM nur bei Zeigern? 64Bit
Zitat:
Will sagen: Ich sehe kein Problem, einfach immer und in jedem Fall nach LPARAM/WPARAM zu casten, völlig egal, was da reingegeben wird. Das geht natürlich nur, solange der reingegebene Datentyp nicht zu groß ist, aber das ist ja eh klar, und unabhängig von SendMessage und dessen Funktionsparametern. Grüße Dalai |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:30 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