SmsTestView.cpp
上传用户:hcymiss
上传日期:2009-09-17
资源大小:121k
文件大小:4k
源码类别:

手机短信编程

开发平台:

Visual C++

  1. // SmsTestView.cpp : implementation of the CSmsTestView class
  2. //
  3. #include "stdafx.h"
  4. #include "SmsTest.h"
  5. #include "SmsTestDoc.h"
  6. #include "SmsTestView.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CSmsTestView
  14. IMPLEMENT_DYNCREATE(CSmsTestView, CListView)
  15. BEGIN_MESSAGE_MAP(CSmsTestView, CListView)
  16. //{{AFX_MSG_MAP(CSmsTestView)
  17. ON_WM_TIMER()
  18. //}}AFX_MSG_MAP
  19. // Standard printing commands
  20. ON_COMMAND(ID_FILE_PRINT, CListView::OnFilePrint)
  21. ON_COMMAND(ID_FILE_PRINT_DIRECT, CListView::OnFilePrint)
  22. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CListView::OnFilePrintPreview)
  23. END_MESSAGE_MAP()
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CSmsTestView construction/destruction
  26. CSmsTestView::CSmsTestView()
  27. {
  28. // TODO: add construction code here
  29. }
  30. CSmsTestView::~CSmsTestView()
  31. {
  32. }
  33. BOOL CSmsTestView::PreCreateWindow(CREATESTRUCT& cs)
  34. {
  35. // TODO: Modify the Window class or styles here by modifying
  36. //  the CREATESTRUCT cs
  37. cs.style |= LVS_SHOWSELALWAYS | LVS_REPORT;
  38. return CListView::PreCreateWindow(cs);
  39. }
  40. /////////////////////////////////////////////////////////////////////////////
  41. // CSmsTestView drawing
  42. void CSmsTestView::OnDraw(CDC* pDC)
  43. {
  44. CSmsTestDoc* pDoc = GetDocument();
  45. ASSERT_VALID(pDoc);
  46. // TODO: add draw code for native data here
  47. }
  48. void CSmsTestView::OnInitialUpdate()
  49. {
  50. CListView::OnInitialUpdate();
  51. // TODO: You may populate your ListView with items by directly accessing
  52. //  its list control through a call to GetListCtrl().
  53. CListCtrl& ListCtrl = GetListCtrl();
  54. ListCtrl.InsertColumn(0, "号码", LVCFMT_LEFT, 100);
  55. ListCtrl.InsertColumn(1, "时间", LVCFMT_LEFT, 140);
  56. ListCtrl.InsertColumn(2, "消息内容", LVCFMT_LEFT, 500);
  57. SetTimer(1, 1000, NULL);
  58. }
  59. /////////////////////////////////////////////////////////////////////////////
  60. // CSmsTestView printing
  61. BOOL CSmsTestView::OnPreparePrinting(CPrintInfo* pInfo)
  62. {
  63. // default preparation
  64. return DoPreparePrinting(pInfo);
  65. }
  66. void CSmsTestView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  67. {
  68. // TODO: add extra initialization before printing
  69. }
  70. void CSmsTestView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  71. {
  72. // TODO: add cleanup after printing
  73. }
  74. /////////////////////////////////////////////////////////////////////////////
  75. // CSmsTestView diagnostics
  76. #ifdef _DEBUG
  77. void CSmsTestView::AssertValid() const
  78. {
  79. CListView::AssertValid();
  80. }
  81. void CSmsTestView::Dump(CDumpContext& dc) const
  82. {
  83. CListView::Dump(dc);
  84. }
  85. CSmsTestDoc* CSmsTestView::GetDocument() // non-debug version is inline
  86. {
  87. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSmsTestDoc)));
  88. return (CSmsTestDoc*)m_pDocument;
  89. }
  90. #endif //_DEBUG
  91. /////////////////////////////////////////////////////////////////////////////
  92. // CSmsTestView message handlers
  93. void CSmsTestView::OnTimer(UINT nIDEvent) 
  94. {
  95. // TODO: Add your message handler code here and/or call default
  96. if(nIDEvent == 1)
  97. {
  98. SM_PARAM SmParam;
  99. CString strTime;
  100. CString strNumber;
  101. CString strContent;
  102. CListCtrl& ListCtrl = GetListCtrl();
  103. // 取接收到的短消息
  104. if(theApp.m_pSmsTraffic->GetRecvMessage(&SmParam))
  105. {
  106. // 取短消息信息
  107. strNumber = SmParam.TPA;
  108. strContent = SmParam.TP_UD;
  109. strTime = "20" + CString(&SmParam.TP_SCTS[0],2) 
  110. + "-" + CString(&SmParam.TP_SCTS[2],2) 
  111. + "-" + CString(&SmParam.TP_SCTS[4],2)
  112. + " " + CString(&SmParam.TP_SCTS[6],2) 
  113. + ":" + CString(&SmParam.TP_SCTS[8],2) 
  114. + ":" + CString(&SmParam.TP_SCTS[10],2);
  115. // 去掉号码前的"86"
  116. if(strNumber.Left(2) == "86")  strNumber = strNumber.Mid(2);
  117. // 最多保留200条
  118. int nItemCount = ListCtrl.GetItemCount();
  119. if(nItemCount >= 200)
  120. {
  121. ListCtrl.DeleteItem(0);
  122. nItemCount--;
  123. }
  124. // 插入新消息
  125. ListCtrl.InsertItem(nItemCount, strNumber);
  126. ListCtrl.SetItemText(nItemCount, 1, strTime);
  127. ListCtrl.SetItemText(nItemCount, 2, strContent);
  128. ListCtrl.EnsureVisible(nItemCount, FALSE);
  129. }
  130. }
  131. else
  132. {
  133. // other timers
  134. CListView::OnTimer(nIDEvent);
  135. }
  136. }
  137. BOOL CSmsTestView::DestroyWindow() 
  138. {
  139. // TODO: Add your specialized code here and/or call the base class
  140. KillTimer(1);
  141. return CListView::DestroyWindow();
  142. }