可以将 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 位长。因此AdjustWindowRect
、AdjustWindowRectEx
、CreateWindow
、CreateWindowEx
和可能其他函数仍然使用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 的参数吗的主要内容,如果未能解决你的问题,请参考以下文章
对于所有外键,如何在 SQL 中将数据类型从 32 位整数升级到 64 位整数?