Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

162 lines
4.6 KiB

// 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)));
int iErrorCode = TSSCANF(szPages,TEXT("%d"),&iPagesToAcquire);
return iPagesToAcquire;
}
void CWiaSimpleDocPg::OnUpdateNumberofPagesEditbox()
{
SetModified();
}