ShowMessage.cpp
上传用户:power_led
上传日期:2013-04-11
资源大小:373k
文件大小:4k
源码类别:

ICQ/即时通讯

开发平台:

Visual C++

  1. // ShowMessage.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ChatClient.h"
  5. #include "ShowMessage.h"
  6. #include "MainFrm.h"
  7. #include "MyTreeView.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CShowMessage dialog
  15. CShowMessage::CShowMessage(CString strMessage,CString strClientName,int iTimerId,CWnd* pParent /*=NULL*/)
  16. : CDialog(CShowMessage::IDD, pParent)
  17. {
  18. //{{AFX_DATA_INIT(CShowMessage)
  19. m_strMessage = _T(strMessage);
  20. m_strClientName = _T(strClientName);
  21. //}}AFX_DATA_INIT
  22. iID = iTimerId;
  23. }
  24. void CShowMessage::DoDataExchange(CDataExchange* pDX)
  25. {
  26. CDialog::DoDataExchange(pDX);
  27. //{{AFX_DATA_MAP(CShowMessage)
  28. DDX_Text(pDX, IDC_MESSAGE, m_strMessage);
  29. DDX_Text(pDX, IDC_CLIENTNAME, m_strClientName);
  30. //}}AFX_DATA_MAP
  31. }
  32. BEGIN_MESSAGE_MAP(CShowMessage, CDialog)
  33. //{{AFX_MSG_MAP(CShowMessage)
  34. //}}AFX_MSG_MAP
  35. END_MESSAGE_MAP()
  36. /////////////////////////////////////////////////////////////////////////////
  37. // CShowMessage message handlers
  38. BOOL CShowMessage::OnInitDialog() 
  39. {
  40. CDialog::OnInitDialog();
  41. // TODO: Add extra initialization here
  42. GetDlgItem(IDC_MESSAGE) ->SetFocus();
  43. CenterWindow(GetDesktopWindow());
  44. return FALSE;  // return TRUE unless you set the focus to a control
  45.               // EXCEPTION: OCX Property Pages should return FALSE
  46. }
  47. extern CChatClientApp theApp;
  48. void CShowMessage::OnOK() 
  49. {
  50. // TODO: Add extra validation here
  51. //得到当前按钮的文本
  52. CString strButtonTitle;
  53. GetDlgItemText(IDOK,strButtonTitle);
  54. //杀死接受用户信息时启动的OnTimer
  55. CMainFrame * pFrame;
  56. pFrame = (CMainFrame *)AfxGetMainWnd();
  57. ASSERT(pFrame != NULL);
  58. ASSERT_VALID(pFrame);
  59. CMyTreeView * pView;
  60. pView = (CMyTreeView * )pFrame ->GetTreeView();
  61. pView ->KillTimer(iID);
  62. //恢复任务栏图标
  63. theApp.TaskIcon.hIcon = theApp.LoadIcon(IDI_TASKICON);
  64. Shell_NotifyIcon(NIM_MODIFY,&theApp.TaskIcon);
  65. //删除接受用户输入时创建的新的链表项
  66. pView->DeleteOneClient(m_strClientName,iID);
  67. if(strButtonTitle == "回复")
  68. {
  69. m_strMessage = "";
  70. UpdateData(FALSE);
  71. SetDlgItemText(IDOK,"发送");
  72. GetDlgItem(IDC_MESSAGE)->SetFocus();
  73. }
  74. else
  75. {
  76. //回复发送人
  77. UpdateData();
  78. if(m_strMessage.GetLength())
  79. {
  80. //填充Message结构
  81. Message msObj;
  82. memset(&msObj,0,sizeof(Message));
  83. msObj.iType = USERSESSION;
  84. msObj.iSubType = SAYINPRIVATE;
  85. CString strTemp  = theApp.m_skMainSocket.GetRoomName();
  86. int iLen = strTemp.GetLength();
  87. lstrcpy(msObj.strRoom,_T(strTemp.GetBuffer(iLen)));
  88. strTemp.ReleaseBuffer();
  89. strTemp = m_strMessage;
  90. iLen = strTemp.GetLength();
  91. iLen > 1024 ? 1024 : iLen;
  92. lstrcpy(msObj.strContent,_T(strTemp.GetBuffer(iLen)));
  93. strTemp.ReleaseBuffer();
  94. theApp.m_skMainSocket.Send(&msObj,sizeof(Message));
  95. //自己的名字
  96. strTemp = theApp.m_skMainSocket.GetUserName();
  97. iLen = strTemp.GetLength();
  98. iLen > 20 ? 20:iLen;
  99. lstrcpy(msObj.strName,_T(strTemp.GetBuffer(iLen)));
  100. strTemp.ReleaseBuffer();
  101. //说话对象的名字
  102. strTemp =m_strClientName;
  103. iLen = strTemp.GetLength();
  104. iLen > 20 ? 20 : iLen;
  105. lstrcpy(msObj.strClientName,_T(strTemp.GetBuffer(iLen)));
  106. strTemp.ReleaseBuffer();
  107. //发送数据
  108. theApp.m_skMainSocket.Send(&msObj,sizeof(Message));
  109. }
  110. CDialog::OnOK();
  111. }
  112. }
  113. void CShowMessage::OnCancel() 
  114. {
  115. // TODO: Add extra cleanup here
  116. theApp.m_skMainSocket.SetbMessage(FALSE);
  117. //杀死接受用户信息时启动的OnTimer
  118. CMainFrame * pFrame;
  119. pFrame = (CMainFrame *)AfxGetMainWnd();
  120. ASSERT(pFrame != NULL);
  121. ASSERT_VALID(pFrame);
  122. CMyTreeView * pView;
  123. pView = (CMyTreeView * )pFrame ->GetTreeView();
  124. pView ->KillTimer(iID);
  125. pView->DeleteOneClient(m_strClientName,iID);
  126. //恢复任务栏图标
  127. theApp.TaskIcon.hIcon = theApp.LoadIcon(IDI_TASKICON);
  128. Shell_NotifyIcon(NIM_MODIFY,&theApp.TaskIcon);
  129. CDialog::OnCancel();
  130. }