代码之家  ›  专栏  ›  技术社区  ›  Suri

为什么PostMessageW lparam值在以下场景中显示错误的值

mfc
  •  0
  • Suri  · 技术社区  · 14 年前

    1 回复  |  直到 14 年前
        1
  •  1
  •   Flinsch    14 年前

    将值0.5的双精度值转换为整数将被“舍入”;小数将被截断以更具体。从0.5截断.5的结果将始终为0。但是,lParam不够大(32位),无法容纳一个双值(64位)。但是,假设是float(32位)而不是double,您可以执行以下操作:

    • 从float到long的基于位的“cast”: *((long*)(&myFloat))
    • 从long到float的基于位的“cast”: *((float*)(&lParam))

    或者C++方式:

    • 从float到long的基于位的“cast”: *reinterpret_cast<long*>(&myFloat)
    • 从long到float的基于位的“cast”: *reinterpret_cast<float*>(&lParam)
    推荐文章