Sinnbildlich: LPARAM to int



  • Hallo,

    eine vielleicht sehr dumme Frage aber,

    Wie mache ich denn aus einem lParam oder wParam eine Zahl(integer), so das ich damit weiter arbeiten kann? Ich bekomme in meiner Funktion einen wParam in dem die einzelnen Bits des Wertes Flags und Werte darstellen nur ich weiß nicht wie ich daraus wieder eine Zahl mache 😕



  • Ein lParam oder wParam ist ein DWORD (einer von beiden war glaub ich noch was anderes)
    Die definition von DWORD steht in der WinDef.h

    typedef unsigned long       DWORD;
    

    Das heißt mit einer einfachen Typenkonvertierung kannst du es zu deiner "Zahl" machen. Allerdings kannst du auch einfach so drauf zugreifen du siehst ja das es ein u long ist.

    schirrmie



  • wParam und lParam sind Integer-Werte und können als solche direkt verwendet werden.



  • nur noch hinzugefügt:
    wParam war auf 16-bit-systemen auch nur 16 bit, LPARAM schon 32 bit um far pointer/handles halten zu können.

    ...DWORD ist wiederum ein typedef für unsigned int....



  • wParam und lParam sind definiert als

    typedef UINT_PTR WPARAM;
    typedef LONG_PTR LPARAM;
    

    LONG_PTR und UINT_PTR sind auf x32-Systemen vier Byte und auf x64-Systemen acht Byte groß. Die Größe entspricht also nur auf x32-Systemen einem DWORD.


Anmelden zum Antworten