可以将 64 位数据类型用作 AdjustWindowRect 的参数吗

Posted

技术标签:

【中文标题】可以将 64 位数据类型用作 AdjustWindowRect 的参数吗【英文标题】:Can 64 bit data type be used as argument to AdjustWindowRect 【发布时间】:2015-09-10 11:33:21 【问题描述】:

AdjustWindowRect 声明

BOOL WINAPI AdjustWindowRect(
  _Inout_ LPRECT lpRect,
  _In_    DWORD  dwStyle,
  _In_    BOOL   bMenu
);

如何使用返回LONG_PTR 作为AdjustWindowRect 的第二个参数的GetWindowLongPtr(GetSafeHwnd(), GWL_STYLE)

【问题讨论】:

【参考方案1】:

好问题。看起来微软认为窗口样式现在并且将只有 32 位长。因此AdjustWindowRectAdjustWindowRectExCreateWindowCreateWindowEx 和可能其他函数仍然使用DWORD dwStyle

GetWindowLongPtr 不仅适用于GWL_STYLE,因此它返回的值足以容纳 LONG 或指针。但这并不意味着所有类型的值都使用完整的值范围。

回答你的问题:你可以打电话

AdjustWindowRect(lpRect, GetWindowLongPtr(GetSafeHwnd(), GWL_STYLE), bMenu);

或(带有类型转换)

AdjustWindowRect(lpRect, (DWORD)GetWindowLongPtr(GetSafeHwnd(), GWL_STYLE), bMenu);

但你也可以打电话

AdjustWindowRect(lpRect, GetWindowLong(GetSafeHwnd(), GWL_STYLE), bMenu);

【讨论】:

感谢您的回复。 @GaneshMadhav 如果您喜欢这个答案,请接受并随时投票。

以上是关于可以将 64 位数据类型用作 AdjustWindowRect 的参数吗的主要内容,如果未能解决你的问题,请参考以下文章

64位系统与32位系统区别

对于所有外键,如何在 SQL 中将数据类型从 32 位整数升级到 64 位整数?

simulink如何将一个64位数据高低压拆成两个32位数据

Linux中32位和64位数据类型长度都有哪些不同

SQLyog 64位破解版 v12.09 使用介绍

64位驱动开发及驱动签名