c++ - HANDLE_MSG 宏给出 'HANDLE_0xXXXX is undefined'

标签 c++ winapi

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

Error: identifier "HANDLE_0xXXXX" is undefined

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

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

我在 Windows 8 上使用适用于 Windows 桌面的 Visual Studio 2013 Preview(尽管同样发生在适用于 WD 的 VS 2012 Express 中)。

一段代码:

#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);

}

最佳答案

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

     //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));

关于c++ - HANDLE_MSG 宏给出 'HANDLE_0xXXXX is undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18081614/

相关文章:

我可以在特定地址创建一个堆栈的线程吗?

c++ - SearchPathW 卡住

c++ - 代码适用于 CLR 项目但不适用于 Win32

C++:未分配正在释放的指针

c++ - 引用类型和文字类型

c++ - 为什么两个 3D 对象的交叉点是锯齿形的?

c++ - 如何在我的站点中使用在线 C++ 编译器

c++ - 递归 C++ 函数,它将整数数组 n 作为输入,然后在不使用任何循环的情况下打印数组中的最大值和最小值

C++/Win32 FTP 安全基础和使用 SSL

c - 是否可以利用另一个进程创建的 HWND?