⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pppmessagerdlg.cpp

📁 转上传一个
💻 CPP
字号:
   1. // PppMessagerDlg.cpp : implementation file   
   2. //   
   3.    
   4. #include "stdafx.h"   
   5. #include "PppMessager.h"   
   6. #include "PppMessagerDlg.h"   
   7. #include "UserMessage.h"   
   8. #include "Protocol.h"   
   9.    
  10. #ifdef _DEBUG   
  11. #define new DEBUG_NEW   
  12. #undef THIS_FILE   
  13. static char THIS_FILE[] = __FILE__;   
  14. #endif   
  15.    
  16. /////////////////////////////////////////////////////////////////////////////   
  17. // CPppMessagerDlg dialog   
  18.    
  19. CPppMessagerDlg::CPppMessagerDlg(CWnd* pParent /*=NULL*/)   
  20.     : CDialog(CPppMessagerDlg::IDD, pParent)   
  21. {   
  22.     //{{AFX_DATA_INIT(CPppMessagerDlg)   
  23.     m_Edit_Send_Message = _T("");   
  24.     m_Edit_Recv_Message = _T("");   
  25.     m_nUpdateDataFlag = 3;//Update data of three contorls.   
  26.    
  27.     //}}AFX_DATA_INIT   
  28.     // Note that LoadIcon does not require a subsequent DestroyIcon in Win32   
  29.     m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);   
  30. }   
  31.    
  32. //////////////////////////////////////////////////////////////////////////////   
  33. //   
  34. //   
  35. //   
  36. //m_nUpdateDataFlag bits0 == 1 ---- m_Edit_Recv_Message.   
  37. //m_nUpdateDataFlag bits1 == 1 ---- m_IpAddress_Dest.   
  38. //m_nUpdateDataFlag bits2 == 1 ---- m_Edit_Send_Message.   
  39. //   
  40. //////////////////////////////////////////////////////////////////////////////   
  41. void CPppMessagerDlg::DoDataExchange(CDataExchange* pDX)   
  42. {   
  43.     CDialog::DoDataExchange(pDX);   
  44.     //{{AFX_DATA_MAP(CPppMessagerDlg)   
  45.    
  46.     DDX_Control(pDX, IDC_IPADDRESS_DEST, m_IpAddress_Dest);   
  47.    
  48.     if(m_nUpdateDataFlag&0x1)   
  49.     {   
  50.        DDX_Text(pDX, IDC_EDIT_RECV_MSG, m_Edit_Recv_Message);   
  51.     }   
  52.    
  53.     if(m_nUpdateDataFlag&0x2)   
  54.     {   
  55.         DDX_Text(pDX, IDC_EDIT_SEND_MSG, m_Edit_Send_Message);   
  56.     }   
  57.    
  58.     //}}AFX_DATA_MAP   
  59. }   
  60.    
  61. BEGIN_MESSAGE_MAP(CPppMessagerDlg, CDialog)   
  62.     //{{AFX_MSG_MAP(CPppMessagerDlg)   
  63.     ON_WM_PAINT()   
  64.     ON_WM_QUERYDRAGICON()   
  65.     ON_BN_CLICKED(IDOK, OnSendMessage)   
  66.     ON_BN_CLICKED(IDCANCEL, OnExit)   
  67.     ON_MESSAGE(RECV_TH_ANNOUNCE_RECV_MESSAGE, OnRecvMessage)   
  68.     //}}AFX_MSG_MAP   
  69. END_MESSAGE_MAP()   
  70.    
  71. /////////////////////////////////////////////////////////////////////////////   
  72. // CPppMessagerDlg message handlers   
  73.    
  74. BOOL CPppMessagerDlg::OnInitDialog()   
  75. {   
  76.     CDialog::OnInitDialog();   
  77.    
  78.     // Set the icon for this dialog.  The framework does this automatically   
  79.     //  when the application's main window is not a dialog   
  80.     SetIcon(m_hIcon, TRUE);         // Set big icon   
  81.     SetIcon(m_hIcon, FALSE);        // Set small icon   
  82.        
  83.     //Post main dlg handle to send thread and recv thread.   
  84.     PostThreadMessage(m_dwSendThreadId, MAIN_TH_MWIN_ANNOUNCE_HANDLE  \   
  85.         , (WPARAM)GetSafeHwnd(), 0);   
  86.    
  87.     PostThreadMessage(m_dwRecvThreadId, MAIN_TH_MWIN_ANNOUNCE_HANDLE  \   
  88.         , (WPARAM)GetSafeHwnd(), 0);   
  89.        
  90.        
  91.    
  92.     return TRUE;  // return TRUE  unless you set the focus to a control   
  93. }   
  94.    
  95. // If you add a minimize button to your dialog, you will need the code below   
  96. //  to draw the icon.  For MFC applications using the document/view model,   
  97. //  this is automatically done for you by the framework.   
  98.    
  99. void CPppMessagerDlg::OnPaint()    
 100. {   
 101.     if (IsIconic())   
 102.     {   
 103.         CPaintDC dc(this); // device context for painting   
 104.    
 105.         SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);   
 106.    
 107.         // Center icon in client rectangle   
 108.         int cxIcon = GetSystemMetrics(SM_CXICON);   
 109.         int cyIcon = GetSystemMetrics(SM_CYICON);   
 110.         CRect rect;   
 111.         GetClientRect(&rect);   
 112.         int x = (rect.Width() - cxIcon + 1) / 2;   
 113.         int y = (rect.Height() - cyIcon + 1) / 2;   
 114.    
 115.         // Draw the icon   
 116.         dc.DrawIcon(x, y, m_hIcon);   
 117.            
 118.     }   
 119.     else   
 120.     {      
 121.         CDialog::OnPaint();   
 122.     }   
 123. }   
 124.    
 125. // The system calls this to obtain the cursor to display while the user drags   
 126. //  the minimized window.   
 127. HCURSOR CPppMessagerDlg::OnQueryDragIcon()   
 128. {   
 129.     return (HCURSOR) m_hIcon;   
 130. }   
 131.    
 132.    
 133. ////////////////////////////////////////////////////////////////////////////////////   
 134. //   
 135. //   
 136. //   
 137. //   
 138. //   
 139. //   
 140. //   
 141. //   
 142. /////////////////////////////////////////////////////////////////////////////////////   
 143. void CPppMessagerDlg::LoadPacketHandlerId( DWORD dwSendThreadId, DWORD dwRecvThreadId)   
 144. {   
 145.     m_dwSendThreadId = dwSendThreadId;   
 146.     m_dwRecvThreadId = dwRecvThreadId;   
 147.        
 148. }   
 149.    
 150.    
 151. ////////////////////////////////////////////////////////////////////////////////////   
 152. //   
 153. //   
 154. //   
 155. //   
 156. //   
 157. //   
 158. //   
 159. //   
 160. /////////////////////////////////////////////////////////////////////////////////////   
 161. void CPppMessagerDlg::OnSendMessage()    
 162. {      
 163.     //Get data to be sent.   
 164.     m_nUpdateDataFlag = 0x02;   
 165.     UpdateData(TRUE);   
 166.    
 167.     m_UserData.nDataLen = m_Edit_Send_Message.GetLength();   
 168.     m_UserData.pcData = m_Edit_Send_Message.LockBuffer();   
 169.    
 170.     //Get dest ip address.   
 171.     memset(m_UserData.pcDestIpAddr, 0, sizeof(m_UserData.pcDestIpAddr));   
 172.     m_IpAddress_Dest.GetWindowText(m_UserData.pcDestIpAddr \   
 173.         , sizeof(m_UserData.pcDestIpAddr));   
 174.        
 175.     //Send message to the thread of sending packet.   
 176.     PostThreadMessage(m_dwSendThreadId, MAIN_TH_MWIN_SEND_MESSAGE, (WPARAM)&m_UserData, 0);   
 177.    
 178.     m_Edit_Send_Message.UnlockBuffer();   
 179. }   
 180.    
 181.    
 182.    
 183. ////////////////////////////////////////////////////////////////////////////////////   
 184. //   
 185. //   
 186. //   
 187. //   
 188. //   
 189. //   
 190. //   
 191. //   
 192. /////////////////////////////////////////////////////////////////////////////////////   
 193. void CPppMessagerDlg::OnExit()    
 194. {   
 195.     // TODO: Add your control notification handler code here   
 196.     this->DestroyWindow();   
 197. }   
 198.    
 199.    
 200. LRESULT CPppMessagerDlg::OnRecvMessage(WPARAM wParam, LPARAM lParam)   
 201. {   
 202.     char * pcData = NULL;   
 203.     int nDataLen;   
 204.    
 205.     //Receiving data.   
 206.     pcData = (char *)wParam;   
 207.     nDataLen = (int)lParam;   
 208.        
 209.     //Check if arguments are valid.   
 210.     if( (NULL == pcData)||(nDataLen <=0) )   
 211.     {   
 212.         PostThreadMessage(m_dwSendThreadId, MAIN_TH_MWIN_RECV_MESSAGE_NAK, 0, 0);   
 213.         return 0;          
 214.     }   
 215.        
 216.     //Show data to manager.   
 217.     m_Edit_Recv_Message.Insert(0, "\r\n");   
 218.    
 219.     m_Edit_Recv_Message.Insert(0, pcData);   
 220.        
 221.        
 222.     m_nUpdateDataFlag = 0x01;   
 223.     UpdateData(FALSE);   
 224.    
 225.     return 0;   
 226. }   
 227.    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -