Ошибка обратного вызова 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);

Смотрите, например, эту статью.

Другие вопросы по тегам