HANDLE_WM_NOTIFY 是一个宏,用于在窗口过程中处理 WM_NOTIFY 消息的通用方式。通常,WM_NOTIFY 消息是由通知控件(如列表框、树形控件等)发送的,用于通知父窗口发生了特定的事件。

以下是 HANDLE_WM_NOTIFY 宏的定义:
#define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \
    ((fn)((hwnd), (int)(wParam), (NMHDR*)(lParam)), 0L)

这个宏的目的是简化在窗口过程中处理 WM_NOTIFY 消息时的代码。通过使用这个宏,可以将消息的处理委托给另一个函数,而不必在窗口过程中编写冗长的 switch 语句。

这里的参数解释如下:

  •  hwnd: 窗口句柄。

  •  wParam: 消息的 wParam 参数,通常包含控件的标识符。

  •  lParam: 消息的 lParam 参数,通常指向 NMHDR 结构。


示例用法:
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch (uMsg) {
        // 其他消息处理...

        case WM_NOTIFY:
            return HANDLE_WM_NOTIFY(hwnd, wParam, lParam, OnNotify);

        // 其他消息处理...
    }

    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

void OnNotify(HWND hwnd, int id, NMHDR* pnmhdr) {
    // 在这里处理 WM_NOTIFY 消息
}




转载请注明出处:http://www.pingtaimeng.com/article/detail/24652/Win32 API/Commctrl.h/HANDLE_WM_NOTIFY