MyGUI 库。
源码中有一行:
mHandle = (size_t)::LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW));
mHandle 是 size_t
LoadCursor 返回 HCURSOR
。
错误:
D:\Dev\MyGUI_3.2.0_RC1\Common\Input\Win32\ResourceW32Pointer.cpp:48: error: cast
from 'WCHAR*' to 'WORD' loses precision
这是完整的来源:
www.pastebin.com/gzqLBFh9
MinGW 编译器。
有错误cast from 'CHAR*' to 'WORD' loses precision
并且selbie 给出了在此处添加宏的建议:Create window with WNDCLASSEX? [Cpp] .多亏了他 - 它消失了。
最佳答案
问题实际上在 MAKEINTRESOURCE(IDC_ARROW)
并且与 mHandle
的类型无关。 [旁白:我同意 mHandle
不应该是 size_t
但我认为这不是您当前的问题。]
由于 IDC_ARROW
被定义为 MAKEINTRESOURCE(32512)
,因此代码实际上应为
LoadCursor(NULL, IDC_ARROW)
而不是
LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW))
后面的代码失败是因为 IDC_ARROW 是 LPTSTR
但 MAKEINTRESOURCE()
需要 WORD
。这解释了您看到的错误消息。事实上IDC_ARROW
已经是一个资源类型,不需要进一步处理。
同样,对 LoadCursor()
的所有其他调用都是错误的。
关于C++ 编译错误 : "cast from ' WCHAR *' to ' WORD' loses precision",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6835679/