// TwainUIDlg.cpp: 实现文件 // #include "stdafx.h" #include "TwainUIDlg.h" #include "afxdialogex.h" #include "Resource.h" #include "scn_config.h" #include "PublicFunc.h" //extern CUI_INI* m_pUI_INI; // TwainUIDlg 对话框 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 消息处理程序 void TwainUIDlg::OnBnClickedConfirm() { // TODO: 在此添加控件通知处理程序代码 CString str_caption; GetDlgItemText(IDC_CONFIRM, str_caption); CONFIGPARAMS configItem = { 0 }; UpDateScanParam(&configItem); TCHAR szIniFile[MAX_PATH] = { 0 }; SHGetSpecialFolderPath(NULL, szIniFile, CSIDL_COMMON_DOCUMENTS, TRUE); _tcscat(szIniFile, HUAGAO_SCAN); _tcscat(szIniFile,TWAIN_INIPATH); _tcscat(szIniFile, TEXT("\\")); _tcscat(szIniFile, TWAIN_JSON_NAME); JsonConfig js; vector vc; vc.push_back(configItem); std::string savepath(szIniFile); js.WriteJsonArrayToFile(vc,savepath); if (str_caption.Compare(_T("扫描")) == 0)//内容为扫描时 { ui->Scan(); } else { ui->m_pDS->DoCloseDSOkEvent(); } } //取消按钮事件 void TwainUIDlg::OnBnClickedCancel() { // TODO: 在此添加控件通知处理程序代码 CDialog::OnCancel(); //disableDS ui->m_pDS->DoCloseDSOkEvent(); } //默认值设定按钮事件 void TwainUIDlg::OnBnClickedDefault() { // TODO: 在此添加控件通知处理程序代码 JsonConfig js; CONFIGPARAMS cf=js.GetDefaultConfigParams(); UpdateUI(cf); } //帮助按钮事件 void TwainUIDlg::OnBnClickedHelp() { // TODO: 在此添加控件通知处理程序代码 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("未找到帮助文档!","提示",MB_OK|MB_ICONINFORMATION); break; default: MessageBox("打开帮助文档异常!","提示",MB_OK|MB_ICONINFORMATION); break; } } } //保存用户首选项按钮 void TwainUIDlg::OnBnClickedSaveItem() { // TODO: 在此添加控件通知处理程序代码 SaveConfigDlg sfd; sfd.DoModal(); } //删除一个用户首选项按钮 void TwainUIDlg::OnBnClickedDeletItem() { // TODO: 在此添加控件通知处理程序代码 if (MessageBox(TEXT("确认要删除此用户首选项配置吗?"),TEXT("用户首选项"),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(); } } } //恢复一个用户首选项组 void TwainUIDlg::OnBnClickedRecovery() { // TODO: 在此添加控件通知处理程序代码 if (MessageBox(TEXT("如果恢复,当前所有已保存配置将丢失。是否继续?"),TEXT("恢复"),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 vc=js.ReadJsonArrayFromFile(path); for (int i=0;i vc_item; vc_item.push_back(vc[i]); js.WriteJsonArrayToFile(vc_item,vc[i].SavePath); } UpdateListConfig(); } } } //备份一个用户首选项组 void TwainUIDlg::OnBnClickedBackUp() { // TODO: 在此添加控件通知处理程序代码 char szFilters[] = "Json file(*.json)\0"; CFileDialog cfd(FALSE,"json",_T("另存为")); 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 vc_tempOut; for (int i=0;i vc_item=js.ReadJsonArrayFromFile(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.GetFileName().GetBuffer(); js.WriteJsonArrayToFile(vc_tempOut,path); } } this->SetWindowPos(&wndTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE); } /*初始化TwainUI,包括基本选项卡、*/ /*亮度、图像处理、送纸选项卡的初始化*/ BOOL TwainUIDlg::OnInitDialog() { CDialog::OnInitDialog(); m_tabCtrl.InsertItem(0, "基本"); m_tabCtrl.InsertItem(1, "亮度"); m_tabCtrl.InsertItem(2, "图像处理"); m_tabCtrl.InsertItem(3, "送纸"); 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: 在此添加额外的初始化 JsonConfig cfg; CONFIGPARAMS configParams=cfg.ReadDefaultConfig(); UpdateUI(configParams); UpdateListConfig(); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void TwainUIDlg::OnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult) { // TODO: 在此添加控件通知处理程序代码 CRect tabRect; // 标签控件客户区的Rect // 获取标签控件客户区Rect,并对其调整,以适合放置标签页 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; } ////////////////////////////////////////////////////////////////////// /*从UI获取参数*/ void TwainUIDlg::UpDateScanParam(PCONFIGPARAMS configItem,bool updateDs) { configItem->EnAutoContrast = ((CButton*)(brightSetting.GetDlgItem(IDC_CHKSELFCONTRAST)))->GetCheck(); //configItem->EnAutoCrop = ((CButton*)(imageProcess.GetDlgItem(IDC_CKAUTOCROP)))->GetCheck(); configItem->EnBackRotate180 = ((CButton*)(feederPaper.GetDlgItem(IDC_CKBACKROTATION)))->GetCheck(); configItem->EnBindingDetect = ((CButton*)(feederPaper.GetDlgItem(IDC_CKBINDINGDETECT)))->GetCheck(); configItem->EnUltrasonicDetect = ((CButton*)(feederPaper.GetDlgItem(IDC_CKULTRSONICDETECT)))->GetCheck(); configItem->EnFillBlack = ((CButton*)(imageProcess.GetDlgItem(IDC_CKFILLBLACKRECT)))->GetCheck(); configItem->EnAutoDescrew=((CButton*)(imageProcess.GetDlgItem(IDC_CKAUTODESKREW)))->GetCheck(); configItem->EnScrewDetect = ((CButton*)(feederPaper.GetDlgItem(IDC_CKSKEWDETECT)))->GetCheck(); configItem->Brightness = ((CSliderCtrl*)brightSetting.GetDlgItem(IDC_SLDBRIGTHNESS))->GetPos() - 128; int indexColorModel=((CComboBox*)basicSetting.GetDlgItem(IDC_CMBCOLORTYPE))->GetCurSel(); configItem->Pixtype = getColorModel(indexColorModel); configItem->Contrast = ((CSliderCtrl*)brightSetting.GetDlgItem(IDC_SLDCONTRAST))->GetPos()-4; int index = ((CComboBox*)basicSetting.GetDlgItem(IDC_CMBRESLUTION))->GetCurSel(); configItem->Resolution = getResolution(index); configItem->Duplex = ((CComboBox*)(basicSetting.GetDlgItem(IDC_CMBDUPLEX)))->GetCurSel(); configItem->Filter = ((CComboBox*)imageProcess.GetDlgItem(IDC_CMBFILTER))->GetCurSel(); configItem->Gamma = ((CSliderCtrl*)brightSetting.GetDlgItem(IDC_SLDGAMMA))->GetPos(); int index_ss = ((CComboBox*)basicSetting.GetDlgItem(IDC_CMBSS))->GetCurSel(); configItem->PaperSize = getPaparSize(index_ss); configItem->Orentation = ((CComboBox*)feederPaper.GetDlgItem(IDC_CMBORENTATION))->GetCurSel(); CString str_count; ((CEdit*)feederPaper.GetDlgItem(IDC_EDSCANNUM))->GetWindowText(str_count); int count = atoi(str_count); str_count.ReleaseBuffer(); configItem->ScanCount = ((CButton*)feederPaper.GetDlgItem(IDC_RDCONSISTSCAN))->GetCheck() ? -1 : (configItem->Duplex==0? count :count*2); configItem->ScrewDetectLevel = ((CSliderCtrl*)feederPaper.GetDlgItem(IDC_SLDDETECTLEVEL))->GetPos(); if (!updateDs) { return; } CTWAINContainerInt *pnCap = 0; CTWAINContainerBool *pbCap = false; CTWAINContainerFix32 *pfCap = 0; CTWAINContainerFix32Range *pfRCap = 0; CTWAINContainerFrame *pframeCap = 0; if (0 == (pnCap = dynamic_cast(ui->m_pDS->findCapability(ICAP_PIXELTYPE)))) { //XdPrint("Could not get ICAP_PIXELTYPE\n"); return; } else { pnCap->SetCurrent(configItem->Pixtype); } if (0 == (pnCap = dynamic_cast(ui->m_pDS->findCapability(ICAP_SUPPORTEDSIZES)))) { //XdPrint("Could not get ICAP_SUPPORTEDSIZES\n"); return; } else { pnCap->SetCurrent(configItem->PaperSize); } if (0 == (pnCap = dynamic_cast(ui->m_pDS->findCapability(ICAP_ORIENTATION)))) { //XdPrint("Could not get ICAP_ORIENTATION\n"); return; } else { pnCap->SetCurrent(configItem->Orentation==4?TWOR_AUTOTEXT:configItem->Orentation); } if (0 == (pfCap = dynamic_cast(ui->m_pDS->findCapability(ICAP_XRESOLUTION)))) { //XdPrint("Could not get ICAP_XRESOLUTION\n"); return; } else { pfCap->SetCurrent(configItem->Resolution); } // Y resolution the same. if (0 == (pfCap = dynamic_cast(ui->m_pDS->findCapability(ICAP_YRESOLUTION)))) { //XdPrint("Could not get ICAP_YRESOLUTION\n"); return; } else { pfCap->SetCurrent(configItem->Resolution); } if (0 == (pfRCap = dynamic_cast(ui->m_pDS->findCapability(ICAP_CONTRAST)))) { //XdPrint("Could not get ICAP_CONTRAST\n"); return; } else { float value_Contrast=GetContrast(configItem->Contrast); pfRCap->SetCurrent(value_Contrast); } if (0 == (pfRCap = dynamic_cast(ui->m_pDS->findCapability(ICAP_BRIGHTNESS)))) { //XdPrint("Could not get ICAP_BRIGHTNESS\n"); return; } else { pfRCap->SetCurrent(configItem->Brightness); } // Y resolution the same. if (0 == (pfRCap = dynamic_cast(ui->m_pDS->findCapability(ICAP_GAMMA)))) { //XdPrint("Could not get ICAP_GAMMA\n"); return; } else { pfRCap->SetCurrent(configItem->Gamma/10); } if (0 == (pbCap = dynamic_cast(ui->m_pDS->findCapability(ICAP_AUTOMATICCROPUSESFRAME)))) { //XdPrint("Could not get ICAP_AUTOMATICCROPUSESFRAME\n"); return; } else { bool temp = (configItem->PaperSize) == 90; pbCap->SetCurrent(temp); } if (0 == (pbCap = dynamic_cast(ui->m_pDS->findCapability(ICAP_AUTODISCARDBLANKPAGES)))) { //XdPrint("Could not get ICAP_AUTODISCARDBLANKPAGES\n"); return; } else { bool temp = (configItem->Duplex) == 2; pbCap->SetCurrent(temp); } if (0 == (pbCap = dynamic_cast(ui->m_pDS->findCapability(0x8091)))) { //XdPrint("Could not get ICAP_AUTODISCARDBLANKPAGES\n"); return; } else { bool temp = (configItem->Duplex) == 3; pbCap->SetCurrent(temp); } //填充黑框 if (0 == (pbCap = dynamic_cast(ui->m_pDS->findCapability(0x8027)))) { cerr << "Could not get ICAP_AUTOMATICCROPUSESFRAME" << endl; return; } else { pbCap->SetCurrent(configItem->EnFillBlack); } if (0 == (pbCap = dynamic_cast(ui->m_pDS->findCapability(ICAP_AUTOMATICDESKEW)))) { //XdPrint("Could not get ICAP_AUTOMATICDESKEW\n"); return; } else { pbCap->SetCurrent(configItem->EnAutoDescrew); } if (0 == (pbCap = dynamic_cast(ui->m_pDS->findCapability(0x8005))))//背面旋转180 { //XdPrint("Could not get 歪斜检测\n"); return; } else { pbCap->SetCurrent(configItem->EnBackRotate180); } if (0 == (pbCap = dynamic_cast(ui->m_pDS->findCapability(0x8006))))//歪斜检测 { //XdPrint("Could not get 歪斜检测\n"); return; } else { pbCap->SetCurrent(configItem->EnScrewDetect); } if (0 == (pfRCap = dynamic_cast(ui->m_pDS->findCapability(0x8021))))//歪斜检测等级 { //XdPrint("Could not get 歪斜检测等级\n"); return; } else { pfCap->SetCurrent(configItem->ScrewDetectLevel); } if (0 == (pbCap = dynamic_cast(ui->m_pDS->findCapability(0x8090))))//装订检测 { //XdPrint("Could not get 装订检测\n"); return; } else { pbCap->SetCurrent(configItem->EnBindingDetect); } if (0==(pbCap=dynamic_cast(ui->m_pDS->findCapability((CAP_DOUBLEFEEDDETECTION))))) { cerr << "Could not get CAP_DOUBLEFEEDDETECTION" << endl; } else { pbCap->SetCurrent(configItem->EnUltrasonicDetect); } if (0 == (pnCap = dynamic_cast(ui->m_pDS->findCapability(CAP_XFERCOUNT)))) { //XdPrint("Could not get ICAP_SUPPORTEDSIZES\n"); return; } else { pnCap->SetCurrent(configItem->ScanCount); } if (0 == (pnCap = dynamic_cast(ui->m_pDS->findCapability(CAP_DUPLEX)))) { //XdPrint("Could not get CAP_DUPLEX\n"); return; } else { pnCap->SetCurrent(configItem->Duplex==0?TWDX_1PASSDUPLEX:TWDX_2PASSDUPLEX); } if (0 == (pnCap = dynamic_cast(ui->m_pDS->findCapability(ICAP_FILTER)))) { //XdPrint("Could not get ICAP_FILTER\n"); return; } else { pnCap->SetCurrent(configItem->Filter); } } void TwainUIDlg::UpdateListConfig() { ((CListBox*)(GetDlgItem(IDC_LSTCONFIG)))->ResetContent(); if (cfi.size()>0) { cfi.clear(); } cfi=getConfigFiles(); for (int i=0;iAddString(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(); } ////////////////////////////////////////////////////////////////////// /*更新UI*/ 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*)feederPaper.GetDlgItem(IDC_CKBACKROTATION))->SetCheck(configParams.EnBackRotate180); ((CButton*)feederPaper.GetDlgItem(IDC_CKBINDINGDETECT))->SetCheck(configParams.EnBindingDetect); ((CButton*)feederPaper.GetDlgItem(IDC_CKULTRSONICDETECT))->SetCheck(configParams.EnUltrasonicDetect); ((CButton*)imageProcess.GetDlgItem(IDC_CKFILLBLACKRECT))->SetCheck(configParams.EnFillBlack); 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.Filter == 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)//连续扫描 { ((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//指定数目 { ((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) { tempcount= configParams.ScanCount; } else { tempcount= configParams.ScanCount/2; } 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;//默认分辨率 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;//默认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 TwainUIDlg::getConfigFiles() { vector vc_cfi; CFileFind find; TCHAR cfFilePath[MAX_PATH]={0}; SHGetSpecialFolderPath(NULL,cfFilePath,CSIDL_COMMON_DOCUMENTS,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; } /* **列表选择项变更事件** */ void TwainUIDlg::OnLbnSelchangeLstconfig() { // TODO: 在此添加控件通知处理程序代码 int index=-1; index= ((CListBox*)(GetDlgItem(IDC_LSTCONFIG)))->GetCurSel(); if (index!=-1) { JsonConfig js; //std::string savepath= cfi[index].SavePath; std::vector vc_temp; vc_temp=js.ReadJsonArrayFromFile(cfi[index].SavePath); if (vc_temp.size()>0) { UpdateUI(vc_temp[0]); } } }