// ModOpts.cpp : implementation file // #include "stdafx.h" #include "ocrutil.h" #include "ModOpts.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CModuleOptions dialog CModuleOptions::CModuleOptions(CWnd* pParent /*=NULL*/) : CDialog(CModuleOptions::IDD, pParent) { //{{AFX_DATA_INIT(CModuleOptions) m_bHNRSpaceInc = FALSE; m_nHNRSpace = 0; m_nHNRWidth = 0; m_nHNRHeight = 0; m_bOMRFillZone = FALSE; m_bMORFax = FALSE; //}}AFX_DATA_INIT } void CModuleOptions::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CModuleOptions) DDX_Control(pDX, IDC_CMB_ACCURACY, m_cmbAccuracy); DDX_Control(pDX, IDOK, m_btnOK); DDX_Control(pDX, IDC_CHK_MOR_FAX, m_chkMORFax); DDX_Control(pDX, IDC_CMB_HNR_STYLE, m_cmbHNRStyle); DDX_Control(pDX, IDC_CHK_OMR_FILL_ZONES, m_chkOMRFillZone); DDX_Control(pDX, IDC_CMB_OMR_FRAME, m_cmbOMRFrame); DDX_Control(pDX, IDC_CMB_OMR_SENSE, m_cmbOMRSense); DDX_Control(pDX, IDC_EDIT_HNR_CHAR_HEIGHT, m_edtHNRHeight); DDX_Control(pDX, IDC_EDIT_HNR_CHAR_WIDTH, m_edtHNRWidth); DDX_Control(pDX, IDC_EDIT_HNR_CHAR_SPACE, m_edtHNRSpace); DDX_Control(pDX, IDC_CHK_HNR_SPACE, m_chkHNRSpaceInc); DDX_Check(pDX, IDC_CHK_HNR_SPACE, m_bHNRSpaceInc); DDX_Text(pDX, IDC_EDIT_HNR_CHAR_SPACE, m_nHNRSpace); DDX_Text(pDX, IDC_EDIT_HNR_CHAR_WIDTH, m_nHNRWidth); DDX_Text(pDX, IDC_EDIT_HNR_CHAR_HEIGHT, m_nHNRHeight); DDX_Check(pDX, IDC_CHK_OMR_FILL_ZONES, m_bOMRFillZone); DDX_Check(pDX, IDC_CHK_MOR_FAX, m_bMORFax); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CModuleOptions, CDialog) //{{AFX_MSG_MAP(CModuleOptions) ON_BN_CLICKED(IDC_RADIO_RECOG_HAND_PRINT, OnRadioRecogHandPrint) ON_BN_CLICKED(IDC_RADIO_RECOG_MOR, OnRadioRecogMOR) ON_BN_CLICKED(IDC_RADIO_RECOG_OMR, OnRadioRecogOMR) ON_EN_CHANGE(IDC_EDIT_HNR_CHAR_HEIGHT, OnChangeEditHnrCharHeight) ON_EN_CHANGE(IDC_EDIT_HNR_CHAR_WIDTH, OnChangeEditHnrCharWidth) ON_EN_CHANGE(IDC_EDIT_HNR_CHAR_SPACE, OnChangeEditHnrCharSpace) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CModuleOptions message handlers BOOL CModuleOptions::OnInitDialog() { CDialog::OnInitDialog(); m_cmbHNRStyle.AddString(TEXT("European Style")); m_cmbHNRStyle.AddString(TEXT("North-American Style")); m_cmbHNRStyle.SetItemData(0, HAND_STYLE_EURO); m_cmbHNRStyle.SetItemData(1, HAND_STYLE_US); m_cmbHNRStyle.SetCurSel(0); m_cmbOMRFrame.AddString(TEXT("Automatic Frame")); m_cmbOMRFrame.AddString(TEXT("No Frame")); m_cmbOMRFrame.AddString(TEXT("Use Frame")); m_cmbOMRFrame.SetItemData(0, OMR_FRAME_AUTO); m_cmbOMRFrame.SetItemData(1, OMR_FRAME_NO); m_cmbOMRFrame.SetItemData(2, OMR_FRAME_YES); m_cmbOMRFrame.SetCurSel(0); m_cmbOMRSense.AddString(TEXT("Highest mark")); m_cmbOMRSense.AddString(TEXT("Less mark")); m_cmbOMRSense.AddString(TEXT("Lower mark")); m_cmbOMRSense.AddString(TEXT("Lowest mark")); m_cmbOMRSense.SetItemData(0, OMR_SENSE_NORMAL); m_cmbOMRSense.SetItemData(1, OMR_SENSE_LOW); m_cmbOMRSense.SetItemData(2, OMR_SENSE_LOWER); m_cmbOMRSense.SetItemData(3, OMR_SENSE_LOWEST); m_cmbOMRSense.SetCurSel(0); m_cmbAccuracy.AddString(TEXT("Most accurate processing")); m_cmbAccuracy.AddString(TEXT("Mid-level accuracy")); m_cmbAccuracy.AddString(TEXT("Fast processing")); m_cmbAccuracy.SetItemData(0, RECGMD_ACCURATE); m_cmbAccuracy.SetItemData(1, RECGMD_BALANCED); m_cmbAccuracy.SetItemData(2, RECGMD_FAST); m_cmbAccuracy.SetCurSel(0); m_edtHNRHeight.SetWindowText(TEXT("0")); m_edtHNRWidth.SetWindowText(TEXT("0")); m_edtHNRSpace.SetWindowText(TEXT("0")); CheckDlgButton(IDC_RADIO_RECOG_OMR, TRUE); CheckDlgButton(IDC_RADIO_RECOG_HAND_PRINT, FALSE); CheckDlgButton(IDC_RADIO_RECOG_MOR, FALSE); OnRadioRecogOMR(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CModuleOptions::OnRadioRecogHandPrint() { m_cmbHNRStyle.EnableWindow(TRUE); m_edtHNRHeight.EnableWindow(TRUE); m_edtHNRWidth.EnableWindow(TRUE); m_edtHNRSpace.EnableWindow(TRUE); m_chkHNRSpaceInc.EnableWindow(TRUE); CheckOKButton(); m_chkOMRFillZone.EnableWindow(FALSE); m_cmbOMRFrame.EnableWindow(FALSE); m_cmbOMRSense.EnableWindow(FALSE); m_chkMORFax.EnableWindow(FALSE); } void CModuleOptions::OnRadioRecogMOR() { m_chkMORFax.EnableWindow(TRUE); m_chkOMRFillZone.EnableWindow(FALSE); m_cmbOMRFrame.EnableWindow(FALSE); m_cmbOMRSense.EnableWindow(FALSE); m_cmbHNRStyle.EnableWindow(FALSE); m_edtHNRHeight.EnableWindow(FALSE); m_edtHNRWidth.EnableWindow(FALSE); m_edtHNRSpace.EnableWindow(FALSE); m_chkHNRSpaceInc.EnableWindow(FALSE); m_btnOK.EnableWindow(TRUE); } void CModuleOptions::OnRadioRecogOMR() { m_chkOMRFillZone.EnableWindow(TRUE); m_cmbOMRFrame.EnableWindow(TRUE); m_cmbOMRSense.EnableWindow(TRUE); m_chkMORFax.EnableWindow(FALSE); m_cmbHNRStyle.EnableWindow(FALSE); m_edtHNRHeight.EnableWindow(FALSE); m_edtHNRWidth.EnableWindow(FALSE); m_edtHNRSpace.EnableWindow(FALSE); m_chkHNRSpaceInc.EnableWindow(FALSE); m_btnOK.EnableWindow(TRUE); } void CModuleOptions::OnChangeEditHnrCharHeight() { CheckOKButton(); } void CModuleOptions::OnChangeEditHnrCharWidth() { CheckOKButton(); } void CModuleOptions::OnChangeEditHnrCharSpace() { CheckOKButton(); } void CModuleOptions::CheckOKButton() { UpdateData(); CString csWidth, csHeight, csSpace; m_edtHNRHeight.GetWindowText(csHeight); m_edtHNRWidth.GetWindowText(csWidth); m_edtHNRSpace.GetWindowText(csSpace); if (!m_bHNRSpaceInc) csSpace = " "; m_btnOK.EnableWindow(!csWidth.IsEmpty() && !csHeight.IsEmpty() && !csSpace.IsEmpty()); } void CModuleOptions::OnOK() { m_nHNRStyle = m_cmbHNRStyle.GetItemData(m_cmbHNRStyle.GetCurSel()); m_nOMRFrame = m_cmbOMRFrame.GetItemData(m_cmbOMRFrame.GetCurSel()); m_nOMRSense = m_cmbOMRSense.GetItemData(m_cmbOMRSense.GetCurSel()); m_nAccuracy = m_cmbAccuracy.GetItemData(m_cmbAccuracy.GetCurSel()); if (IsDlgButtonChecked(IDC_RADIO_RECOG_OMR)) m_nModule = RECOG_MODULE_OMR; if (IsDlgButtonChecked(IDC_RADIO_RECOG_HAND_PRINT)) m_nModule = RECOG_MODULE_HNR; if (IsDlgButtonChecked(IDC_RADIO_RECOG_MOR)) m_nModule = RECOG_MODULE_MOR; CDialog::OnOK(); }