Annotation of mstools/mfc/samples/ctrltest/dertest.cpp, revision 1.1.1.1

1.1       root        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: /////////////////////////////////////////////////////////////////////////////

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.