163 lines
4.5 KiB
C++
163 lines
4.5 KiB
C++
// WiaSimpleDocPg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "wiatest.h"
|
|
#include "WiaSimpleDocPg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CWiaSimpleDocPg property page
|
|
|
|
IMPLEMENT_DYNCREATE(CWiaSimpleDocPg, CPropertyPage)
|
|
|
|
CWiaSimpleDocPg::CWiaSimpleDocPg() : CPropertyPage(CWiaSimpleDocPg::IDD)
|
|
{
|
|
//{{AFX_DATA_INIT(CWiaSimpleDocPg)
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
CWiaSimpleDocPg::~CWiaSimpleDocPg()
|
|
{
|
|
}
|
|
|
|
void CWiaSimpleDocPg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CPropertyPage::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CWiaSimpleDocPg)
|
|
DDX_Control(pDX, IDC_NUMBEROF_PAGES_EDITBOX, m_lPages);
|
|
DDX_Control(pDX, IDC_NUMBEROF_PAGES_EDITBOX_TEXT, m_lPagesText);
|
|
DDX_Control(pDX, IDC_DOCUMENT_SOURCE_COMBOBOX, m_DocumentSourceComboBox);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CWiaSimpleDocPg, CPropertyPage)
|
|
//{{AFX_MSG_MAP(CWiaSimpleDocPg)
|
|
ON_CBN_SELCHANGE(IDC_DOCUMENT_SOURCE_COMBOBOX, OnSelchangeDocumentSourceCombobox)
|
|
ON_EN_UPDATE(IDC_NUMBEROF_PAGES_EDITBOX, OnUpdateNumberofPagesEditbox)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CWiaSimpleDocPg message handlers
|
|
|
|
BOOL CWiaSimpleDocPg::OnInitDialog()
|
|
{
|
|
CPropertyPage::OnInitDialog();
|
|
m_bFirstInit = TRUE;
|
|
CWiahelper WIA;
|
|
WIA.SetIWiaItem(m_pIRootItem);
|
|
HRESULT hr = S_OK;
|
|
|
|
// set current settings
|
|
LONG lDocumentHandlingSelect = 0;
|
|
hr = WIA.ReadPropertyLong(WIA_DPS_DOCUMENT_HANDLING_SELECT,&lDocumentHandlingSelect);
|
|
if(FAILED(hr)){
|
|
ErrorMessageBox(IDS_WIATESTERROR_READINGDOCHANDLINGSELECT,hr);
|
|
}
|
|
|
|
if(lDocumentHandlingSelect & FEEDER){
|
|
// default to feeder settings
|
|
m_DocumentSourceComboBox.SetCurSel(DOCUMENT_SOURCE_FEEDER);
|
|
} else {
|
|
// default to flatbed settings
|
|
m_DocumentSourceComboBox.SetCurSel(DOCUMENT_SOURCE_FLATBED);
|
|
}
|
|
|
|
LONG lPages = 0;
|
|
hr = WIA.ReadPropertyLong(WIA_DPS_PAGES,&lPages);
|
|
if(FAILED(hr)){
|
|
ErrorMessageBox(IDS_WIATESTERROR_READINGPAGES,hr);
|
|
}
|
|
|
|
TCHAR szPages[MAX_PATH];
|
|
memset(szPages,0,sizeof(szPages));
|
|
TSPRINTF(szPages,TEXT("%d"),lPages);
|
|
m_lPages.SetWindowText(szPages);
|
|
|
|
// adjust UI
|
|
OnSelchangeDocumentSourceCombobox();
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CWiaSimpleDocPg::OnSelchangeDocumentSourceCombobox()
|
|
{
|
|
if(m_bFirstInit){
|
|
m_bFirstInit = FALSE;
|
|
} else {
|
|
SetModified();
|
|
}
|
|
if (m_pIRootItem) {
|
|
INT iCurSel = DOCUMENT_SOURCE_FLATBED;
|
|
iCurSel = m_DocumentSourceComboBox.GetCurSel();
|
|
switch (iCurSel) {
|
|
case DOCUMENT_SOURCE_FLATBED:
|
|
m_lPagesText.EnableWindow(FALSE);
|
|
m_lPages.EnableWindow(FALSE);
|
|
break;
|
|
case DOCUMENT_SOURCE_FEEDER:
|
|
m_lPagesText.EnableWindow(TRUE);
|
|
m_lPages.EnableWindow(TRUE);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
BOOL CWiaSimpleDocPg::OnApply()
|
|
{
|
|
HRESULT hr = S_OK;
|
|
CWiahelper WIA;
|
|
WIA.SetIWiaItem(m_pIRootItem);
|
|
|
|
// set pages property
|
|
LONG lPages = 0;
|
|
lPages = (LONG)GetNumberOfPagesToAcquire();
|
|
hr = WIA.WritePropertyLong(WIA_DPS_PAGES,lPages);
|
|
if (FAILED(hr)) {
|
|
ErrorMessageBox(IDS_WIATESTERROR_WRITINGPAGES,hr);
|
|
}
|
|
|
|
// set Document Handling Select property
|
|
if(GetSelectedDocumentSource() == DOCUMENT_SOURCE_FLATBED){
|
|
hr = WIA.WritePropertyLong(WIA_DPS_DOCUMENT_HANDLING_SELECT,FLATBED);
|
|
} else {
|
|
hr = WIA.WritePropertyLong(WIA_DPS_DOCUMENT_HANDLING_SELECT,FEEDER);
|
|
}
|
|
|
|
if (FAILED(hr)) {
|
|
ErrorMessageBox(IDS_WIATESTERROR_WRITINGDOCHANDLINGSELECT,hr);
|
|
}
|
|
|
|
return CPropertyPage::OnApply();
|
|
}
|
|
|
|
int CWiaSimpleDocPg::GetSelectedDocumentSource()
|
|
{
|
|
return m_DocumentSourceComboBox.GetCurSel();
|
|
}
|
|
|
|
int CWiaSimpleDocPg::GetNumberOfPagesToAcquire()
|
|
{
|
|
int iPagesToAcquire = 1;
|
|
TCHAR szPages[MAX_PATH];
|
|
memset(szPages,0,sizeof(szPages));
|
|
UpdateData();
|
|
m_lPages.GetWindowText(szPages,(sizeof(szPages)/sizeof(TCHAR)));
|
|
TSSCANF(szPages,TEXT("%d"),&iPagesToAcquire);
|
|
return iPagesToAcquire;
|
|
}
|
|
|
|
void CWiaSimpleDocPg::OnUpdateNumberofPagesEditbox()
|
|
{
|
|
SetModified();
|
|
}
|