一个简单的子类化窗口工具类 (二)

2014-11-24 00:11:59 · 作者: · 浏览: 73
G)m_oldWndProc);
112 }
113}
114
115void CBasicWndInfo::RemoveAll()
116{
117 m_list_scw.clear();
118}
119
120CBasicWndInfo::CBasicSubClassWndMap& CBasicWndInfo::GetHookMap()
121{
122 static CBasicSubClassWndMap s_map;
123 return s_map;
124}
125
126LRESULT CBasicWndInfo::HookWndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
127{
128 MapIter iter = GetHookMap().find(hWnd);
129 if (uMsg==WM_NCDESTROY)
130 {
131 //iter->second.RemoveAll();
132 }
133 else
134 {
135 CBasicSubClassWndList::iterator it;
136 for (it=iter->second.m_list_scw.begin();it!=iter->second.m_list_scw.end();++it)
137 {
138 if (!(*it)->SubWindowProc(uMsg,wParam,lParam))
139 return 0;
140 }
141 }
142 return ::CallWindowProc(iter->second.m_oldWndProc,hWnd,uMsg,wParam,lParam);
143}

摘自 天道酬勤