0

当我尝试在我的窗口过程中使用 HANDLE_MSG 宏时,我收到以下错误:

错误:标识符“HANDLE_0xXXXX”未定义

其中 0xXXXX 取决于我作为参数提供给宏的消息(0x0010 用于 WM_CLOSE,0x0002 用于 WM_DESTROY 等等)。

在谷歌搜索帮助时,我什至没有发现任何关于类似问题的提及。

我在 Windows 8 上使用 Visual Studio 2013 Preview for Windows Desktop(尽管在 VS 2012 Express for WD 中也会发生同样的情况)。

一段代码:

#include "Precompiled Headers.hpp"    // includes i. a. Windows.h and windowsx.h

#include "MainWindowProcedure.hpp"

LRESULT __stdcall MainWindowProcedure(HWND mainWindow,
                                      UINT receivedMessage,
                                      WPARAM wordParameter,
                                      LPARAM longParameter)
{

    switch (receivedMessage)
    {

        HANDLE_MSG(mainWindow, WM_CLOSE, MainWindowOnClose);

        ...

        default:
            return DefWindowProc(mainWindow,
                                 receivedMessage,
                                 wParam,
                                 lParam);
        break;

    }

    return 0;

}

void MainWindowOnClose(HWND mainWindow)
{

    DestroyWindow(mainWindow);

}
4

1 回答 1

1

我遇到了同样的问题,只是像这三个示例所示的那样扩展了宏。

     //HANDLE_MSG(hwnd, WM_INITDIALOG, OnInitDialog);
case (WM_INITDIALOG) : return HANDLE_WM_INITDIALOG((hwnd), (wParam), (lParam), (OnInitDialog));
    //HANDLE_MSG(hwnd, WM_COMMAND, OnCommand);
case (WM_COMMAND) : return HANDLE_WM_COMMAND((hwnd), (wParam), (lParam), (OnCommand));
    //HANDLE_MSG(hwnd, WM_PAINT, OnPaint);
case (WM_PAINT) : return HANDLE_WM_PAINT((hwnd), (wParam), (lParam), (OnPaint));
于 2016-12-17T04:46:16.323 回答