如何在包含窗口的ATL消息图中确定HWND

问题描述

假设您要使用一个或多个CWindowImpl创建一个ATL CContainedWindow类。然后,假设您要链接一些CContainedWindow的{​​{1}},以便几个窗口在其窗口过程中共享一些基本功能。但是在这些共享过程中,您将想知道哪个窗口正在接收给定消息。 ATL不会在其消息映射处理函数中传递HWND。那么,还有另一种方法可以确定您正在处理的HWND吗?

解决方法

实际上,我不确定,但是我认为这可能有效:

#define MESSAGE_HANDLER_EX(msg,func) \
    if(uMsg == msg) \
    { \
        bHandled = TRUE; \
        lResult = func(hWnd,uMsg,wParam,lParam,bHandled); \
        if(bHandled) \
            return TRUE; \
    }

然后处理程序函数应具有类似LRESULT HandlerFunc(HWND,UINT,WPARAM,LPARAM,BOOL&)的签名。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...