CommandLineTestDlg.cpp
上传用户:sdzdgs
上传日期:2020-11-14
资源大小:1589k
文件大小:7k
源码类别:

编辑框

开发平台:

Visual C++

  1. // CommandLineTestDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "CommandLineTest.h"
  5. #include "CommandLineTestDlg.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CAboutDlg dialog used for App About
  13. class CAboutDlg : public CDialog
  14. {
  15. public:
  16. CAboutDlg();
  17. // Dialog Data
  18. //{{AFX_DATA(CAboutDlg)
  19. enum { IDD = IDD_ABOUTBOX };
  20. //}}AFX_DATA
  21. // ClassWizard generated virtual function overrides
  22. //{{AFX_VIRTUAL(CAboutDlg)
  23. protected:
  24. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  25. //}}AFX_VIRTUAL
  26. // Implementation
  27. protected:
  28. //{{AFX_MSG(CAboutDlg)
  29. //}}AFX_MSG
  30. DECLARE_MESSAGE_MAP()
  31. };
  32. /////////////////////////////////////////////////////////////////////////////
  33. /////////////////////////////////////////////////////////////////////////////
  34. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  35. {
  36. //{{AFX_DATA_INIT(CAboutDlg)
  37. //}}AFX_DATA_INIT
  38. }
  39. /////////////////////////////////////////////////////////////////////////////
  40. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  41. {
  42. CDialog::DoDataExchange(pDX);
  43. //{{AFX_DATA_MAP(CAboutDlg)
  44. //}}AFX_DATA_MAP
  45. }
  46. /////////////////////////////////////////////////////////////////////////////
  47. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  48. //{{AFX_MSG_MAP(CAboutDlg)
  49. // No message handlers
  50. //}}AFX_MSG_MAP
  51. END_MESSAGE_MAP()
  52. /////////////////////////////////////////////////////////////////////////////
  53. // CCommandLineTestDlg dialog
  54. CCommandLineTestDlg::CCommandLineTestDlg(CWnd* pParent /*=NULL*/)
  55. : CDialog(CCommandLineTestDlg::IDD, pParent)
  56. {
  57. //{{AFX_DATA_INIT(CCommandLineTestDlg)
  58. // NOTE: the ClassWizard will add member initialization here
  59. //}}AFX_DATA_INIT
  60. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  61. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  62. }
  63. /////////////////////////////////////////////////////////////////////////////
  64. void CCommandLineTestDlg::DoDataExchange(CDataExchange* pDX)
  65. {
  66. CDialog::DoDataExchange(pDX);
  67. //{{AFX_DATA_MAP(CCommandLineTestDlg)
  68. DDX_Control(pDX, ID_EDT_RESPONSE, m_edtResponse);
  69. DDX_Control(pDX, ID_EDT_RECEIVED, m_edtReceived);
  70. DDX_Control(pDX, ID_LST_RECEIVED, m_lstReceived);
  71. //}}AFX_DATA_MAP
  72. }
  73. /////////////////////////////////////////////////////////////////////////////
  74. BEGIN_MESSAGE_MAP(CCommandLineTestDlg, CDialog)
  75. //{{AFX_MSG_MAP(CCommandLineTestDlg)
  76. ON_WM_SYSCOMMAND()
  77. ON_WM_PAINT()
  78. ON_WM_QUERYDRAGICON()
  79. ON_WM_SIZE()
  80. ON_BN_CLICKED(ID_BTN_CLEAR, OnBtnClear)
  81.   ON_NOTIFY(NM_COMMAND_SENT, ID_CTRL_COMMAND_LINE, OnCommandSent)
  82. ON_BN_CLICKED(ID_BTN_SEND, OnBtnSend)
  83. //}}AFX_MSG_MAP
  84. END_MESSAGE_MAP()
  85. /////////////////////////////////////////////////////////////////////////////
  86. // CCommandLineTestDlg message handlers
  87. /////////////////////////////////////////////////////////////////////////////
  88. BOOL CCommandLineTestDlg::OnInitDialog()
  89. {
  90. CDialog::OnInitDialog();
  91. // Add "About..." menu item to system menu.
  92. // IDM_ABOUTBOX must be in the system command range.
  93. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  94. ASSERT(IDM_ABOUTBOX < 0xF000);
  95. CMenu* pSysMenu = GetSystemMenu(FALSE);
  96. if (pSysMenu != NULL)
  97. {
  98. CString strAboutMenu;
  99. strAboutMenu.LoadString(IDS_ABOUTBOX);
  100. if (!strAboutMenu.IsEmpty())
  101. {
  102. pSysMenu->AppendMenu(MF_SEPARATOR);
  103. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  104. }
  105. }
  106. // Set the icon for this dialog.  The framework does this automatically
  107. //  when the application's main window is not a dialog
  108. SetIcon(m_hIcon, TRUE); // Set big icon
  109. SetIcon(m_hIcon, FALSE); // Set small icon
  110. // TODO: Add extra initialization here
  111.   CRect rcClient;
  112.   GetWindowRect(&rcClient);
  113.   rcClient.bottom = rcClient.top + 300;
  114.   rcClient.right = rcClient.left + 700;
  115.   MoveWindow(&rcClient);
  116.   //  create the line plot control.
  117.   UINT uiFlags = WS_CHILD | WS_VISIBLE | WS_TABSTOP;
  118.   m_CommandLine.Create(CRect(0, 0, 1, 1), uiFlags, this, ID_CTRL_COMMAND_LINE);
  119.   m_CommandLine.SetReceiver(this);
  120.   m_CommandLine.SetFocus();
  121. /*
  122.   //  fill the command line with some data....
  123.   for (UINT ii=0; ii<100; ii++)
  124.   {
  125.     CString szResponse;
  126.     szResponse.Format("%d", ii);
  127.     m_CommandLine.AddRecv(szResponse);
  128.   }
  129. */
  130.   //  size all controls correctly;
  131. SizeControls();
  132. return TRUE;  // return TRUE  unless you set the focus to a control
  133. }
  134. /////////////////////////////////////////////////////////////////////////////
  135. void CCommandLineTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
  136. {
  137. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  138. {
  139. CAboutDlg dlgAbout;
  140. dlgAbout.DoModal();
  141. }
  142. else
  143. {
  144. CDialog::OnSysCommand(nID, lParam);
  145. }
  146. }
  147. /////////////////////////////////////////////////////////////////////////////
  148. // If you add a minimize button to your dialog, you will need the code below
  149. //  to draw the icon.  For MFC applications using the document/view model,
  150. //  this is automatically done for you by the framework.
  151. void CCommandLineTestDlg::OnPaint()
  152. {
  153. if (IsIconic())
  154. {
  155. CPaintDC dc(this); // device context for painting
  156. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  157. // Center icon in client rectangle
  158. int cxIcon = GetSystemMetrics(SM_CXICON);
  159. int cyIcon = GetSystemMetrics(SM_CYICON);
  160. CRect rect;
  161. GetClientRect(&rect);
  162. int x = (rect.Width() - cxIcon + 1) / 2;
  163. int y = (rect.Height() - cyIcon + 1) / 2;
  164. // Draw the icon
  165. dc.DrawIcon(x, y, m_hIcon);
  166. }
  167. else
  168. {
  169. CDialog::OnPaint();
  170. }
  171. }
  172. /////////////////////////////////////////////////////////////////////////////
  173. // The system calls this to obtain the cursor to display while the user drags
  174. //  the minimized window.
  175. HCURSOR CCommandLineTestDlg::OnQueryDragIcon()
  176. {
  177. return (HCURSOR) m_hIcon;
  178. }
  179. /////////////////////////////////////////////////////////////////////////////
  180. void CCommandLineTestDlg::SizeControls()
  181. {
  182.   CRect rcClient;
  183.   GetClientRect(&rcClient);
  184.   rcClient.right += 300;
  185.   if (m_CommandLine.m_hWnd!=NULL)
  186.     m_CommandLine.MoveWindow(300, 0, rcClient.Width(), rcClient.Height());
  187.   if (m_lstReceived.m_hWnd!=NULL)
  188.   {
  189.     CRect rcArea;
  190.     m_lstReceived.GetWindowRect(&rcArea);
  191.     ScreenToClient(&rcArea);
  192.     rcArea.bottom = rcClient.bottom;
  193.     m_lstReceived.MoveWindow(rcArea.left, rcArea.top, rcArea.Width(), rcArea.Height());
  194.   }
  195. }
  196. /////////////////////////////////////////////////////////////////////////////
  197. void CCommandLineTestDlg::OnSize(UINT nType, int cx, int cy)
  198. {
  199. CDialog::OnSize(nType, cx, cy);
  200. SizeControls();
  201. }
  202. /////////////////////////////////////////////////////////////////////////////
  203. void CCommandLineTestDlg::OnCommandSent(NMHDR* pNMHDR, LRESULT* pResult)
  204. {
  205.   //  add this message to the notification list.
  206.   m_lstReceived.AddString(_T("NM_COMMAND_SENT"));
  207.   //  copy the last command to the edit box.
  208.   m_edtReceived.SetWindowText(m_CommandLine.GetLastCommand());
  209. }
  210. /////////////////////////////////////////////////////////////////////////////
  211. void CCommandLineTestDlg::OnBtnClear() 
  212. {
  213. m_lstReceived.ResetContent();
  214. }
  215. /////////////////////////////////////////////////////////////////////////////
  216. void CCommandLineTestDlg::OnBtnSend() 
  217. {
  218.   CString szResponse;
  219.   m_edtResponse.GetWindowText(szResponse);
  220.   m_CommandLine.AddRecv(szResponse);
  221. }
  222. /////////////////////////////////////////////////////////////////////////////