我正在尝试使用一些来自API的C代码(它不像C ++编译器),但我遇到了一些麻烦。我有这段代码:
// send the request (allow up to 9 tries)
while ((++i < 10) && !SendMessageTimeout(
m_hWnd, // FS6 window handle
m_msg, // our registered message id
m_atom, // wParam: name of file-mapping object
0, // lParam: offset of request into file-mapping obj
SMTO_BLOCK, // halt this thread until we get a response
2000, // time out interval
&dwError)) // return value || dwError is a DWORD
{ Sleep(100); // Allow for things to happen
}
它返回一个错误(我正在使用Qt Creator):
error: C2664: 'LRESULT SendMessageTimeoutW(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD_PTR)' : cannot convert argument 7 from 'DWORD *' to 'PDWORD_PTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
我没有使用DWORD和PDWORD_PTR的经验,所以我不太明白这一点。任何帮助表示赞赏。如果您需要查看更多代码,请告诉我,但我认为这一切都是相关的。
答案 0 :(得分:4)
dwError
必须是DWORD_PTR
,而不是DWORD
。
请注意DWORD_PTR
并不意味着&#34;指向DWORD&#34;的指针,它意味着&#34;一个至少与指针一样大的DWORD&#34;。
答案 1 :(得分:0)