中间件底层,websocket

ViewResBase.cpp 4.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. // ViewResBase.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "CTI.h"
  5. #include "ViewResBase.h"
  6. #include "DisplayWnd.h"
  7. // CViewResBase
  8. IMPLEMENT_DYNAMIC(CViewResBase, CListCtrl)
  9. CViewResBase::CViewResBase(void)
  10. {
  11. }
  12. CViewResBase::~CViewResBase(void)
  13. {
  14. }
  15. /*****************************************************************
  16. **【函数名称】 _indexItem
  17. **【函数功能】 索引资源
  18. **【参数】
  19. **【返回值】
  20. ****************************************************************/
  21. int CViewResBase::_indexItem(UINT ResId)
  22. {
  23. int Count = GetItemCount();
  24. for (int i = 0; i < Count; ++i)
  25. {
  26. if (GetItemData(i) == ResId)
  27. return i;
  28. }
  29. return -1;
  30. }
  31. /*****************************************************************
  32. **【函数名称】 _addRes
  33. **【函数功能】 向List中添加资源
  34. **【参数】
  35. **【返回值】
  36. ****************************************************************/
  37. int CViewResBase::_addRes(UINT ResId)
  38. {
  39. int Index = GetItemCount();
  40. CString strResID;
  41. strResID.Format(_T("%d"), ResId);
  42. Index = InsertItem(Index, strResID);
  43. SetItemData(Index, ResId);
  44. return Index;
  45. }
  46. /*****************************************************************
  47. **【函数名称】 _delRes
  48. **【函数功能】 删除资源
  49. **【参数】
  50. **【返回值】
  51. ****************************************************************/
  52. void CViewResBase::_delRes(UINT ResId)
  53. {
  54. int Index = _indexItem(ResId);
  55. if (Index != -1)
  56. {
  57. // 界面删除
  58. DeleteItem(Index);
  59. }
  60. }
  61. /*****************************************************************
  62. **【函数名称】 create
  63. **【函数功能】 控件初始化
  64. **【参数】
  65. **【返回值】
  66. ****************************************************************/
  67. bool CViewResBase::create(CDisplayWnd* pWnd, UINT PanId, UINT ListId)
  68. {
  69. ASSERT(pWnd != NULL);
  70. CString Name;
  71. Name.LoadString(PanId);
  72. // 创建pane
  73. if (!m_Pane.Create(Name, pWnd, CRect(0, 0, 400, 400), TRUE, PanId,
  74. WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_TOP | CBRS_FLOAT_MULTI))
  75. {
  76. TRACE0("创建设备资源窗口失败");
  77. return false;
  78. }
  79. m_Pane.EnableDocking(CBRS_ALIGN_ANY);
  80. //创建控件
  81. if (!Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | LVS_REPORT | LVS_SORTASCENDING,
  82. CRect(0, 0, 0, 0), &m_Pane, ListId))
  83. {
  84. TRACE0("创建设备资源控件失败\n");
  85. return false;
  86. }
  87. //禁用clistctrl自动排序,中继资源视图
  88. if (IDC_LIST_TRUNK == ListId)
  89. {
  90. ModifyStyle(LVS_SORTASCENDING | LVS_SORTDESCENDING, true);
  91. }
  92. SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
  93. InsertColumn(COLUMN_RES_ID, _T("资源ID"), LVCFMT_LEFT, 130);
  94. InsertColumn(COLUMN_RES_STATE, _T("状态"), LVCFMT_LEFT, 130);
  95. InsertColumn(COLUMN_RES_CALLER, _T("主叫"), LVCFMT_LEFT, 130);
  96. InsertColumn(COLUMN_RES_CALLEE, _T("被叫"), LVCFMT_LEFT, 130);
  97. InsertColumn(COLUMN_RES_TIME, _T("发生时间"), LVCFMT_LEFT, 130);
  98. pWnd->OnNewPane(&m_Pane);
  99. return true;
  100. }
  101. /*****************************************************************
  102. **【函数名称】 onResDetail
  103. **【函数功能】 资源明细的处理函数
  104. **【参数】
  105. **【返回值】
  106. ****************************************************************/
  107. void CViewResBase::onResDetail(EventResDetail *pResDetail)
  108. {
  109. ASSERT(pResDetail != NULL);
  110. UINT ResId = pResDetail->nResID;
  111. if (_indexItem(ResId) == -1)
  112. _addRes(ResId);
  113. }
  114. /*****************************************************************
  115. **【函数名称】 onResState
  116. **【函数功能】 资源状态处理函数
  117. **【参数】
  118. **【返回值】
  119. ****************************************************************/
  120. void CViewResBase::onResState(EventResStatus *pResStatus)
  121. {
  122. ASSERT(pResStatus != NULL);
  123. int Index = _indexItem(pResStatus->nResID);
  124. // 未找到指定资源,则创建该资源
  125. if (Index == -1)
  126. Index = _addRes(pResStatus->nResID);
  127. ASSERT(Index != -1);
  128. CString Data;
  129. _mapStateToString(pResStatus->nState, Data);
  130. SetItemText(Index, COLUMN_RES_STATE, Data);
  131. SetItemText(Index, COLUMN_RES_CALLER, pResStatus->szCallerNum);
  132. SetItemText(Index, COLUMN_RES_CALLEE, pResStatus->szCalleeNum);
  133. CTime Time = CTime::GetCurrentTime();
  134. Data = Time.Format(_T("%H:%M:%S"));
  135. SetItemText(Index, COLUMN_RES_TIME, Data);
  136. }
  137. /*****************************************************************
  138. **【函数名称】 newSize
  139. **【函数功能】 调整控件大小
  140. **【参数】
  141. **【返回值】
  142. ****************************************************************/
  143. void CViewResBase::newSize(CRect& Rect)
  144. {
  145. if (IsWindow(GetSafeHwnd()))
  146. SetWindowPos(NULL, Rect.left, Rect.top, Rect.Width(), Rect.Height(), SWP_NOACTIVATE | SWP_NOZORDER);
  147. }
  148. /*****************************************************************
  149. **【函数名称】 showTogether
  150. **【函数功能】 Tab模式显示控件
  151. **【参数】
  152. **【返回值】
  153. ****************************************************************/
  154. void CViewResBase::showTogether(CViewResBase* pView)
  155. {
  156. ASSERT(pView != NULL);
  157. m_Pane.AttachToTabWnd(&pView->m_Pane, DM_SHOW, TRUE);
  158. }
  159. BEGIN_MESSAGE_MAP(CViewResBase, CListCtrl)
  160. END_MESSAGE_MAP()
  161. // CViewResBase 消息处理程序