|
|
1.1 root 1: // muscroll.cpp : New control example - MicroScroller
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: #include "spin.h"
17:
18: /////////////////////////////////////////////////////////////////////////////
19: // Example of a dialog with special controls in it
20:
21: #define NUM_EDIT 4
22: #define IDC_EDIT_MIN IDC_EDIT1
23: #define IDC_BUTTON_MIN IDC_BUTTON1
24: // IDC_EDIT1->IDC_EDIT4 and IDC_BUTTON1->IDC_BUTTON4 must be contiguous
25:
26: class CSpinEditDlg : public CModalDialog
27: {
28: protected:
29: CParsedEdit edit[NUM_EDIT];
30: public:
31: CSpinEditDlg()
32: : CModalDialog(IDD_SPIN_EDIT)
33: { }
34:
35: BOOL OnInitDialog();
36: void OnOK();
37: };
38:
39: BOOL CSpinEditDlg::OnInitDialog()
40: {
41: int value = 1;
42: for (int i = 0; i < NUM_EDIT; i++)
43: {
44: UINT nID = IDC_EDIT_MIN + i;
45: edit[i].SubclassEdit(nID, this, PES_NUMBERS);
46: SetDlgItemInt(nID, value);
47: value++; // 1, 2, 3, 4
48:
49: // associate button with edit item
50: CSpinControl* pSpin = (CSpinControl*)GetDlgItem(IDC_BUTTON_MIN + i);
51: ASSERT(pSpin != NULL);
52: pSpin->SetAssociate(&edit[i]);
53: }
54: return TRUE;
55: }
56:
57: void CSpinEditDlg::OnOK()
58: {
59: int values[NUM_EDIT];
60: UINT nID;
61: BOOL bOk = TRUE;
62: for (int i = 0; bOk && i < NUM_EDIT; i++)
63: {
64: nID = IDC_EDIT_MIN + i;
65: values[i] = GetDlgItemInt(nID, &bOk);
66: }
67:
68: if (!bOk)
69: {
70: // report illegal value
71: MessageBox("illegal value\n");
72: CEdit& badEdit = *(CEdit*)GetDlgItem(nID);
73: badEdit.SetSel(0, -1);
74: badEdit.SetFocus();
75: return; // don't end dialog
76: }
77:
78: #ifdef _DEBUG
79: // dump results, normally you would do something with these
80: TRACE("Final values:\n");
81: for (i = 0; i < NUM_EDIT; i++)
82: TRACE("\t%d\n", values[i]);
83: #endif
84: EndDialog(IDOK);
85: }
86:
87: /////////////////////////////////////////////////////////////////////////////
88: // Run the test
89:
90: void CTestWindow::OnTestSpinEdit()
91: {
92: #ifdef _NTWIN
93: // Use of 16 bit DLLs from a 32 bit app is not currently supported
94: GetMenu()->EnableMenuItem(IDM_TEST_SPIN_EDIT, MF_DISABLED|MF_GRAYED);
95: MessageBox("Feature not supported on Windows NT");
96: #else
97: HINSTANCE hLibrary;
98: if ((hLibrary = LoadLibrary("MUSCROLL.DLL")) < HINSTANCE_ERROR)
99: {
100: MessageBox("Can not do this test without custom control library");
101:
102: // prevent it from happening again
103: GetMenu()->EnableMenuItem(IDM_TEST_SPIN_EDIT, MF_DISABLED|MF_GRAYED);
104: return;
105: }
106:
107: TRACE("running dialog with spin controls in it\n");
108: CSpinEditDlg dlg;
109: dlg.DoModal();
110:
111: FreeLibrary(hLibrary);
112: #endif
113: }
114:
115:
116: /////////////////////////////////////////////////////////////////////////////
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.