Ошибка обратного вызова sendmessage в visual studio 2012
Ошибка обратного вызова sendmessage в 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): %.*s\n", copy_data->dwData, (int)copy_data->cbData, str);
}
}
}
1 ответ
Ошибка в том, что вы сказали компилятору обрабатывать предупреждения как ошибки, и у вас есть два предупреждения об аргументах, которые не используются в функции.
Самое простое решение - фактически пропустить именование этих аргументов, например так:
LRESULT CALLBACK WndProc (HWND, UINT message, WPARAM, LPARAM lParam)
Для решения, работающего на C, вы должны использовать аргументы, даже если вы ничего с ними не делаете. Это может быть сделано, например, используя их в выражении и выбрасывая результат, как
(void) hwnd;
(void) wParam;
Или используйте макросы, определенные в winnt.h
(который должен быть включен для вас по умолчанию) для этого:
UNREFERENCED_PARAMETER(hwnd);
UNREFERENCED_PARAMETER(wParam);
Смотрите, например, эту статью.