void CNotifyPump::NotifyPump(TNotifyUI& msg) { ///±éÀúÐéÄâ´°¿Ú if( !msg.sVirtualWnd.empty() ) { foreach (auto it, m_VirtualWndMap) { std::wstring const& key = it.first; if(key == msg.sVirtualWnd) { CNotifyPump* pObject = it.second; if (pObject && pObject->LoopDispatch(msg)) return; } }
IMPL_LUA_FUNC(LuaCNotifyPump, LoopDispatch) { try { CNotifyPump* self; self = static_cast<CNotifyPump*>(LuaStatic::CheckUserData(l, 1)); TNotifyUI* pMsg = static_cast<TNotifyUI*>(LuaStatic::CheckUserData(l, 2)); lua_pushboolean(l, self->LoopDispatch(*pMsg) ? 1 : 0); return 1; } catch(...) { DuiException(_T("LuaCNotifyPump::LoopDispatch")); return 0; } }
void CNotifyPump::NotifyPump(TNotifyUI& msg) { ///遍历虚拟窗口 if( !msg.sVirtualWnd.IsEmpty() ){ for( int i = 0; i< m_VirtualWndMap.GetSize(); i++ ) { if( LPCTSTR key = m_VirtualWndMap.GetAt(i) ) { if( _tcsicmp(key, msg.sVirtualWnd.GetData()) == 0 ){ CNotifyPump* pObject = static_cast<CNotifyPump*>(m_VirtualWndMap.Find(key, false)); if( pObject && pObject->LoopDispatch(msg) ) return; } } } } /// //遍历主窗口 LoopDispatch( msg ); }
void CNotifyPump::NotifyPump(TNotifyUI& msg) { ///±éÀúÐéÄâ´°¿Ú if( !msg.sVirtualWnd.empty() ) { map<string,void*>::iterator it = m_VirtualWndMap.begin(); for(;it != m_VirtualWndMap.end(); it++) { if (it->first == msg.sVirtualWnd) { CNotifyPump* pObject = static_cast<CNotifyPump*>(it->second); if( pObject && pObject->LoopDispatch(msg) ) return; } } } /// //±éÀúÖ÷´°¿Ú LoopDispatch( msg ); }