int LPARAM int

Thomasio

Erfahrenes Mitglied
Ich will ein int in einer SendMessage verwenden und dieses beim Empfänger wieder zu int wandeln.

Code:
int x = 17;
SendMessage(hWnd,WM_IRGENDWAS,0,(LPARAM)x);

case WM_IRGENDWAS:
int y = (int)lParam;

Logischerweise warnt mein Compiler beim zurück casten, "loses precision".
Das selbe Problem habe ich auch beim casten von void* zu int (in 64bit Anwendungen).
Auch logisch, ich weiss ja, dass da nur ein int drin ist, also müsste ich die Warnung ignorieren können.

Was ich nicht weiss ist, ob das immer funktioniert, z.B. mit negativen Werten.
Was ich gerne hätte ist keine Compiler Warnung.
Also in kurz: Wie konvertiere ich das "richtig"?
 
Ich will ein int in einer SendMessage verwenden und dieses beim Empfänger wieder zu int wandeln.

Code:
int x = 17;
SendMessage(hWnd,WM_IRGENDWAS,0,(LPARAM)x);

case WM_IRGENDWAS:
int y = (int)lParam;

Logischerweise warnt mein Compiler beim zurück casten, "loses precision".
Das selbe Problem habe ich auch beim casten von void* zu int (in 64bit Anwendungen).
Auch logisch, ich weiss ja, dass da nur ein int drin ist, also müsste ich die Warnung ignorieren können.

Was ich nicht weiss ist, ob das immer funktioniert, z.B. mit negativen Werten.
Was ich gerne hätte ist keine Compiler Warnung.
Also in kurz: Wie konvertiere ich das "richtig"?
C:
int y = (int)(long)lParam;
Gruß
 

Neue Beiträge

Zurück