home *** CD-ROM | disk | FTP | other *** search
- // deredit.cpp : C++ derived Edit control example
- //
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
-
- #include "stdafx.h"
- #include "ctrltest.h"
-
- #include "paredit.h"
-
- /////////////////////////////////////////////////////////////////////////////
-
- class CDerEditDlg : public CDialog
- {
- protected:
- CFont* m_pFont;
- // construct
- CParsedEdit m_edit1, m_edit2, m_edit3, m_edit4;
- CStatic m_static1, m_static2, m_static3, m_static4;
- public:
- //{{AFX_DATA(CDerEditDlg)
- enum { IDD = IDD_DERIVED_EDIT };
- //}}AFX_DATA
- CDerEditDlg()
- : CDialog(CDerEditDlg::IDD)
- { }
-
- void OnSetFont(CFont* pFont)
- { m_pFont = pFont; }
-
- BOOL OnInitDialog();
- //{{AFX_MSG(CDerEditDlg)
- virtual void OnOK();
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
-
- BEGIN_MESSAGE_MAP(CDerEditDlg, CDialog)
- //{{AFX_MSG_MAP(CDerEditDlg)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- BOOL CDerEditDlg::OnInitDialog()
- // create children on InitDialog
- // (not in CDerEditDlg constructor since the dialog has
- // no attached HWND in the constructor)
- {
- // This is an example of the _incorrect_ way to create a dialog
- // The following code show you what you should _not_ do:
- // 1) do not use hard coded numbers for coordinates and sizes
- // (these will break when the font sizes changes and are
- // hard to edit and maintain).
- // 2) do not put strings in code, they should be in resources.
- // 3) as you can see below the programming steps required
- // to create controls, pass the correct creation parameters,
- // and set the appropriate font, is complicated and error prone.
- // 4) localization of the controls would require changes to the
- // sources for the captions, font, coordinates, and sizes.
-
- const int yStart = 8;
- const int height = 30;
-
- CPoint whereLabel(10, yStart);
- CSize sizeLabel(80, 24);
-
- CPoint whereEdit(90, yStart);
- CSize sizeEdit(140, 24);
-
- m_static1.Create(_T("Letters:"), WS_VISIBLE | WS_CHILD | SS_LEFT,
- CRect(whereLabel, sizeLabel), this, (UINT)-1);
- m_static1.SetFont(m_pFont);
- whereLabel.y += height;
- m_edit1.Create(WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_BORDER |
- PES_LETTERS,
- CRect(whereEdit, sizeEdit), this, IDC_EDIT1);
- m_edit1.SetFont(m_pFont);
- whereEdit.y += height;
-
- m_static2.Create(_T("Numbers:"), WS_VISIBLE | WS_CHILD | SS_LEFT,
- CRect(whereLabel, sizeLabel), this, (UINT)-1);
- m_static2.SetFont(m_pFont);
- whereLabel.y += height;
- m_edit2.Create(WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_BORDER |
- PES_NUMBERS,
- CRect(whereEdit, sizeEdit), this, IDC_EDIT2);
- m_edit2.SetFont(m_pFont);
- whereEdit.y += height;
-
- m_static3.Create(_T("Either:"), WS_VISIBLE | WS_CHILD | SS_LEFT,
- CRect(whereLabel, sizeLabel), this, (UINT)-1);
- m_static3.SetFont(m_pFont);
- whereLabel.y += height;
- m_edit3.Create(WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_BORDER |
- PES_LETTERS | PES_NUMBERS,
- CRect(whereEdit, sizeEdit), this, IDC_EDIT3);
- m_edit3.SetFont(m_pFont);
- whereEdit.y += height;
-
- m_static4.Create(_T("Anything:"), WS_VISIBLE | WS_CHILD | SS_LEFT,
- CRect(whereLabel, sizeLabel), this, (UINT)-1);
- m_static4.SetFont(m_pFont);
- whereLabel.y += height;
- m_edit4.Create(WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_BORDER |
- PES_ALL,
- CRect(whereEdit, sizeEdit), this, IDC_EDIT4);
- m_edit4.SetFont(m_pFont);
- whereEdit.y += height;
-
- // change the dialog height so everything fits
- int yBottom = whereEdit.y + height * 2; // extra space
- CRect rect;
- GetWindowRect(rect);
- VERIFY(SetWindowPos(NULL, -1, -1, rect.Width(), yBottom,
- SWP_NOMOVE|SWP_NOZORDER|SWP_NOREDRAW|SWP_NOACTIVATE));
-
- // set focus to first one
- m_edit1.SetFocus();
- return FALSE; // focus set
- }
-
- void CDerEditDlg::OnOK()
- {
- #ifdef _DEBUG
- // dump results, normally you would do something with these
- CString s;
- m_edit1.GetWindowText(s);
- TRACE(_T("edit1 = '%s'\n"), s);
- m_edit2.GetWindowText(s);
- TRACE(_T("edit2 = '%s'\n"), s);
- m_edit3.GetWindowText(s);
- TRACE(_T("edit3 = '%s'\n"), s);
- m_edit4.GetWindowText(s);
- TRACE(_T("edit4 = '%s'\n"), s);
- #endif
-
- EndDialog(IDOK);
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // Run the test
-
- void CTestWindow::OnTestDerivedEdit()
- {
- TRACE(_T("running dialog with special derived CParsedEdit controls in it\n"));
- CDerEditDlg dlg;
- dlg.DoModal();
- }
-
-
- /////////////////////////////////////////////////////////////////////////////
-