MiddleWares_YiHe 郑州颐和医院随访系统中间件

ViewFax.cpp 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. // ViewFax.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "VoiceStation.h"
  5. #include "ViewFax.h"
  6. #include "DeviceMgr.h"
  7. #include "DevFax.h"
  8. #include "LineAudio.h"
  9. #include "DisplayWnd.h"
  10. // CViewFax
  11. IMPLEMENT_DYNAMIC(CViewFax, CListCtrl)
  12. CViewFax::CViewFax()
  13. {
  14. }
  15. CViewFax::~CViewFax()
  16. {
  17. }
  18. /*****************************************************************
  19. **【函数名称】 __indexItem
  20. **【函数功能】 索引资源
  21. **【参数】
  22. **【返回值】
  23. ****************************************************************/
  24. int CViewFax::__indexItem( UINT ResId )
  25. {
  26. int Count = GetItemCount();
  27. for (int i=0; i < Count; ++i)
  28. {
  29. if (GetItemData(i) == ResId)
  30. return i;
  31. }
  32. return -1;
  33. }
  34. /*****************************************************************
  35. **【函数名称】 __addRes
  36. **【函数功能】 向List中添加资源
  37. **【参数】
  38. **【返回值】
  39. ****************************************************************/
  40. int CViewFax::__addRes( UINT ResId )
  41. {
  42. int Index = GetItemCount();
  43. CString strResID;
  44. strResID.Format(_T("%d"), ResId);
  45. Index = InsertItem(Index, strResID);
  46. SetItemData(Index, ResId);
  47. return Index;
  48. }
  49. /*****************************************************************
  50. **【函数名称】 __delRes
  51. **【函数功能】 删除资源
  52. **【参数】
  53. **【返回值】
  54. ****************************************************************/
  55. void CViewFax::__delRes( UINT ResId )
  56. {
  57. int Index = __indexItem(ResId);
  58. if (Index != -1)
  59. {
  60. // 界面删除行
  61. DeleteItem(Index);
  62. }
  63. }
  64. /*****************************************************************
  65. **【函数名称】 create
  66. **【函数功能】 控件初始化
  67. **【参数】
  68. **【返回值】
  69. ****************************************************************/
  70. bool CViewFax::create( CDisplayWnd* pWnd )
  71. {
  72. ASSERT(pWnd != NULL);
  73. CString Name;
  74. Name.LoadString(IDS_STR_VIEW_FAX);
  75. // 创建pane
  76. if (!m_Pane.Create(Name, pWnd, CRect(0, 0, 400, 400), TRUE, IDS_STR_VIEW_FAX,
  77. WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_TOP | CBRS_FLOAT_MULTI))
  78. {
  79. TRACE0("创建设备资源窗口失败");
  80. return false;
  81. }
  82. m_Pane.EnableDocking(CBRS_ALIGN_ANY);
  83. //创建控件
  84. if(!Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | LVS_REPORT | LVS_SORTASCENDING,
  85. CRect(0, 0, 0, 0), &m_Pane, IDC_LIST_LINE))
  86. {
  87. TRACE0("创建设备资源控件失败\n");
  88. return false;
  89. }
  90. SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
  91. InsertColumn(COLUMN_RES_ID, _T("线路ID"), LVCFMT_LEFT, 140);
  92. InsertColumn(COLUMN_RES_STATE, _T("状态"), LVCFMT_LEFT, 140);
  93. InsertColumn(COLUMN_RES_ASSO_LINE, _T("关联线路"), LVCFMT_LEFT, 140);
  94. InsertColumn(COLUMN_RES_FAX_FILE, _T("传真文件"), LVCFMT_LEFT, 140);
  95. pWnd->OnNewPane(&m_Pane);
  96. return true;
  97. }
  98. /*****************************************************************
  99. **【函数名称】 onFaxStateUpdated
  100. **【函数功能】 传真状态更新处理函数
  101. **【参数】
  102. **【返回值】
  103. ****************************************************************/
  104. void CViewFax::onFaxStateUpdated( int ResId )
  105. {
  106. CDevFax* pDev = CDeviceMgr::GetInstance().getFaxByID(ResId);
  107. ASSERT(pDev != NULL);
  108. if(pDev == NULL)
  109. return;
  110. int Index = __indexItem(ResId);
  111. if (Index == -1) // 未找到对应资源,则先创建
  112. Index = __addRes(ResId); // 创建资源
  113. ASSERT(Index != -1);
  114. CString Data;
  115. Data = pDev->state();
  116. SetItemText(Index, COLUMN_RES_STATE, Data);
  117. CLineAudio* pLine = pDev->getAssoLine();
  118. if(pLine == NULL)
  119. Data = _T("");
  120. else
  121. Data.Format(_T("%d"), pLine->id());
  122. SetItemText(Index, COLUMN_RES_ASSO_LINE, Data);
  123. SetItemText(Index, COLUMN_RES_STATE, pDev->faxFile());
  124. }
  125. /*****************************************************************
  126. **【函数名称】 newSize
  127. **【函数功能】 调整控件大小
  128. **【参数】
  129. **【返回值】
  130. ****************************************************************/
  131. void CViewFax::newSize( CRect& Rect )
  132. {
  133. if(IsWindow(GetSafeHwnd()))
  134. SetWindowPos(NULL, Rect.left, Rect.top, Rect.Width(), Rect.Height(), SWP_NOACTIVATE | SWP_NOZORDER);
  135. }
  136. BEGIN_MESSAGE_MAP(CViewFax, CListCtrl)
  137. END_MESSAGE_MAP()
  138. // CViewFax 消息处理程序