// ViewResBase.cpp : 实现文件 // #include "stdafx.h" #include "CTI.h" #include "ViewResBase.h" #include "DisplayWnd.h" // CViewResBase IMPLEMENT_DYNAMIC(CViewResBase, CListCtrl) CViewResBase::CViewResBase(void) { } CViewResBase::~CViewResBase(void) { } /***************************************************************** **【函数名称】 _indexItem **【函数功能】 索引资源 **【参数】 **【返回值】 ****************************************************************/ int CViewResBase::_indexItem( UINT ResId ) { int Count = GetItemCount(); for (int i=0; i < Count; ++i) { if (GetItemData(i) == ResId) return i; } return -1; } /***************************************************************** **【函数名称】 _addRes **【函数功能】 向List中添加资源 **【参数】 **【返回值】 ****************************************************************/ int CViewResBase::_addRes( UINT ResId ) { int Index = GetItemCount(); CString strResID; strResID.Format(_T("%d"), ResId); Index = InsertItem(Index, strResID); SetItemData(Index, ResId); return Index; } /***************************************************************** **【函数名称】 _delRes **【函数功能】 删除资源 **【参数】 **【返回值】 ****************************************************************/ void CViewResBase::_delRes( UINT ResId ) { int Index = _indexItem(ResId); if (Index != -1) { // 界面删除 DeleteItem(Index); } } /***************************************************************** **【函数名称】 create **【函数功能】 控件初始化 **【参数】 **【返回值】 ****************************************************************/ bool CViewResBase::create( CDisplayWnd* pWnd, UINT PanId, UINT ListId ) { ASSERT(pWnd != NULL); CString Name; Name.LoadString(PanId); // 创建pane if (!m_Pane.Create(Name, pWnd, CRect(0, 0, 400, 400), TRUE, PanId, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_TOP | CBRS_FLOAT_MULTI)) { TRACE0("创建设备资源窗口失败"); return false; } m_Pane.EnableDocking(CBRS_ALIGN_ANY); //创建控件 if(!Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | LVS_REPORT | LVS_SORTASCENDING, CRect(0, 0, 0, 0), &m_Pane, ListId)) { TRACE0("创建设备资源控件失败\n"); return false; } SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); InsertColumn(COLUMN_RES_ID, _T("资源ID"), LVCFMT_LEFT, 130); InsertColumn(COLUMN_RES_STATE, _T("状态"), LVCFMT_LEFT, 130); InsertColumn(COLUMN_RES_CALLER, _T("主叫"), LVCFMT_LEFT, 130); InsertColumn(COLUMN_RES_CALLEE, _T("被叫"), LVCFMT_LEFT, 130); InsertColumn(COLUMN_RES_TIME, _T("发生时间"), LVCFMT_LEFT, 130); pWnd->OnNewPane(&m_Pane); return true; } /***************************************************************** **【函数名称】 onResDetail **【函数功能】 资源明细的处理函数 **【参数】 **【返回值】 ****************************************************************/ void CViewResBase::onResDetail( EventResDetail *pResDetail ) { ASSERT(pResDetail != NULL); UINT ResId = pResDetail->nResID; if (_indexItem(ResId) == -1) _addRes(ResId); } /***************************************************************** **【函数名称】 onResState **【函数功能】 资源状态处理函数 **【参数】 **【返回值】 ****************************************************************/ void CViewResBase::onResState( EventResStatus *pResStatus ) { ASSERT(pResStatus != NULL); int Index = _indexItem(pResStatus->nResID); // 未找到指定资源,则创建该资源 if (Index == -1) Index = _addRes(pResStatus->nResID); ASSERT(Index != -1); CString Data; _mapStateToString(pResStatus->nState, Data); SetItemText(Index, COLUMN_RES_STATE, Data); SetItemText(Index, COLUMN_RES_CALLER, pResStatus->szCallerNum); SetItemText(Index, COLUMN_RES_CALLEE, pResStatus->szCalleeNum); CTime Time = CTime::GetCurrentTime(); Data = Time.Format(_T("%H:%M:%S")); SetItemText(Index, COLUMN_RES_TIME, Data); } /***************************************************************** **【函数名称】 newSize **【函数功能】 调整控件大小 **【参数】 **【返回值】 ****************************************************************/ void CViewResBase::newSize( CRect& Rect ) { if(IsWindow(GetSafeHwnd())) SetWindowPos(NULL, Rect.left, Rect.top, Rect.Width(), Rect.Height(), SWP_NOACTIVATE | SWP_NOZORDER); } /***************************************************************** **【函数名称】 showTogether **【函数功能】 Tab模式显示控件 **【参数】 **【返回值】 ****************************************************************/ void CViewResBase::showTogether( CViewResBase* pView ) { ASSERT(pView != NULL); m_Pane.AttachToTabWnd(&pView->m_Pane, DM_SHOW, TRUE); } BEGIN_MESSAGE_MAP(CViewResBase, CListCtrl) END_MESSAGE_MAP() // CViewResBase 消息处理程序