问题描述
假设您要使用一个或多个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&)
的签名。