|
|
1.1 root 1: // derpen.cpp : C++ derived HEdit/BEdit 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: // we need the MFC extensions for PenWindows
16: #include <afxpen.h>
17:
18: /////////////////////////////////////////////////////////////////////////////
19:
20: class CDerPenEditDlg : public CModalDialog
21: {
22: protected:
23: // 2 Handwriting edit items
24: CHEdit edit1, edit2;
25: // 2 Boxed Handwriting edit items
26: CBEdit edit3, edit4;
27: // static labels for them all
28: CStatic static1, static2, static3, static4;
29:
30: // font for the dialog
31: CFont* m_pFont;
32: public:
33: CDerPenEditDlg()
34: : CModalDialog(IDD_DERIVED_EDIT)
35: { }
36:
37: BOOL OnInitDialog();
38: void OnSetFont(CFont* pFont)
39: { m_pFont = pFont; }
40: void OnOK();
41: };
42:
43: /////////////////////////////////////////////////////////////////////////////
44: // pen helpers
45:
46: void SetAlc(CHEdit& rHEdit, ALC alcNew)
47: {
48: RC rc; // recognition context
49: VERIFY(rHEdit.GetRC(&rc));
50: rc.alc = alcNew;
51: VERIFY(rHEdit.SetRC(&rc));
52: }
53:
54: /////////////////////////////////////////////////////////////////////////////
55:
56: BOOL CDerPenEditDlg::OnInitDialog()
57: {
58: // This is an example of the _incorrect_ way to create a dialog
59: // see other comments in DERTEST.CPP
60: const int yStart = 8;
61: const int height = 36;
62:
63: CPoint whereLabel(10, yStart + 4);
64: CSize sizeLabel(80, 24);
65:
66: CPoint whereEdit(90, yStart);
67: CSize sizeEdit(140, 30);
68:
69: static1.Create("Letters:", WS_VISIBLE | WS_CHILD | SS_LEFT,
70: CRect(whereLabel, sizeLabel), this, -1);
71: static1.SetFont(m_pFont);
72: whereLabel.y += height;
73: edit1.Create(WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_BORDER,
74: CRect(whereEdit, sizeEdit), this, IDC_EDIT1);
75: edit1.SetFont(m_pFont);
76: SetAlc(edit1, ALC_ALPHA);
77: whereEdit.y += height;
78:
79: static2.Create("Numbers:", WS_VISIBLE | WS_CHILD | SS_LEFT,
80: CRect(whereLabel, sizeLabel), this, -1);
81: static2.SetFont(m_pFont);
82: whereLabel.y += height;
83: edit2.Create(WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_BORDER,
84: CRect(whereEdit, sizeEdit), this, IDC_EDIT2);
85: edit2.SetFont(m_pFont);
86: SetAlc(edit2, ALC_NUMERIC);
87: whereEdit.y += height;
88:
89: // followed by 2 boxed edit items
90: static3.Create("Letters:", WS_VISIBLE | WS_CHILD | SS_LEFT,
91: CRect(whereLabel, sizeLabel), this, -1);
92: static3.SetFont(m_pFont);
93: whereLabel.y += height;
94: edit3.Create(WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_BORDER,
95: CRect(whereEdit, sizeEdit), this, IDC_EDIT3);
96: edit3.SetFont(m_pFont);
97: SetAlc(edit3, ALC_ALPHA);
98: whereEdit.y += height;
99:
100: static4.Create("Numbers:", WS_VISIBLE | WS_CHILD | SS_LEFT,
101: CRect(whereLabel, sizeLabel), this, -1);
102: whereLabel.y += height;
103: static4.SetFont(m_pFont);
104: edit4.Create(WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_BORDER,
105: CRect(whereEdit, sizeEdit), this, IDC_EDIT4);
106: edit4.SetFont(m_pFont);
107: SetAlc(edit4, ALC_NUMERIC);
108: whereEdit.y += height;
109:
110: // change the dialog height so everything fits
111: int yBottom = whereEdit.y + height * 2; // extra space
112: CRect rect;
113: GetWindowRect(rect);
114: VERIFY(SetWindowPos(NULL, -1, -1, rect.Width(), yBottom,
115: SWP_NOMOVE|SWP_NOZORDER|SWP_NOREDRAW|SWP_NOACTIVATE));
116:
117: // set focus to first one
118: edit1.SetFocus();
119: return FALSE; // focus set
120: }
121:
122: void CDerPenEditDlg::OnOK()
123: {
124: #ifdef _DEBUG
125: // dump results, normally you would do something with these
126: CString s;
127: edit1.GetWindowText(s);
128: TRACE("edit1 = '%s'\n", (const char*) s);
129: edit2.GetWindowText(s);
130: TRACE("edit2 = '%s'\n", (const char*) s);
131: edit3.GetWindowText(s);
132: TRACE("edit3 = '%s'\n", (const char*) s);
133: edit4.GetWindowText(s);
134: TRACE("edit4 = '%s'\n", (const char*) s);
135: #endif
136:
137: EndDialog(IDOK);
138: }
139:
140: /////////////////////////////////////////////////////////////////////////////
141: // Run the test
142:
143: void CTestWindow::OnTestPenEditFromCode()
144: {
145: TRACE("running dialog containing CBEdit objects\n");
146: CDerPenEditDlg dlg;
147: dlg.DoModal();
148: }
149:
150:
151: /////////////////////////////////////////////////////////////////////////////
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.