home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c031 / 11.ddi / MFC / SAMPLES / CTRLTEST / DERTEST.CP$ / dertest
Encoding:
Text File  |  1992-03-16  |  4.3 KB  |  143 lines

  1. // deredit.cpp : C++ derived Edit control example
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and Microsoft
  9. // QuickHelp documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12.  
  13. #include "ctrltest.h"
  14.  
  15. #include "paredit.h"
  16.  
  17. /////////////////////////////////////////////////////////////////////////////
  18.  
  19. class CDerEditDlg : public CModalDialog
  20. {
  21. protected:
  22.     CFont*  m_pFont;
  23.     // construct
  24.     CParsedEdit edit1, edit2, edit3, edit4;
  25.     CStatic static1, static2, static3, static4;
  26. public:
  27.     CDerEditDlg()
  28.         : CModalDialog(IDD_DERIVED_EDIT)
  29.         { }
  30.  
  31.     BOOL OnInitDialog();
  32.     void OnSetFont(CFont* pFont)
  33.             { m_pFont = pFont; }
  34.     void OnOK();
  35. };
  36.  
  37. BOOL CDerEditDlg::OnInitDialog()
  38.     // create children on InitDialog 
  39.     //  (not in CDerEditDlg constructor since the dialog has
  40.     //    no attached HWND in the constructor)
  41. {
  42.     // This is an example of the _incorrect_ way to create a dialog
  43.     // The following code show you what you should _not_ do:
  44.     //    1) do not use hard coded numbers for coordinates and sizes
  45.     //     (these will break when the font sizes changes and are
  46.     //     hard to edit and maintain).
  47.     //    2) do not put strings in code, they should be in resources.
  48.     //    3) as you can see below the programming steps required
  49.     //     to create controls, pass the correct creation parameters,
  50.     //     and set the appropriate font, is complicated and error prone.
  51.  
  52.     const int yStart = 8;
  53.     const int height = 30;
  54.  
  55.     CPoint whereLabel(10, yStart);
  56.     CSize sizeLabel(80, 24);
  57.  
  58.     CPoint whereEdit(90, yStart);
  59.     CSize sizeEdit(140, 24);
  60.  
  61.     static1.Create("Letters:", WS_VISIBLE | WS_CHILD | SS_LEFT,
  62.         CRect(whereLabel, sizeLabel), this, -1);
  63.     static1.SetFont(m_pFont);
  64.     whereLabel.y += height;
  65.     edit1.Create(WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_BORDER |
  66.         PES_LETTERS,
  67.         CRect(whereEdit, sizeEdit), this, IDC_EDIT1);
  68.     edit1.SetFont(m_pFont);
  69.     whereEdit.y += height;
  70.  
  71.     static2.Create("Numbers:", WS_VISIBLE | WS_CHILD | SS_LEFT,
  72.         CRect(whereLabel, sizeLabel), this, -1);
  73.     static2.SetFont(m_pFont);
  74.     whereLabel.y += height;
  75.     edit2.Create(WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_BORDER |
  76.         PES_NUMBERS,
  77.         CRect(whereEdit, sizeEdit), this, IDC_EDIT2);
  78.     edit2.SetFont(m_pFont);
  79.     whereEdit.y += height;
  80.  
  81.     static3.Create("Either:", WS_VISIBLE | WS_CHILD | SS_LEFT,
  82.         CRect(whereLabel, sizeLabel), this, -1);
  83.     static3.SetFont(m_pFont);
  84.     whereLabel.y += height;
  85.     edit3.Create(WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_BORDER |
  86.         PES_LETTERS | PES_NUMBERS,
  87.         CRect(whereEdit, sizeEdit), this, IDC_EDIT3);
  88.     edit3.SetFont(m_pFont);
  89.     whereEdit.y += height;
  90.  
  91.     static4.Create("Anything:", WS_VISIBLE | WS_CHILD | SS_LEFT,
  92.         CRect(whereLabel, sizeLabel), this, -1);
  93.     static4.SetFont(m_pFont);
  94.     whereLabel.y += height;
  95.     edit4.Create(WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_BORDER |
  96.         PES_ALL,
  97.         CRect(whereEdit, sizeEdit), this, IDC_EDIT4);
  98.     edit4.SetFont(m_pFont);
  99.     whereEdit.y += height;
  100.  
  101.     // change the dialog height so everything fits
  102.     int yBottom = whereEdit.y + height * 2; // extra space
  103.     CRect rect;
  104.     GetWindowRect(rect);
  105.     VERIFY(SetWindowPos(NULL, -1, -1, rect.Width(), yBottom,
  106.         SWP_NOMOVE|SWP_NOZORDER|SWP_NOREDRAW|SWP_NOACTIVATE));
  107.  
  108.     // set focus to first one
  109.     edit1.SetFocus();
  110.     return FALSE;   // focus set
  111. }
  112.  
  113. void CDerEditDlg::OnOK()
  114. {
  115. #ifdef _DEBUG
  116.     // dump results, normally you would do something with these
  117.     CString s;
  118.     edit1.GetWindowText(s);
  119.     TRACE("edit1 = '%s'\n", (const char*) s);
  120.     edit2.GetWindowText(s);
  121.     TRACE("edit2 = '%s'\n", (const char*) s);
  122.     edit3.GetWindowText(s);
  123.     TRACE("edit3 = '%s'\n", (const char*) s);
  124.     edit4.GetWindowText(s);
  125.     TRACE("edit4 = '%s'\n", (const char*) s);
  126. #endif
  127.  
  128.     EndDialog(IDOK);
  129. }
  130.  
  131. /////////////////////////////////////////////////////////////////////////////
  132. // Run the test
  133.  
  134. void CTestWindow::OnTestDerivedEdit()
  135. {
  136.     TRACE("running dialog with special derived CParsedEdit controls in it\n");
  137.     CDerEditDlg dlg;
  138.     dlg.DoModal();
  139. }
  140.  
  141.  
  142. /////////////////////////////////////////////////////////////////////////////
  143.