|
|
1.1 ! root 1: // featpen.cpp : pen HEdit features ! 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: // we also use the MFC common dialogs for color picker ! 18: #include <afxdlgs.h> ! 19: ! 20: ///////////////////////////////////////////////////////////////////////////// ! 21: ! 22: class CPenFeatureDlg : public CModalDialog ! 23: { ! 24: public: ! 25: CPenFeatureDlg() ! 26: : CModalDialog(IDD_PENEDIT_FEATURES) ! 27: { } ! 28: ! 29: // just 1 HEdit to play with ! 30: CHEdit& Edit1() ! 31: { return *(CHEdit*)GetDlgItem(IDC_EDIT1); } ! 32: ! 33: // Implementation ! 34: protected: ! 35: BOOL OnInitDialog(); ! 36: void OnOK(); ! 37: void OnConfigure(); ! 38: DECLARE_MESSAGE_MAP(); ! 39: }; ! 40: ! 41: BEGIN_MESSAGE_MAP(CPenFeatureDlg, CModalDialog) ! 42: ON_COMMAND(IDC_CONFIGURE, OnConfigure) ! 43: END_MESSAGE_MAP() ! 44: ! 45: ///////////////////////////////////////////////////////////////////////////// ! 46: ! 47: BOOL CPenFeatureDlg::OnInitDialog() ! 48: { ! 49: // nothing special to do ! 50: return TRUE; ! 51: } ! 52: ! 53: void CPenFeatureDlg::OnOK() ! 54: { ! 55: #ifdef _DEBUG ! 56: // dump results, normally you would do something with these ! 57: CString s; ! 58: Edit1().GetWindowText(s); ! 59: TRACE("edit1 = '%s'\n", (const char*) s); ! 60: #endif ! 61: ! 62: EndDialog(IDOK); ! 63: } ! 64: ! 65: ///////////////////////////////////////////////////////////////////////////// ! 66: // Run the test ! 67: ! 68: void CTestWindow::OnTestPenEditFeatures() ! 69: { ! 70: TRACE("running HEdit feature test dialog\n"); ! 71: CPenFeatureDlg dlg; ! 72: dlg.DoModal(); ! 73: } ! 74: ! 75: ! 76: ///////////////////////////////////////////////////////////////////////////// ! 77: // Configure the HEdit edit item ! 78: // (note: local changes only) ! 79: ! 80: // Dialog used for the configure option ! 81: class CConfigureHEditDlg : public CModalDialog ! 82: { ! 83: protected: ! 84: CHEdit& m_rHEdit; // reference to Edit item to configure ! 85: COLORREF m_inkColor; // for color picker ! 86: ! 87: public: ! 88: CConfigureHEditDlg(CHEdit& rHEdit, CWnd* pParent = NULL) ! 89: : CModalDialog(IDD_PENEDIT_CONFIGURE, pParent), ! 90: m_rHEdit(rHEdit) ! 91: { } ! 92: ! 93: // Implementation ! 94: protected: ! 95: BOOL OnInitDialog(); ! 96: void OnOK(); ! 97: void OnChooseInkColor(); ! 98: DECLARE_MESSAGE_MAP(); ! 99: }; ! 100: ! 101: BEGIN_MESSAGE_MAP(CConfigureHEditDlg, CModalDialog) ! 102: ON_COMMAND(IDC_BUTTON2, OnChooseInkColor) ! 103: END_MESSAGE_MAP() ! 104: ! 105: BOOL CConfigureHEditDlg::OnInitDialog() ! 106: { ! 107: // fill in initial values ! 108: RC rcInfo; ! 109: VERIFY(m_rHEdit.GetRC(&rcInfo)); // get current settings ! 110: ! 111: // set the ALC bits (max of 32 of them, 1 checkbox each) ! 112: TRACE("initial ALC = 0x%lx\n", rcInfo.alc); ! 113: for (int i = 0; i < 32; i++) ! 114: { ! 115: if (rcInfo.alc & (1L<<i)) ! 116: CheckDlgButton(IDC_ALC_FIRST+i, TRUE); ! 117: // check control if there is one ! 118: } ! 119: ! 120: // set LeftHanded ! 121: if (rcInfo.wRcPreferences & RCP_LEFTHAND) ! 122: CheckDlgButton(IDC_BUTTON1, TRUE); ! 123: ! 124: // set ink info ! 125: SetDlgItemInt(IDC_EDIT1, rcInfo.nInkWidth); ! 126: m_inkColor = rcInfo.rgbInk; ! 127: return TRUE; ! 128: } ! 129: ! 130: void CConfigureHEditDlg::OnOK() ! 131: { ! 132: // get info from dialog, update fields of RC as appropriate ! 133: RC rcInfo; ! 134: VERIFY(m_rHEdit.GetRC(&rcInfo)); // get current settings ! 135: ! 136: for (int i = 0; i < 32; i++) ! 137: { ! 138: CButton* pButton = (CButton*)GetDlgItem(IDC_ALC_FIRST + i); ! 139: if (pButton != NULL) ! 140: { ! 141: // set bit depending on checkbox content ! 142: if (pButton->GetCheck()) ! 143: rcInfo.alc |= (1L << i); ! 144: else ! 145: rcInfo.alc &= ~(1L << i); ! 146: } ! 147: } ! 148: TRACE("final ALC = 0x%lx\n", rcInfo.alc); ! 149: ! 150: if (IsDlgButtonChecked(IDC_BUTTON1)) ! 151: rcInfo.wRcPreferences |= RCP_LEFTHAND; ! 152: else ! 153: rcInfo.wRcPreferences &= ~RCP_LEFTHAND; ! 154: ! 155: BOOL bOk; ! 156: rcInfo.nInkWidth = GetDlgItemInt(IDC_EDIT1, &bOk); ! 157: if (!bOk || rcInfo.nInkWidth < -1 || rcInfo.nInkWidth > 15) ! 158: { ! 159: MessageBox("Illegal Ink Width (-1 .. 15 permitted)"); ! 160: CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1); ! 161: pEdit->SetSel(0, -1); ! 162: pEdit->SetFocus(); ! 163: return; ! 164: } ! 165: rcInfo.rgbInk = m_inkColor; ! 166: ! 167: // set the final values ! 168: VERIFY(m_rHEdit.SetRC(&rcInfo)); ! 169: EndDialog(IDOK); ! 170: } ! 171: ! 172: void CConfigureHEditDlg::OnChooseInkColor() ! 173: { ! 174: DWORD dwFlags = CC_PREVENTFULLOPEN; ! 175: COLORREF crPrompt = (m_inkColor != RC_LDEFAULT) ? m_inkColor : 0; ! 176: // default to 0 (black) for default color ! 177: ! 178: CColorDialog dlg(CC_PREVENTFULLOPEN, crPrompt, this); ! 179: if (dlg.DoModal() == IDOK) ! 180: m_inkColor = dlg.GetColor(); ! 181: } ! 182: ! 183: void CPenFeatureDlg::OnConfigure() ! 184: { ! 185: CConfigureHEditDlg dlg(Edit1(), this); ! 186: dlg.DoModal(); ! 187: } ! 188: ! 189: /////////////////////////////////////////////////////////////////////////////
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.