|
|
// ADFDlg.cpp : implementation file
//
#include "stdafx.h"
#include "msqscan.h"
#include "ADFDlg.h"
#include "uitables.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
extern WIA_DOCUMENT_HANDLING_TABLE_ENTRY g_WIA_DOCUMENT_HANDLING_STATUS_TABLE[]; extern WIA_DOCUMENT_HANDLING_TABLE_ENTRY g_WIA_DOCUMENT_HANDLING_CAPABILITES_TABLE[]; extern WIA_DOCUMENT_HANDLING_TABLE_ENTRY g_WIA_DOCUMENT_HANDLING_SELECT_TABLE[];
/////////////////////////////////////////////////////////////////////////////
// CADFDlg dialog
CADFDlg::CADFDlg(ADF_SETTINGS *pADFSettings, CWnd* pParent /*=NULL*/) : CDialog(CADFDlg::IDD, pParent) { //{{AFX_DATA_INIT(CADFDlg)
m_ADFStatusText = _T("No document feeder is attached.."); m_NumberOfPages = 1; m_pADFSettings = pADFSettings; m_MaxPagesAllowed = m_pADFSettings->lDocumentHandlingCapacity; m_DocumentHandlingSelectBackup = m_pADFSettings->lDocumentHandlingSelect; //}}AFX_DATA_INIT
if(m_MaxPagesAllowed <= 0){ m_MaxPagesAllowed = 50; // set to a large max value
} }
void CADFDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CADFDlg)
DDX_Control(pDX, IDC_ADF_MODE_COMBOBOX, m_ADFModeComboBox); DDX_Control(pDX, IDC_NUMBER_OF_PAGES_EDITBOX, m_ScanNumberOfPagesEditBox); DDX_Text(pDX, IDC_FEEDER_STATUS_TEXT, m_ADFStatusText); DDX_Text(pDX, IDC_NUMBER_OF_PAGES_EDITBOX, m_NumberOfPages); DDV_MinMaxUInt(pDX, m_NumberOfPages, 0, m_MaxPagesAllowed); DDX_Control(pDX, IDC_SCAN_ALL_PAGES_RADIOBUTTON, m_ScanAllPages); DDX_Control(pDX, IDC_SCAN_SPECIFIED_PAGES_RADIOBUTTON, m_ScanNumberOfPages); //}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CADFDlg, CDialog) //{{AFX_MSG_MAP(CADFDlg)
ON_EN_KILLFOCUS(IDC_NUMBER_OF_PAGES_EDITBOX, OnKillfocusNumberOfPagesEditbox) ON_BN_CLICKED(IDC_SCAN_ALL_PAGES_RADIOBUTTON, OnScanAllPagesRadiobutton) ON_BN_CLICKED(IDC_SCAN_SPECIFIED_PAGES_RADIOBUTTON, OnScanSpecifiedPagesRadiobutton) ON_CBN_SELCHANGE(IDC_ADF_MODE_COMBOBOX, OnSelchangeAdfModeCombobox) //}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CADFDlg message handlers
void CADFDlg::OnKillfocusNumberOfPagesEditbox() {
//
// write number of pages to member variable/forcing validation
//
UpdateData(TRUE); m_pADFSettings->lPages = m_NumberOfPages; }
BOOL CADFDlg::OnInitDialog() { CDialog::OnInitDialog();
//
// default to scanning only a single page
//
m_ScanNumberOfPages.SetCheck(1); OnScanSpecifiedPagesRadiobutton();
//
// Initialize Scanner status text
//
InitStatusText();
//
// Initialize Feeder Mode combo box, and handle
// special case, for FLATBED selection
//
InitFeederModeComboBox(); OnSelchangeAdfModeCombobox(); return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CADFDlg::OnScanAllPagesRadiobutton() { //
// disable pages edit box
//
m_NumberOfPages = 0; UpdateData(FALSE); m_ScanNumberOfPagesEditBox.EnableWindow(FALSE); }
void CADFDlg::OnScanSpecifiedPagesRadiobutton() { //
// enable pages edit box
//
m_ScanNumberOfPagesEditBox.EnableWindow(TRUE); }
VOID CADFDlg::InitStatusText() { for(ULONG index = 0;index < NUM_WIA_DOC_HANDLING_STATUS_ENTRIES;index++) { if((m_pADFSettings->lDocumentHandlingStatus & g_WIA_DOCUMENT_HANDLING_STATUS_TABLE[index].lFlagValue) == g_WIA_DOCUMENT_HANDLING_STATUS_TABLE[index].lFlagValue) {
//
// we found a match, so add it to the text
//
m_ADFStatusText = g_WIA_DOCUMENT_HANDLING_STATUS_TABLE[index].szFlagName; UpdateData(FALSE); } } }
VOID CADFDlg::InitFeederModeComboBox() { //
// check all three possible modes, FEEDER, FLATBED, and DUPLEX
//
ULONG NumModes = 3; for(ULONG index = 0;index < NumModes;index++) { if((m_pADFSettings->lDocumentHandlingCapabilites & g_WIA_DOCUMENT_HANDLING_CAPABILITES_TABLE[index].lFlagValue) == g_WIA_DOCUMENT_HANDLING_CAPABILITES_TABLE[index].lFlagValue) {
//
// we found a match, so add it to the combobox along with the flag value
//
INT InsertIndex = m_ADFModeComboBox.AddString(g_WIA_DOCUMENT_HANDLING_SELECT_TABLE[index].szFlagName); m_ADFModeComboBox.SetItemData(InsertIndex, g_WIA_DOCUMENT_HANDLING_SELECT_TABLE[index].lFlagValue);
//
// set the combobox to the current setting value using the Document Handling Select
//
if((m_pADFSettings->lDocumentHandlingSelect & g_WIA_DOCUMENT_HANDLING_SELECT_TABLE[index].lFlagValue) == g_WIA_DOCUMENT_HANDLING_SELECT_TABLE[index].lFlagValue) {
m_ADFModeComboBox.SetCurSel(InsertIndex); } } } }
INT CADFDlg::GetIDAndStringFromDocHandlingStatus(LONG lDocHandlingStatus, TCHAR *pszString) { INT index = 0; while(g_WIA_DOCUMENT_HANDLING_STATUS_TABLE[index].lFlagValue != lDocHandlingStatus && index < NUM_WIA_DOC_HANDLING_STATUS_ENTRIES) { index++; }
if(index > NUM_WIA_DOC_HANDLING_STATUS_ENTRIES) index = NUM_WIA_DOC_HANDLING_STATUS_ENTRIES;
lstrcpy(pszString, g_WIA_DOCUMENT_HANDLING_STATUS_TABLE[index].szFlagName);
return index; }
void CADFDlg::OnSelchangeAdfModeCombobox() { INT Index = m_ADFModeComboBox.GetCurSel(); LONG lFlagValue = 0; lFlagValue = (LONG)m_ADFModeComboBox.GetItemData(Index);
//
// check for FLATBED setting, and adjust UI
//
if((lFlagValue & FLATBED) == FLATBED) { m_ScanAllPages.EnableWindow(FALSE); m_ScanNumberOfPages.EnableWindow(FALSE);
if(m_ScanNumberOfPages.GetCheck() == 1) { m_ScanNumberOfPagesEditBox.EnableWindow(FALSE); }
} else { m_ScanAllPages.EnableWindow(TRUE); m_ScanNumberOfPages.EnableWindow(TRUE);
if(m_ScanNumberOfPages.GetCheck() == 1) { m_ScanNumberOfPagesEditBox.EnableWindow(TRUE); } } }
void CADFDlg::OnOK() { //
// get current Mode setting
//
LONG lModeflag = 0;
INT Index = m_ADFModeComboBox.GetCurSel(); lModeflag = (LONG)m_ADFModeComboBox.GetItemData(Index); //
// clear old settings
//
m_pADFSettings->lDocumentHandlingSelect = 0;
//
// set new settings
//
m_pADFSettings->lDocumentHandlingSelect = lModeflag;
//
// set page count
//
m_pADFSettings->lPages = m_NumberOfPages;
CDialog::OnOK(); }
void CADFDlg::OnCancel() { m_pADFSettings->lDocumentHandlingSelect = m_DocumentHandlingSelectBackup; m_pADFSettings->lPages = 1; CDialog::OnCancel(); }
|