gpt4 book ai didi

visual-c++ - 错误 C2440 : 'static_cast' : cannot convert from 'long' to 'LRESULT'

转载 作者:行者123 更新时间:2023-12-03 23:56:08 29 4
gpt4 key购买 nike

我正在将我的项目从 32 位版本转换为 64 位版本,在以 64 位编译项目时,出现以下错误。

Error   2   error C2440: 'static_cast' : cannot convert from 'long (__cdecl BrnDefDlgClass::* )(UINT,long)' to 'LRESULT (__cdecl CWnd::* )(WPARAM,LPARAM)'  C:\Program Files (x86)\...\CXX\TEST.CXX 854 1   cfg

这个错误将我指向下面的代码行。

ON_MESSAGE        (WM_USER_AFTERCBNSELCHANGE,   OnAfterCBSelectMsg)

请告知为什么会发生此错误。

谢谢

最佳答案

建议你看一下OnAfterCBSelectMsg的定义,修改成使用LRESULT作为返回类型,WPARAMLPARAM 作为参数(就像错误消息中的第二个签名一样)。

LRESULT 定义为 LONG_PTR,并且每当 PTR 出现在名称中时,您应该期望它足够大以容纳指针.指针在 32 位上是 4 个字节,在 64 位上是 8 个字节,因此如果您为 64 位编译,LRESULT 将不适合 long(即 4 个字节) .

使用 WPARAMLPARAM 作为参数类型也很重要,因为它们的大小也会因平台而异。有关更多信息,请参阅此问题的答案:What are the definitions for LPARAM and WPARAM?

关于visual-c++ - 错误 C2440 : 'static_cast' : cannot convert from 'long' to 'LRESULT' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12890976/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com