>Visual Studio 2012 中的发送消息回调错误我在此 C 函数中收到以下错误?
error C2220: warning treated as error - no 'object' file generated
warning C4100: 'wParam' : unreferenced formal parameter
warning C4100: 'hwnd' : unreferenced formal parameter
LRESULT CALLBACK WndProc (HWND hwnd,UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) {
case WM_COPYDATA:
{
COPYDATASTRUCT* copy_data = (COPYDATASTRUCT*)(lParam);
const char* str = (const char* )(copy_data->lpData);
/* Also fixed the parameter list for "%.*s" */
printf("Message (%u): %.*sn", copy_data->dwData, (int)copy_data->cbData, str);
}
}
}
错误在于您告诉编译器将警告视为错误,并且您有两个关于函数中未使用的参数的警告。
最简单的解决方案是实际上跳过命名这些参数,如下所示:
LRESULT CALLBACK WndProc (HWND, UINT message, WPARAM, LPARAM lParam)
对于使用 C 语言的解决方案,您必须实际使用这些参数,即使您不对它们执行任何操作。这可以通过例如在表达式中使用它们并丢弃结果来完成,例如
(void) hwnd;
(void) wParam;
或者使用 winnt.h
中定义的宏(默认情况下应包含这些宏)来实现此目的:
UNREFERENCED_PARAMETER(hwnd);
UNREFERENCED_PARAMETER(wParam);
例如,请参阅本文。