// Options.cpp : implementation file // #include "stdafx.h" #include "TwnConfig.h" #include "Options.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // COptions dialog COptions::COptions(HTWAINSESSION hSession, CString csFileName, L_INT nBPP, L_INT nBuffIter, L_BOOL bUseThreadMode, L_BOOL bCheckAllBPP, CWnd * pParent /*= NULL*/) : CDialog(COptions::IDD, pParent) { //{{AFX_DATA_INIT(COptions) m_csFileName = csFileName; m_nBuffIter = nBuffIter; m_bUseAllBPP = bCheckAllBPP; m_bUseThreadMode = bUseThreadMode; //}}AFX_DATA_INIT m_hSession = hSession; m_csDatFileNum = _T(""); m_csDatFile = _T(""); m_nBPP = nBPP; } void COptions::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(COptions) DDX_Control(pDX, IDC_CMB_BPP, m_cmbBPP); DDX_Control(pDX, IDC_EDIT_BUFFER_ITER, m_edtBufferIter); DDX_Control(pDX, IDC_CHK_USE_ALL_DEFAULT_BPP, m_chkUseAllBPP); DDX_Control(pDX, IDOK, m_btnOK); DDX_Control(pDX, IDC_EDIT_FILE_NAME, m_edtFileName); DDX_Text(pDX, IDC_EDIT_FILE_NAME, m_csFileName); DDX_Text(pDX, IDC_EDIT_BUFFER_ITER, m_nBuffIter); DDX_Check(pDX, IDC_CHK_USE_ALL_DEFAULT_BPP, m_bUseAllBPP); DDX_Check(pDX, IDC_CHK_USE_THREAD_MODE, m_bUseThreadMode); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(COptions, CDialog) //{{AFX_MSG_MAP(COptions) ON_BN_CLICKED(IDC_BTN_BROWSE, OnBtnBrowse) ON_EN_CHANGE(IDC_EDIT_FILE_NAME, OnChangeEditFileName) ON_BN_CLICKED(IDC_BTN_SELECT_SOURCE, OnBtnSelectSource) ON_BN_CLICKED(IDC_CHK_USE_ALL_DEFAULT_BPP, OnChkUseAllDefaultBPP) ON_EN_CHANGE(IDC_EDIT_BUFFER_ITER, OnChangeEditBufferIter) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // COptions message handlers void COptions::OnBtnBrowse() { CFileDialog FileDlg(FALSE, _T("LOG"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Log Files (*.log)|*.log|")); if (FileDlg.DoModal() == IDOK) { m_edtFileName.SetWindowText(FileDlg.GetPathName()); SetFileNames(FileDlg.GetPathName()); } } L_BOOL COptions::SetFileNames(CString csLogFile) { TCHAR szDrive[_MAX_DRIVE]; TCHAR szDir[_MAX_DIR]; TCHAR szTitle[_MAX_FNAME]; memset(szDrive, 0, sizeof(szDrive)); memset(szDir, 0, sizeof(szDir)); memset(szTitle, 0, sizeof(szTitle)); _tsplitpath(csLogFile, szDrive, szDir, szTitle, NULL); // Set Working Path... LPTSTR szBuffer = m_csFilePath.GetBuffer(MAX_PATH); _tmakepath(szBuffer, szDrive, szDir, NULL, NULL); m_csFilePath.ReleaseBuffer(); if (DEMOACCESS (m_csFilePath, 0) == -1) return FALSE; // Set DAT File Name... m_csDatFile.Empty(); szBuffer = m_csDatFile.GetBuffer(MAX_PATH); _tmakepath(szBuffer, szDrive, szDir, szTitle, _T("DAT")); m_csDatFile.ReleaseBuffer(); // Set Dat Count File Name... m_csDatFileNum.Empty(); szBuffer = m_csDatFileNum.GetBuffer(MAX_PATH); _tmakepath(szBuffer, szDrive, szDir, szTitle, _T("DATC")); m_csDatFileNum.ReleaseBuffer(); return TRUE; } void COptions::CheckOkButton() { CString csFName, csBufferIter; m_edtFileName.GetWindowText(csFName); m_edtBufferIter.GetWindowText(csBufferIter); m_btnOK.EnableWindow(!csFName.IsEmpty() && !csBufferIter.IsEmpty()); } void COptions::OnChangeEditFileName() { CheckOkButton(); } void COptions::OnOK() { CString csFName; m_edtFileName.GetWindowText(csFName); if (!SetFileNames(csFName)) { AfxMessageBox(_T("Invalid File Path, please re-enter a valid path")); return; } UpdateData(TRUE); if (m_nBuffIter <= 0 || m_nBuffIter > 10) { AfxMessageBox(_T("Please, enter valid value in the Buffer Iteration box!!!\nThis value is in range 1..10\n")); return; } m_nBPP = m_cmbBPP.GetItemData(m_cmbBPP.GetCurSel()); CDialog::OnOK(); } BOOL COptions::OnInitDialog() { CDialog::OnInitDialog(); OnChangeEditFileName(); OnChkUseAllDefaultBPP(); CTwainConfigApp * pTheApp = (CTwainConfigApp *)AfxGetApp(); if (pTheApp->GetScannerBPP()) FillBPP(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void COptions::OnBtnSelectSource() { L_INT nRet = L_TwainSelectSource(m_hSession, NULL); if (nRet != SUCCESS && nRet != ERROR_TWAIN_CANCELED) { AfxMessageBox(_T("Error during select Twain source...")); return; } CTwainConfigApp * pTheApp = (CTwainConfigApp *)AfxGetApp(); if (pTheApp->GetScannerBPP()) FillBPP(); } void COptions::OnChkUseAllDefaultBPP() { m_cmbBPP.EnableWindow(m_chkUseAllBPP.GetCheck() != TRUE); } void COptions::OnChangeEditBufferIter() { CheckOkButton(); } void COptions::FillBPP() { CString csText; CTwainConfigApp * pTheApp = (CTwainConfigApp *)AfxGetApp(); m_cmbBPP.ResetContent(); for(int i=0; im_nAllBPPCount; i++) { csText.Format(_T("%d"), pTheApp->m_pnBPP[i]); m_cmbBPP.AddString(csText); csText.Empty(); m_cmbBPP.SetItemData(i, pTheApp->m_pnBPP[i]); } int nCurSel = 0; for(i=0; im_nAllBPPCount; i++) { if (pTheApp->m_pnBPP[i] == m_nBPP) nCurSel = i; } m_cmbBPP.SetCurSel(nCurSel); }