代码之家  ›  专栏  ›  技术社区  ›  Mark Heath

LPARAM和WPARAM的定义是什么?

  •  55
  • Mark Heath  · 技术社区  · 15 年前

    5 回复  |  直到 13 年前
        1
  •  95
  •   CB Bailey    13 年前

    LPARAM 是的typedef LONG_PTR 这是一个 long __int64 (有符号64位)在x86\u 64上。

    WPARAM 是的typedef UINT_PTR 这是一个 unsigned int (无符号32位)在win32和 unsigned __int64

    MSDN link

        2
  •  64
  •   dan04    14 年前

    这些typedef可以追溯到16位时代。原来, LPARAM 是一个 long WPARAM 是一个 WORD (无符号16位),因此 W and L . 由于通常的做法是将浇铸的指针作为消息参数传递, 在Win32上扩展到32位 LPARAM公司 W参数 在Win64上扩展到64位。

    IntPtr LPARAM公司 UIntPtr 对于WPARAM。

    请注意,尽管 LP LPARAM公司 ARAM .

        3
  •  6
  •   Brian R. Bondy    15 年前

    LPARAM表示一个LONG\u PTR,WPARAM表示一个UINT\u PTR

    在x86上为4字节,在x64上为8字节。

        4
  •  5
  •   jpalecek    15 年前

    Here:

    typedef UINT_PTR WPARAM;
    typedef LONG_PTR LPARAM;
    
        5
  •  4
  •   SerialSeb    15 年前

    你需要的是我的朋友 http://www.pinvoke.net/

        6
  •  0
  •   superbem    4 年前

    C++在Linux和Windows 64位测试,最简单的解决方法我发现:

    #define WPARAM long long unsigned int
    #define LPARAM long long int