如何确定包含 windows 的 ATL 消息映射中的 HWND
How to determine the HWND in an ATL message map with contained windows
假设您正在创建一个具有一个或多个 CContainedWindow
的 ATL CWindowImpl
class。然后假设您想要链接一些 CContainedWindow
和 ALT_MSG_MAP
,以便一对 windows 在他们的 window 过程中共享一些基本功能。但是在这些共享过程中,您会想知道哪个 window 正在接收给定的消息。 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&)
.
假设您正在创建一个具有一个或多个 CContainedWindow
的 ATL CWindowImpl
class。然后假设您想要链接一些 CContainedWindow
和 ALT_MSG_MAP
,以便一对 windows 在他们的 window 过程中共享一些基本功能。但是在这些共享过程中,您会想知道哪个 window 正在接收给定的消息。 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&)
.