我正在尝试使用WTL,我想将一个大型消息映射分成两个或更多文件。例如,我想将托盘图标逻辑移动到单独的文件中。我知道CHAIN_MSG_MAP
和CHAIN_MSG_MAP_MEMBER
,但在这种情况下我应该使用什么?
另外,我如何能够从第二堂课访问窗口句柄?
答案 0 :(得分:0)
你可能正在寻找这样的东西(没有经过测试;我的WTL相当生疏;需要注意事项)。
class TrayIconHandler : public CWindow, public CMessageMap {
public:
BEGIN_MSG_MAP(TrayIconHandler)
// Message handlers to taste
END_MSG_MAP()
};
class MainWindow : public CWindowImpl<MainWindow> {
public:
BEGIN_MSG_MAP(MainWindow)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
// Other message handlers
CHAIN_MSG_MAP_MEMBER(tray_icon_)
END_MSG_MAP()
LRESULT OnCreate(UINT, WPARAM, LPARAM, BOOL&) {
tray_icon_.m_hWnd = m_hWnd;
}
private:
TrayIconHandler tray_icon_;
};
当然,这两个类可能位于不同的源文件和/或标题中。