Talk.cpp
上传用户:wpp2016
上传日期:2010-02-01
资源大小:1250k
文件大小:4k
源码类别:

Telnet服务器

开发平台:

Visual C++

  1. // Talk.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "anywhere.h"
  5. #include "Talk.h"
  6. #include "thread1.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CTalk
  14. IMPLEMENT_DYNCREATE(CTalk, CFormView)
  15. CTalk::CTalk()
  16. : CFormView(CTalk::IDD)
  17. {
  18. //{{AFX_DATA_INIT(CTalk)
  19. // NOTE: the ClassWizard will add member initialization here
  20. //}}AFX_DATA_INIT
  21. }
  22. CTalk::~CTalk()
  23. {
  24. }
  25. void CTalk::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CFormView::DoDataExchange(pDX);
  28. //{{AFX_DATA_MAP(CTalk)
  29. DDX_Control(pDX, IDC_SEND, m_send);
  30. DDX_Control(pDX, IDC_RECV, m_recv);
  31. //}}AFX_DATA_MAP
  32. }
  33. BEGIN_MESSAGE_MAP(CTalk, CFormView)
  34. //{{AFX_MSG_MAP(CTalk)
  35. ON_WM_SIZE()
  36. ON_COMMAND(ID_CHAT_CONNECT, OnChatConnect)
  37. ON_UPDATE_COMMAND_UI(ID_CHAT_CONNECT, OnUpdateChatConnect)
  38. //}}AFX_MSG_MAP
  39. END_MESSAGE_MAP()
  40. /////////////////////////////////////////////////////////////////////////////
  41. // CTalk diagnostics
  42. #ifdef _DEBUG
  43. void CTalk::AssertValid() const
  44. {
  45. CFormView::AssertValid();
  46. }
  47. void CTalk::Dump(CDumpContext& dc) const
  48. {
  49. CFormView::Dump(dc);
  50. }
  51. #endif //_DEBUG
  52. /////////////////////////////////////////////////////////////////////////////
  53. // CTalk message handlers
  54. void CTalk::OnSize(UINT nType, int cx, int cy) 
  55. {
  56. CFormView::OnSize(nType, cx, cy);
  57.     if  (m_recv.GetSafeHwnd())
  58. m_recv.MoveWindow(0,0,cx,cy/2,TRUE);
  59. if (m_send.GetSafeHwnd())
  60. m_send.MoveWindow(0,cy/2,cx,cy/2,TRUE);
  61. }
  62. void CTalk::OnInitialUpdate() 
  63. {
  64. CFormView::OnInitialUpdate();
  65. m_send.LimitText(4096);
  66. m_send.init(this);
  67. pSocket= new CChater(this);
  68. pSocket->Create();
  69. pSocket->init();
  70. m_send.EnableWindow(linkrc.bChat);
  71. }
  72. void CTalk::OnChatConnect() 
  73. {
  74. if (!linkrc.bConnected) {
  75. CString sErrmsg,caption;
  76. sErrmsg.LoadString(IDS_ERROR_RECEIVE);
  77. caption.LoadString(IDS_CAPTION);
  78. MessageBox(sErrmsg,caption,MB_OK);
  79. return;}
  80.     if (pSocket->Connect(linkrc.ip,9999)) {
  81. linkrc.bChat=TRUE;
  82. m_send.EnableWindow(TRUE);
  83. }
  84. }
  85. void CTalk::Send(CString msg)
  86. {
  87. try {
  88. if (pSocket!=NULL) pSocket->Send(msg);
  89. }
  90. catch (CFileException *e)
  91. {
  92. CString sErrmsg,caption;
  93. sErrmsg.LoadString(IDS_SERVER_FAILED);
  94. caption.LoadString(IDS_CAPTION);
  95. MessageBox(sErrmsg,caption,MB_OK);
  96. pSocket->Close();
  97. //delete pSocket;
  98. //pSocket->~CChater();
  99. //pSocket= new CChater(this);
  100.     //pSocket->Create();
  101.     //pSocket->init();
  102. //linkrc.bChat=FALSE;
  103. e->Delete();
  104. }
  105. }
  106. void CTalk::Recv(CString msg)
  107. {
  108. m_recv.SetWindowText(msg);
  109. }
  110. /////////////////////////////////////////////////////////////////////////////
  111. // CSend
  112. CSend::CSend()
  113. {
  114. }
  115. CSend::~CSend()
  116. {
  117. }
  118. BEGIN_MESSAGE_MAP(CSend, CEdit)
  119. //{{AFX_MSG_MAP(CSend)
  120. ON_WM_KEYDOWN()
  121. //}}AFX_MSG_MAP
  122. END_MESSAGE_MAP()
  123. /////////////////////////////////////////////////////////////////////////////
  124. // CSend message handlers
  125. /////////////////////////////////////////////////////////////////////////////
  126. // CRecv
  127. CRecv::CRecv()
  128. {
  129. }
  130. CRecv::~CRecv()
  131. {
  132. }
  133. BEGIN_MESSAGE_MAP(CRecv, CEdit)
  134. //{{AFX_MSG_MAP(CRecv)
  135. // NOTE - the ClassWizard will add and remove mapping macros here.
  136. //}}AFX_MSG_MAP
  137. END_MESSAGE_MAP()
  138. /////////////////////////////////////////////////////////////////////////////
  139. // CRecv message handlers
  140. void CSend::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
  141. {
  142. if (nChar==VK_RETURN) {
  143. CString text;
  144. GetWindowText(text);
  145. m_ptalk->Send(text);
  146. }
  147. CEdit::OnKeyDown(nChar, nRepCnt, nFlags);
  148. }
  149. void CSend::init(CTalk *ptalk)
  150. {
  151. m_ptalk=ptalk;
  152. }
  153. void CTalk::OnUpdateChatConnect(CCmdUI* pCmdUI) 
  154. {
  155. pCmdUI->Enable(!linkrc.bChat);
  156. }