1

Visual Studio 2012 中的 sendmessage 回调错误 我在此 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);
        }
        }
        }
4

1 回答 1

2

错误是您告诉编译器将警告视为错误,并且您有两个关于函数中未使用的参数的警告。

最简单的解决方案是实际上跳过命名这些参数,如下所示:

LRESULT CALLBACK WndProc (HWND, UINT message, WPARAM, LPARAM lParam)

对于在 C 中工作的解决方案,您必须实际使用参数,即使您不使用它们做任何事情。这可以通过例如在表达式中使用它们并丢弃结果来完成,例如

(void) hwnd;
(void) wParam;

或者使用定义的宏winnt.h(默认情况下应该包含在内):

UNREFERENCED_PARAMETER(hwnd);
UNREFERENCED_PARAMETER(wParam);

参见例如这篇文章

于 2013-09-12T17:19:44.087 回答