ClientSysMsg.cpp
上传用户:cydong117
上传日期:2009-11-10
资源大小:638k
文件大小:3k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. /******************************************************************************************************************
  2.                                                                                                                    
  3. 葛碘疙:
  4. 累己磊:
  5. 累己老:
  6. [老磊][荐沥磊] : 荐沥 郴侩
  7.                                                                                                                    
  8. *******************************************************************************************************************/
  9. #include "StdAfx.h"
  10. /******************************************************************************************************************
  11. ClientSysMsg Class
  12. *******************************************************************************************************************/
  13. ClientSysMsg::ClientSysMsg()
  14. {
  15. Init();
  16. }
  17. ClientSysMsg::~ClientSysMsg()
  18. {
  19. Destroy();
  20. }
  21. VOID ClientSysMsg::Init()
  22. {
  23. m_wCurrDelay = 0;
  24. }
  25. VOID ClientSysMsg::Destroy()
  26. {
  27. m_stSysMsg.ClearAllNodes();
  28. Init();
  29. }
  30. VOID ClientSysMsg::AddSysMsg(CHAR* szStr)
  31. {
  32. LPCONSTSTRING pstMsg = NULL;
  33. while ( m_stSysMsg.GetCounter() >= _MAX_SYSMSG )
  34. {
  35. m_stSysMsg.MoveCurrentToTop();
  36. pstMsg = m_stSysMsg.GetCurrentData();
  37. if ( pstMsg ) 
  38. {
  39. m_stSysMsg.DeleteCurrentNodeEx();
  40. SAFE_DELETE((LPCONSTSTRING)pstMsg);
  41. }
  42. }
  43. m_stSysMsg.MoveCurrentToTail();
  44. pstMsg = new CONSTSTRING;
  45. strcpy(pstMsg->szMsg, szStr);
  46. m_stSysMsg.AddNode(pstMsg);
  47. m_wCurrDelay = 0;
  48. }
  49. VOID ClientSysMsg::ShowSysMsg(INT nLoopTime, INT nX, INT nY)
  50. {
  51. DWORD dwDelay = 3000;
  52. LPCONSTSTRING pstMsg = NULL;
  53. m_wCurrDelay += nLoopTime;
  54. m_stSysMsg.MoveCurrentToTop();
  55. for ( INT nCnt = 0; nCnt < m_stSysMsg.GetCounter(); nCnt++ )
  56. {
  57. LPCONSTSTRING pstMsg = m_stSysMsg.GetCurrentData();
  58. if ( pstMsg )
  59. {
  60. g_xMainWnd.PutsHan(NULL, nX+1, nY+nCnt*15+1, RGB(10, 10, 10), RGB(0, 0, 0), pstMsg->szMsg);
  61. g_xMainWnd.PutsHan(NULL, nX, nY+nCnt*15, RGB(100, 200, 100), RGB(0, 0, 0), pstMsg->szMsg);
  62. }
  63. m_stSysMsg.MoveNextNode();
  64. }
  65. if ( m_stSysMsg.GetCounter() > 5 ) dwDelay = 1000;
  66. if ( m_wCurrDelay > dwDelay )
  67. {
  68. m_stSysMsg.MoveCurrentToTop();
  69. if ( m_stSysMsg.GetCounter() )
  70. {
  71. pstMsg = m_stSysMsg.GetCurrentData();
  72. if ( pstMsg )
  73. {
  74. m_stSysMsg.DeleteCurrentNodeEx();
  75. SAFE_DELETE((LPCONSTSTRING)pstMsg);
  76. }
  77. }
  78. m_wCurrDelay = 0;
  79. }
  80. }