twain2/TwainUIDlg.cpp

884 lines
50 KiB
C++
Raw Normal View History

<EFBFBD><EFBFBD>// TwainUIDlg.cpp: <EFBFBD>[<EFBFBD>s<EFBFBD>e<EFBFBD>N
//
#include "stdafx.h"
#include "TwainUIDlg.h"
#include "afxdialogex.h"
#include "Resource.h"
#include "scn_config.h"
#include "PublicFunc.h"
#include "filetools.h"
//extern CUI_INI* m_pUI_INI;
// TwainUIDlg <EFBFBD>[݋Fh
IMPLEMENT_DYNAMIC(TwainUIDlg, CDialog)
TwainUIDlg::TwainUIDlg(MFC_UI* pUI, CWnd* pParent /*=nullptr*/)
: CDialog(IDD_DIALOG_TWAINUI, pParent)
{
ui = pUI;
//m_serialNum=ui->m_pDS->GetSerialNum();
//m_FwVersion=ui->m_pDS->GetFWVerison();
basicSetting.m_pBrightWin = &brightSetting;
basicSetting.m_pFeedWin = &feederPaper;
basicSetting.m_pImagePrcWin = &imageProcess;
}
TwainUIDlg::~TwainUIDlg()
{
}
void TwainUIDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TAB, m_tabCtrl);
}
BEGIN_MESSAGE_MAP(TwainUIDlg, CDialog)
//ON_BN_CLICKED(IDOK, &TwainUIDlg::OnBnClickedOk)
ON_BN_CLICKED(IDCANCEL, &TwainUIDlg::OnBnClickedCancel)
ON_BN_CLICKED(IDC_BTNDEFAULT, &TwainUIDlg::OnBnClickedDefault)
ON_BN_CLICKED(IDC_BTNHELP, &TwainUIDlg::OnBnClickedHelp)
ON_BN_CLICKED(IDC_BTNSAVECONFIG, &TwainUIDlg::OnBnClickedSaveItem)
ON_BN_CLICKED(IDC_BTNDELETCONFIG, &TwainUIDlg::OnBnClickedDeletItem)
ON_BN_CLICKED(IDC_BTNRECOVERYCONFIG, &TwainUIDlg::OnBnClickedRecovery)
ON_BN_CLICKED(IDC_BTNBACKUPCONFIG, &TwainUIDlg::OnBnClickedBackUp)
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, &TwainUIDlg::OnSelchangeTab)
ON_BN_CLICKED(IDC_CONFIRM, &TwainUIDlg::OnBnClickedConfirm)
ON_LBN_SELCHANGE(IDC_LSTCONFIG, &TwainUIDlg::OnLbnSelchangeLstconfig)
END_MESSAGE_MAP()
// TwainUIDlg <EFBFBD>mo`Yt z<EFBFBD>^
void TwainUIDlg::OnBnClickedConfirm()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
CString str_caption;
GetDlgItemText(IDC_CONFIRM, str_caption);
CONFIGPARAMS configItem = { 0 };
UpDateScanParam(&configItem);
TCHAR szIniFile[MAX_PATH] = { 0 };
SHGetSpecialFolderPath(NULL, szIniFile, CSIDL_LOCAL_APPDATA, TRUE);
_tcscat(szIniFile, HUAGAO_SCAN);
_tcscat(szIniFile, TWAIN_INIPATH);
_tcscat(szIniFile, TEXT("\\"));
_tcscat(szIniFile, TWAIN_JSON_NAME);
JsonConfig js;
vector<CONFIGPARAMS> vc;
vc.push_back(configItem);
std::string savepath(szIniFile);
js.WriteJsonArrayToFile(vc, savepath);
if (str_caption.Compare(_T("kb<6B>c")) == 0)//<EFBFBD>Q<EFBFBD>[:Nkb<EFBFBD>c<EFBFBD>e
{
ui->Scan();
}
else
{
ui->m_pDS->DoCloseDSOkEvent();
}
}
//<EFBFBD>S<EFBFBD>m c<EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>N
void TwainUIDlg::OnBnClickedCancel()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
ui->m_pDS->DoCloseDSRequestEvent();
}
//؞<EFBFBD><EFBFBD><P<EFBFBD><EFBFBD><EFBFBD>[ c<EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>N
void TwainUIDlg::OnBnClickedDefault()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
JsonConfig js;
CONFIGPARAMS cf = js.GetDefaultConfigParams();
UpdateUI(cf);
}
//.^<EFBFBD>R c<EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>N
void TwainUIDlg::OnBnClickedHelp()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
this->SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
TCHAR chmPath[MAX_PATH] = { 0 };
SHGetSpecialFolderPath(NULL, chmPath, CSIDL_WINDOWS, TRUE);
_tcscat(chmPath, CHM_DEFAULT_PATH);
HINSTANCE ret = ShellExecute(NULL, "Open", chmPath, NULL, NULL, SW_SHOWMAXIMIZED);
//MessageBox(chmPath,"Path",MB_OK);
int cvt = (int)ret;
if (cvt < 32)
{
switch (cvt)
{
case ERROR_FILE_NOT_FOUND:
MessageBox("*g~b0R.^<5E>R<EFBFBD>ech<01>", "<00>c:y", MB_OK | MB_ICONINFORMATION);
break;
default:
MessageBox("Sb_.^<5E>R<EFBFBD>ech_8^<01>", "<00>c:y", MB_OK | MB_ICONINFORMATION);
break;
}
}
this->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
//<EFBFBD>OX[(u7b<EFBFBD><EFBFBD> <EFBFBD>y<EFBFBD> c<EFBFBD><EFBFBD>
void TwainUIDlg::OnBnClickedSaveItem()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
SaveConfigDlg sfd(this);
sfd.DoModal();
}
// Rd<EFBFBD>N*N(u7b<EFBFBD><EFBFBD> <EFBFBD>y<EFBFBD> c<EFBFBD><EFBFBD>
void TwainUIDlg::OnBnClickedDeletItem()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
if (MessageBox(TEXT("nx<6E><78><EFBFBD><EFBFBD> Rd<52>dk(u7b<37><62> <09>y<EFBFBD>M<EFBFBD>nT<1F>"), TEXT("(u7b<37><62> <09>y<EFBFBD>"), MB_YESNO | MB_ICONQUESTION) == IDYES)
{
int cursel = -1;
cursel = ((CListBox*)(GetDlgItem(IDC_LSTCONFIG)))->GetCurSel();
if (cursel != -1)
{
CFile file;
file.Remove(cfi[cursel].SavePath.c_str());
UpdateListConfig();
}
}
}
//b` YN*N(u7b<EFBFBD><EFBFBD> <EFBFBD>y<EFBFBD><EFBFBD>~
void TwainUIDlg::OnBnClickedRecovery()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
this->SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
if (MessageBox(TEXT("<00>Y<EFBFBD>gb` Y,S_MR@b g<EFBFBD>]<EFBFBD>OX[M<EFBFBD>n\"N1Y0/f&T<>~<7E>~<1F>"), TEXT("b` Y"), MB_YESNO | MB_ICONQUESTION) == IDYES)
{
JsonConfig js;
CFileDialog ofd(TRUE,
".json",
NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
_TEXT("Json Files (*.json)|*.json||)"),
NULL);
for (int i = 0; i < cfi.size(); i++)
{
DeleteFile(cfi[i].SavePath.c_str());
}
cfi.clear();
if (IDOK == ofd.DoModal())
{
std::string path = ofd.GetPathName().GetBuffer();
vector<CONFIGPARAMS> vc = js.ReadJsonArrayFromFile(path);
for (int i = 0; i < vc.size(); i++)
{
// js.WriteJsonArrayToFile(vc[i],vc[i].SavePath);
vector<CONFIGPARAMS> vc_item;
vc_item.push_back(vc[i]);
js.WriteJsonArrayToFile(vc_item, vc[i].SavePath);
}
UpdateListConfig();
}
}
this->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
//Y<EFBFBD>NN*N(u7b<EFBFBD><EFBFBD> <EFBFBD>y<EFBFBD><EFBFBD>~
void TwainUIDlg::OnBnClickedBackUp()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
char szFilters[] = "Json file(*.json)\0";
CFileDialog cfd(FALSE, "json", _T("<00>SX[:N"));
cfd.m_ofn.lpstrTitle = "";
cfd.m_ofn.lpstrFilter = szFilters;
this->SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
JsonConfig js;
if (IDOK == cfd.DoModal())
{
vector<CONFIGPARAMS> vc_tempOut;
std::vector<CONFIGINFO> temp_cfi = getConfigFiles();
for (int i = 0; i < temp_cfi.size(); i++)
{
vector<CONFIGPARAMS> vc_item = js.ReadJsonArrayFromFile(temp_cfi[i].SavePath.c_str());
if (vc_item.size() > 0)
{
vc_tempOut.push_back(vc_item[0]);
}
}
if (vc_tempOut.size() > 0)
{
std:: string path = cfd.GetPathName().GetBuffer();
js.WriteJsonArrayToFile(vc_tempOut, path);
}
}
this->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
/*R<EFBFBD>YSTwainUI <EFBFBD>S<EFBFBD>b<EFBFBD>W,g <EFBFBD>y<EFBFBD>aS0*/
/*<EFBFBD>N<EFBFBD>^0<EFBFBD>V<EFBFBD>PYt0<EFBFBD><EFBFBD>~ <EFBFBD>y<EFBFBD>aS<EFBFBD>vR<EFBFBD>YS*/
BOOL TwainUIDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_tabCtrl.InsertItem(0, "<00>W,g");
m_tabCtrl.InsertItem(1, "<00>N<EFBFBD>^");
m_tabCtrl.InsertItem(2, "<00>V<EFBFBD>PYt");
m_tabCtrl.InsertItem(3, "<01><>~");
basicSetting.Create(IDD_DIALOG_PAGEBASIC, &m_tabCtrl);
brightSetting.Create(IDD_DIALOG_PAGEBRIGHTNESS, &m_tabCtrl);
imageProcess.Create(IDD_DIALOG_PAGEIMGPROC, &m_tabCtrl);
feederPaper.Create(IDD_DIALOG_PAGEFEEDPAPER, &m_tabCtrl);
CRect rect;
m_tabCtrl.GetClientRect(&rect);
rect.top += 22;
rect.bottom -= 4;
rect.left += 4;
rect.right -= 6;
basicSetting.MoveWindow(&rect);
brightSetting.MoveWindow(&rect);
imageProcess.MoveWindow(&rect);
feederPaper.MoveWindow(&rect);
basicSetting.ShowWindow(TRUE);
m_tabCtrl.SetCurSel(0);
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD><EFBFBD>Y<EFBFBD>vR<EFBFBD>YS
JsonConfig cfg;
CONFIGPARAMS configParams = cfg.ReadDefaultConfig();
UpdateUI(configParams);
UpdateListConfig();
return TRUE; // return TRUE unless you set the focus to a control
// _8^: OCX ^\'`u<EFBFBD><EFBFBD>^ԏ<EFBFBD>V FALSE
}
void TwainUIDlg::OnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
CRect tabRect; // h~{<EFBFBD>c<EFBFBD>N<EFBFBD>[7b:S<EFBFBD>vRect
// <EFBFBD><EFBFBD><EFBFBD>Sh~{<EFBFBD>c<EFBFBD>N<EFBFBD>[7b:SRect <EFBFBD>v^<EFBFBD>[vQ<EFBFBD>te <EFBFBD><EFBFBD>N<EFBFBD>T>enh~{u<EFBFBD>
m_tabCtrl.GetClientRect(&tabRect);
tabRect.left += 1;
tabRect.right -= 2;
tabRect.top += 23;
tabRect.bottom -= 4;
switch (m_tabCtrl.GetCurSel())
{
case 0:
basicSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
brightSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
imageProcess.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
feederPaper.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
break;
case 1:
basicSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
brightSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
imageProcess.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
feederPaper.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
break;
case 2:
basicSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
brightSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
imageProcess.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
feederPaper.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
break;
case 3:
basicSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
brightSetting.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
imageProcess.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
feederPaper.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
break;
default:
break;
}
*pResult = 0;
}
//////////////////////////////////////////////////////////////////////
/*<EFBFBD>NUI<EFBFBD><EFBFBD><EFBFBD>S<EFBFBD>Spe*/
void TwainUIDlg::UpDateScanParam(PCONFIGPARAMS configItem, bool updateDs)
{
//brightSetting.m_hWnd
//CWnd* hwd= brightSetting.GetDlgItem(IDC_CHKSELFCONTRAST);
configItem->EnAutoContrast = ((CButton*)(brightSetting.GetDlgItem(IDC_CHKSELFCONTRAST)))->GetCheck();//R<EFBFBD>N<EFBFBD>^<EFBFBD>[<EFBFBD>k<EFBFBD>^
configItem->EnBackRotate180 = ((CButton*)(feederPaper.GetDlgItem(IDC_CKBACKROTATION)))->GetCheck();//̀b<EFBFBD><EFBFBD>el<EFBFBD>180
configItem->EnBindingDetect = ((CButton*)(feederPaper.GetDlgItem(IDC_CKBINDINGDETECT)))->GetCheck();//ň<EFBFBD><EFBFBD><EFBFBD>hKm
configItem->EnUltrasonicDetect = ((CButton*)(feederPaper.GetDlgItem(IDC_CKULTRSONICDETECT)))->GetCheck();//<EFBFBD>S _<EFBFBD>hKm
configItem->EnFillBlack = ((CButton*)(imageProcess.GetDlgItem(IDC_CKFILLBLACKRECT)))->GetCheck();//kXEQўFh
configItem->EnAutoDescrew = ((CButton*)(imageProcess.GetDlgItem(IDC_CKAUTODESKREW)))->GetCheck();//R<EFBFBD>~OP
configItem->EnScrewDetect = ((CButton*)(feederPaper.GetDlgItem(IDC_CKSKEWDETECT)))->GetCheck();//jk<EFBFBD>e<EFBFBD>hKm
configItem->Brightness = ((CSliderCtrl*)brightSetting.GetDlgItem(IDC_SLDBRIGTHNESS))->GetPos() - 128;//<EFBFBD>N<EFBFBD>^
int indexColorModel = ((CComboBox*)basicSetting.GetDlgItem(IDC_CMBCOLORTYPE))->GetCurSel();
configItem->Pixtype = getColorModel(indexColorModel);//<EFBFBD><EFBFBD>r<EFBFBD>!j_
configItem->Contrast = ((CSliderCtrl*)brightSetting.GetDlgItem(IDC_SLDCONTRAST))->GetPos() - 4;//<EFBFBD>[<EFBFBD>k<EFBFBD>^
int index = ((CComboBox*)basicSetting.GetDlgItem(IDC_CMBRESLUTION))->GetCurSel();
configItem->Resolution = getResolution(index);//R<EFBFBD><EFBFBD><EFBFBD>s
configItem->Duplex = ((CComboBox*)(basicSetting.GetDlgItem(IDC_CMBDUPLEX)))->GetCurSel();//US<EFBFBD>Sb<EFBFBD>
configItem->Filter = ((CComboBox*)imageProcess.GetDlgItem(IDC_CMBFILTER))->GetCurSel();//d<EFBFBD>r<EFBFBD>
configItem->Gamma = ((CSliderCtrl*)brightSetting.GetDlgItem(IDC_SLDGAMMA))->GetPos();//gamma
int index_ss = ((CComboBox*)basicSetting.GetDlgItem(IDC_CMBSS))->GetCurSel();
configItem->PaperSize = getPaparSize(index_ss);//<EFBFBD>~ _{|<EFBFBD>W
configItem->Orentation = ((CComboBox*)feederPaper.GetDlgItem(IDC_CMBORENTATION))->GetCurSel();//<EFBFBD>el<EFBFBD><EFBFBD>eT
configItem->EnMultiOutPutR = ((CButton*)imageProcess.GetDlgItem(IDC_CKMULTIOUTPUT))->GetCheck();//YAmd<EFBFBD><EFBFBD>~
CString str_count;
((CEdit*)feederPaper.GetDlgItem(IDC_EDSCANNUM))->GetWindowText(str_count);
int count = atoi(str_count);
if (count == 0)
{
((CEdit*)feederPaper.GetDlgItem(IDC_EDSCANNUM))->SetWindowTextA("1");
count = 1;
}
str_count.ReleaseBuffer();
if (configItem->EnMultiOutPutR)
count *= 2;
configItem->ScanCount = ((CButton*)feederPaper.GetDlgItem(IDC_RDCONSISTSCAN))->GetCheck() ? -1 : (configItem->Duplex == 0 ? count : count * 2);//kb<EFBFBD>c _pe
configItem->ScrewDetectLevel = ((CSliderCtrl*)feederPaper.GetDlgItem(IDC_SLDDETECTLEVEL))->GetPos();//jk<EFBFBD>e<EFBFBD>hKmI{<EFBFBD>~
configItem->EnOutHole = ((CButton*)imageProcess.GetDlgItem(IDC_CKREMOVEHOLE))->GetCheck();//d<EFBFBD>zT[<EFBFBD>S(u'`
configItem->OutHoleRatio = ((CSliderCtrl*)imageProcess.GetDlgItem(IDC_SLDOUTHOLE))->GetPos();//zT[d"}<03><>V<EFBFBD>k<EFBFBD>O<EFBFBD>|pe
if (!updateDs)
return;
CTWAINContainerInt *pnCap = 0;
CTWAINContainerBool *pbCap = false;
CTWAINContainerFix32 *pfCap = 0;
CTWAINContainerFix32Range *pfRCap = 0;
CTWAINContainerFrame *pframeCap = 0;
bool ret = false;
if (0 == (pnCap = dynamic_cast<CTWAINContainerInt*>(ui->m_pDS->findCapability(ICAP_PIXELTYPE))))
return;
else
{
ret = pnCap->SetCurrent(configItem->Pixtype);
}
if (0 == (pnCap = dynamic_cast<CTWAINContainerInt*>(ui->m_pDS->findCapability(ICAP_SUPPORTEDSIZES))))
return;
else
{
ret = pnCap->SetCurrent(configItem->PaperSize);
}
if (0 == (pnCap = dynamic_cast<CTWAINContainerInt*>(ui->m_pDS->findCapability(ICAP_ORIENTATION))))
return;
else
{
ret = pnCap->SetCurrent(configItem->Orentation == 4 ? TWOR_AUTOTEXT : configItem->Orentation);
}
if (0 == (pfCap = dynamic_cast<CTWAINContainerFix32*>(ui->m_pDS->findCapability(ICAP_XRESOLUTION))))
return;
else
{
ret = pfCap->SetCurrent(configItem->Resolution);
}
// Y resolution the same.
if (0 == (pfCap = dynamic_cast<CTWAINContainerFix32*>(ui->m_pDS->findCapability(ICAP_YRESOLUTION))))
return;
else
{
ret = pfCap->SetCurrent(configItem->Resolution);
}
if (0 == (pfRCap = dynamic_cast<CTWAINContainerFix32Range*>(ui->m_pDS->findCapability(ICAP_CONTRAST))))
return;
else
{
float value_Contrast = GetContrast(configItem->Contrast);
ret = pfRCap->SetCurrent(value_Contrast);
}
if (0 == (pfRCap = dynamic_cast<CTWAINContainerFix32Range*>(ui->m_pDS->findCapability(ICAP_BRIGHTNESS))))
return;
else
{
ret = pfRCap->SetCurrent(configItem->Brightness);
}
// Y resolution the same.
if (0 == (pfRCap = dynamic_cast<CTWAINContainerFix32Range*>(ui->m_pDS->findCapability(ICAP_GAMMA))))
return;
else
{
ret = pfRCap->SetCurrent(configItem->Gamma / 10);
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(ICAP_AUTOMATICCROPUSESFRAME))))
return;
else
{
bool temp = (configItem->PaperSize) == 90;
ret = pbCap->SetCurrent(temp);
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(ICAP_AUTODISCARDBLANKPAGES))))
return;
else
{
bool temp = (configItem->Duplex) == 2;
configItem->EnDiscardBlank = temp;
ret = pbCap->SetCurrent(temp);
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(0x8091))))
return;
else
{
bool temp = (configItem->Duplex) == 3;
configItem->EnDiscardBlankVince = temp;
ret = pbCap->SetCurrent(temp);
}
//kXEQўFh
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(0x8004))))
return;
else
{
ret = pbCap->SetCurrent(configItem->EnFillBlack);
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(ICAP_AUTOMATICDESKEW))))
return;
else
{
ret = pbCap->SetCurrent(configItem->EnAutoDescrew);
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(0x8005))))//̀b<EFBFBD><EFBFBD>el<EFBFBD>180
return;
else
{
ret = pbCap->SetCurrent(configItem->EnBackRotate180);
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(0x8006))))//jk<EFBFBD>e<EFBFBD>hKm
return;
else
{
ret = pbCap->SetCurrent(configItem->EnScrewDetect);
}
if (0 == (pfRCap = dynamic_cast<CTWAINContainerFix32Range*>(ui->m_pDS->findCapability(0x8021))))//jk<EFBFBD>e<EFBFBD>hKmI{<EFBFBD>~
return;
else
{
ret = pfRCap->SetCurrent((float)configItem->ScrewDetectLevel);
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(0x8090))))//ň<EFBFBD><EFBFBD><EFBFBD>hKm
return;
else
{
ret = pbCap->SetCurrent(configItem->EnBindingDetect);
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability((CAP_DOUBLEFEEDDETECTION)))))
return;
else
{
ret = pbCap->SetCurrent(configItem->EnUltrasonicDetect);
}
if (0 == (pnCap = dynamic_cast<CTWAINContainerInt*>(ui->m_pDS->findCapability(CAP_XFERCOUNT))))
return;
else
{
ret = pnCap->SetCurrent(configItem->ScanCount);
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(CAP_DUPLEXENABLED))))
{
return;
}
else
{
ret = pbCap->SetCurrent(configItem->Duplex == 0 ? FALSE : TRUE);
}
if (0 == (pnCap = dynamic_cast<CTWAINContainerInt*>(ui->m_pDS->findCapability(ICAP_FILTER))))
{
return;
}
else
{
ret = pnCap->SetCurrent(configItem->Filter);
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(0x8018))))
{
return;
}
else
{
ret = pbCap->SetCurrent(configItem->EnOutHole);
}
if (0 == (pfRCap = dynamic_cast<CTWAINContainerFix32Range*>(ui->m_pDS->findCapability(0x8092))))
{
return;
}
else
{
ret = pfRCap->SetCurrent((float)(configItem->OutHoleRatio));
}
if (0 == (pbCap = dynamic_cast<CTWAINContainerBool*>(ui->m_pDS->findCapability(0x8026))))
{
return;
}
else
{
ret = pbCap->SetCurrent(configItem->EnMultiOutPutR);
}
}
void TwainUIDlg::UpdateListConfig()
{
((CListBox*)(GetDlgItem(IDC_LSTCONFIG)))->ResetContent();
if (cfi.size() > 0)
{
cfi.clear();
}
cfi = getConfigFiles();
for (int i = 0; i < cfi.size(); i++)
{
((CListBox*)(GetDlgItem(IDC_LSTCONFIG)))->AddString(cfi[i].Caption.c_str());
}
if (cfi.size() <= 0)
{
((CButton*)(GetDlgItem(IDC_BTNDELETCONFIG)))->EnableWindow(FALSE);
((CButton*)(GetDlgItem(IDC_BTNBACKUPCONFIG)))->EnableWindow(FALSE);
}
else
{
((CButton*)(GetDlgItem(IDC_BTNDELETCONFIG)))->EnableWindow(TRUE);
((CButton*)(GetDlgItem(IDC_BTNBACKUPCONFIG)))->EnableWindow(TRUE);
}
}
std::string TwainUIDlg::getSerialNum()
{
return ui->m_pDS->GetSerialNum();
}
std::string TwainUIDlg::getHardVersion()
{
return ui->m_pDS->GetFWVerison();
}
//////////////////////////////////////////////////////////////////////
/*<EFBFBD>f<EFBFBD>eUI*/
void TwainUIDlg::UpdateUI(CONFIGPARAMS configParams)
{
((CComboBox*)basicSetting.GetDlgItem(IDC_CMBCOLORTYPE))->SetCurSel(getColorModelIndex(configParams.Pixtype));
basicSetting.OnCbnSelchangeCmbcolortype();
((CButton*)brightSetting.GetDlgItem(IDC_CHKSELFCONTRAST))->SetCheck(configParams.EnAutoContrast);
((CButton*)imageProcess.GetDlgItem(IDC_CKAUTODESKREW))->SetCheck(configParams.EnAutoDescrew);
((CButton*)(imageProcess.GetDlgItem(IDC_CKFILLBLACKRECT)))->SetCheck(configParams.EnFillBlack);
((CButton*)feederPaper.GetDlgItem(IDC_CKBACKROTATION))->SetCheck(configParams.EnBackRotate180);
((CButton*)feederPaper.GetDlgItem(IDC_CKBINDINGDETECT))->SetCheck(configParams.EnBindingDetect);
((CButton*)feederPaper.GetDlgItem(IDC_CKULTRSONICDETECT))->SetCheck(configParams.EnUltrasonicDetect);
imageProcess.SetOutHoleValue(configParams.OutHoleRatio);
imageProcess.EnableOutHoleCheckChanged(configParams.EnOutHole);
imageProcess.SetMultiOutputEnable(configParams.Pixtype, configParams.EnMultiOutPutR);
int br_value = configParams.Brightness + 128;
((CSliderCtrl*)brightSetting.GetDlgItem(IDC_SLDBRIGTHNESS))->SetPos(br_value);
sprintf(strB, "%d", br_value);
((CStatic*)brightSetting.GetDlgItem(IDC_LBBRIGHTNESS))->SetWindowTextA(strB);
((CSliderCtrl*)brightSetting.GetDlgItem(IDC_SLDCONTRAST))->SetPos(configParams.Contrast + 4);
sprintf(strC, "%d", (configParams.Contrast + 4));
((CStatic*)brightSetting.GetDlgItem(IDC_LBCONTRAST))->SetWindowTextA(strC);
((CComboBox*)basicSetting.GetDlgItem(IDC_CMBRESLUTION))->SetCurSel(getResolutionIndex(configParams.Resolution));
((CComboBox*)basicSetting.GetDlgItem(IDC_CMBDUPLEX))->SetCurSel(configParams.Duplex);
if (configParams.Duplex == 0)
{
((CButton*)feederPaper.GetDlgItem(IDC_CKBACKROTATION))->SetCheck(FALSE);
((CButton*)feederPaper.GetDlgItem(IDC_CKBACKROTATION))->EnableWindow(FALSE);
}
((CComboBox*)imageProcess.GetDlgItem(IDC_CMBFILTER))->SetCurSel(configParams.Filter);
if (configParams.Pixtype == 2)
{
((CComboBox*)imageProcess.GetDlgItem(IDC_CMBFILTER))->SetCurSel(0);
((CComboBox*)imageProcess.GetDlgItem(IDC_CMBFILTER))->EnableWindow(FALSE);
}
((CSliderCtrl*)brightSetting.GetDlgItem(IDC_SLDGAMMA))->SetPos(configParams.Gamma);
sprintf(strG, "%0.1f", configParams.Gamma / 10.0);
((CStatic*)brightSetting.GetDlgItem(IDC_LBGAMMA))->SetWindowTextA(strG);
((CComboBox*)basicSetting.GetDlgItem(IDC_CMBSS))->SetCurSel(getPaparSizeIndex(configParams.PaperSize));
if (configParams.ScanCount <= 0)//ޏ<EFBFBD>~kb<EFBFBD>c
{
((CButton*)feederPaper.GetDlgItem(IDC_RDCONSISTSCAN))->SetCheck(TRUE);
((CButton*)feederPaper.GetDlgItem(IDC_RDSPECIFYSCANNUM))->SetCheck(FALSE);
((CEdit*)feederPaper.GetDlgItem(IDC_EDSCANNUM))->SetWindowTextA(_T("1"));
((CEdit*)feederPaper.GetDlgItem(IDC_EDSCANNUM))->EnableWindow(FALSE);
}
else//c<EFBFBD>[pe<EFBFBD>v
{
((CEdit*)feederPaper.GetDlgItem(IDC_EDSCANNUM))->EnableWindow(TRUE);
((CButton*)feederPaper.GetDlgItem(IDC_RDCONSISTSCAN))->SetCheck(FALSE);
((CButton*)feederPaper.GetDlgItem(IDC_RDSPECIFYSCANNUM))->SetCheck(TRUE);
CString str_count;
int tempcount;
if (configParams.Duplex == 0)
{
if (configParams.EnMultiOutPutR)
tempcount = configParams.ScanCount / 2;
else
tempcount = configParams.ScanCount;
tempcount = tempcount == 0 ? 1 : tempcount;
}
else
{
if (configParams.EnMultiOutPutR)
tempcount = configParams.ScanCount / 4;
else
tempcount = configParams.ScanCount;
tempcount = tempcount == 0 ? 1 : tempcount;
}
str_count.Format("%d", tempcount);
((CEdit*)feederPaper.GetDlgItem(IDC_EDSCANNUM))->SetWindowTextA(str_count);
}
((CButton*)feederPaper.GetDlgItem(IDC_CKSKEWDETECT))->SetCheck(configParams.EnScrewDetect);
((CSliderCtrl*)feederPaper.GetDlgItem(IDC_SLDDETECTLEVEL))->SetPos(configParams.ScrewDetectLevel);
feederPaper.OnBnClickedCkskewdetect();
((CComboBox*)feederPaper.GetDlgItem(IDC_CMBORENTATION))->SetCurSel(configParams.Orentation);
//brightSetting.FlashWindow(TRUE);
}
int TwainUIDlg::getResolution(int index)
{
int result = 200;//؞<EFBFBD><EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>s
switch (index)
{
case 0:
result = 100;
break;
case 1:
result = 150;
break;
case 2:
result = 200;
break;
case 3:
result = 240;
break;
case 4:
result = 300;
break;
default:
break;
}
return result;
}
//////////////////////////////////////////////////////////////////////
int TwainUIDlg::getPaparSize(int index)
{
int result = TWSS_A4;//؞<EFBFBD><EFBFBD>A4
switch (index)
{
case 0:
result = TWSS_A3;
break;
case 1:
result = TWSS_A4;
break;
case 2:
result = TWSS_A4R;
break;
case 3:
result = TWSS_A5;
break;
case 4:
result = TWSS_A5R;
break;
case 5:
result = TWSS_A6;
break;
case 6:
result = TWSS_A6R;
break;
case 7:
result = TWSS_B4;
break;
case 8:
result = TWSS_B5;
break;
case 9:
result = TWSS_B5R;
break;
case 10:
result = TWSS_B6;
break;
case 11:
result = TWSS_B6R;
break;
case 12:
result = TWSS_USLETTER;
break;
case 13:
result = LETTERR;
break;
case 14:
result = DOUBLELETTER;
break;
case 15:
result = TWSS_USLEGAL;
break;
case 16:
result = TWSS_AUTOCROP;
break;
case 17:
result = TWSS_LONGDOCMENT;
break;
default:
break;
}
return result;
}
int TwainUIDlg::getResolutionIndex(int resolution)
{
int result = 0;
int resulotions[RESOLUTIONCOUNT] = { RESOLUTION };
for (size_t i = 0; i < RESOLUTIONCOUNT; i++)
{
if (resulotions[i] == resolution)
{
result = i;
break;
}
}
return result;
}
int TwainUIDlg::getPaparSizeIndex(int papersize)
{
int result = 1;
int ss[TOTALPAPARTYPE] = { PAPARTYPE };
for (size_t i = 0; i < TOTALPAPARTYPE; i++)
{
if (ss[i] == papersize)
{
result = i;
break;
}
}
return result;
}
int TwainUIDlg::getColorModel(int index)
{
int result = TWPT_GRAY;
switch (index)
{
case 0:
result = TWPT_RGB;
break;
case 2:
result = TWPT_BW;
default:
break;
}
return result;
}
int TwainUIDlg::getColorModelIndex(int pixtype)
{
return pixtype == 2 ? 0 : (pixtype == 1 ? 1 : 2);
}
vector<CONFIGINFO> TwainUIDlg::getConfigFiles()
{
vector<CONFIGINFO> vc_cfi;
CFileFind find;
TCHAR cfFilePath[MAX_PATH] = { 0 };
SHGetSpecialFolderPath(NULL, cfFilePath, CSIDL_LOCAL_APPDATA, TRUE);
_tcscat(cfFilePath, HUAGAO_SCAN);
_tcscat(cfFilePath, TWAIN_DATA_PATH);
CString filePath(cfFilePath);
BOOL isFind = find.FindFile(filePath + _TEXT("/*.json"));
while (isFind)
{
isFind = find.FindNextFileA();
if (find.IsDots())
{
continue;
}
else
{
CONFIGINFO cfi;
cfi.Caption = find.GetFileTitle();
cfi.SavePath = find.GetFilePath();
vc_cfi.push_back(cfi);
}
}
return vc_cfi;
}
/*
**Rh<EFBFBD> <EFBFBD><EFBFBD>by<EFBFBD><EFBFBD>S<EFBFBD>f<EFBFBD>N<EFBFBD>N**
*/
void TwainUIDlg::OnLbnSelchangeLstconfig()
{
// TODO: (Wdk<EFBFBD>m<EFBFBD>R<EFBFBD>c<EFBFBD>N<EFBFBD><EFBFBD>wYt z<EFBFBD>^<EFBFBD>Nx
int index = -1;
index = ((CListBox*)(GetDlgItem(IDC_LSTCONFIG)))->GetCurSel();
if (index != -1)
{
JsonConfig js;
//std::string savepath= cfi[index].SavePath;
std::vector<CONFIGPARAMS> vc_temp;
vc_temp = js.ReadJsonArrayFromFile(cfi[index].SavePath);
if (vc_temp.size() > 0)
{
UpdateUI(vc_temp[0]);
}
}
}