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

エラーは、コンパイラに警告をエラーとして扱うように指示したことと、関数で使用されていない引数に関する 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 に答える