// A3.cpp : 实现文件 // #include "stdafx.h" #include "HuaGoCorrect.h" #include "A3.h" #include "afxdialogex.h" #include "HuaGoCorrectDlg.h" // CA3 对话框 IMPLEMENT_DYNAMIC(CA3, CDialog) CA3::CA3(CWnd* pParent /*=NULL*/) : CDialog(CA3::IDD, pParent) { } CA3::~CA3() { } void CA3::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_CMBSPEEDMODE, m_cmbSpeedmode); } BEGIN_MESSAGE_MAP(CA3, CDialog) ON_BN_CLICKED(IDC_BTNGETGRAYSP, &CA3::OnBnClickedBtngetgraysp) ON_BN_CLICKED(IDC_BTNSETGRAYSP, &CA3::OnBnClickedBtnsetgraysp) ON_BN_CLICKED(IDC_BTNGETUVSP, &CA3::OnBnClickedBtngetuvsp) ON_BN_CLICKED(IDC_BTNSETUVSP, &CA3::OnBnClickedBtnsetuvsp) ON_BN_CLICKED(IDC_BTNGETCOLORSP, &CA3::OnBnClickedBtngetcolorsp) ON_BN_CLICKED(IDC_BTNSETCOLORSP, &CA3::OnBnClickedBtnsetcolorsp) ON_BN_CLICKED(IDC_BTNGETSLEEPTIME, &CA3::OnBnClickedBtngetsleeptime) ON_BN_CLICKED(IDC_BTNSETSLEEPTIME, &CA3::OnBnClickedBtnsetsleeptime) ON_BN_CLICKED(IDC_BTNSETCLRMAXBRT, &CA3::OnBnClickedBtnsetclrmaxbrt) ON_BN_CLICKED(IDC_BTNSETGRYMAXBRT, &CA3::OnBnClickedBtnsetgrymaxbrt) ON_BN_CLICKED(IDC_BTNGETCLRMAXBRT, &CA3::OnBnClickedBtngetclrmaxbrt) ON_BN_CLICKED(IDC_BTNGETGRYMAXBRT, &CA3::OnBnClickedBtngetgrymaxbrt) ON_BN_CLICKED(IDC_BTNGETVERSION, &CA3::OnBnClickedBtngetversion) ON_BN_CLICKED(IDC_BTNSETSPEED, &CA3::OnBnClickedBtnsetspeed) ON_BN_CLICKED(IDC_BTNGETSPEED, &CA3::OnBnClickedBtngetspeed) END_MESSAGE_MAP() // CA3 消息处理程序 BOOL CA3::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 for (size_t i = 0; i < speedmodeMap.size(); i++) { m_cmbSpeedmode.InsertString(i, speedmodeMapString[i]); } return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void CA3::OnBnClickedBtngetsp() { // TODO: 在此添加控件通知处理程序代码 } void CA3::OnBnClickedBtnsetsp() { // TODO: 在此添加控件通知处理程序代码 } void CA3::OnBnClickedBtngetgraysp() { // TODO: 在此添加控件通知处理程序代码 OnGetOrSetSp(true, 0); } void CA3::OnBnClickedBtnsetgraysp() { // TODO: 在此添加控件通知处理程序代码 OnGetOrSetSp(false, 0); } void CA3::OnBnClickedBtngetuvsp() { // TODO: 在此添加控件通知处理程序代码 OnGetOrSetSp(true, 2); } void CA3::OnBnClickedBtnsetuvsp() { // TODO: 在此添加控件通知处理程序代码 OnGetOrSetSp(false, 2); } void CA3::OnBnClickedBtngetcolorsp() { // TODO: 在此添加控件通知处理程序代码 OnGetOrSetSp(true, 1); } void CA3::OnBnClickedBtnsetcolorsp() { OnGetOrSetSp(false, 1); } void CA3::OnGetOrSetSp(bool get, int type) { int sp; CString str_sp; auto parent = (CHuaGoCorrectDlg*)GetParent(); int itemid = type == 0 ? IDC_LBGRAYSP : (type == 1 ? IDC_LBCOLORSP : IDC_LBGUVSP); //IDC_LBCOLORSP if (parent->m_drv.get() && parent->m_drv->IsConnected()) { if (get) { parent->m_drv->GetSptime(type, sp); str_sp.Format(L"%d", sp); SetDlgItemText(itemid, str_sp); } else { GetDlgItemText(itemid, str_sp); USES_CONVERSION; std::string str(W2A(str_sp)); int value = atoi(str.c_str()); parent->m_drv->SetSptime(type, value); } } } void CA3::OnGetOrSetSleepTime(bool get, int type) { int sp; CString str_sp; auto parent = (CHuaGoCorrectDlg*)GetParent(); int itemid = type == 0 ? IDC_LBGRAYSP : (type == 1 ? IDC_LBCOLORSP : IDC_LBGUVSP); //IDC_LBCOLORSP if (parent->m_drv.get() && parent->m_drv->IsConnected()) { if (get) { parent->m_drv->GetSptime(type, sp); str_sp.Format(L"%d", sp); SetDlgItemText(itemid, str_sp); } else { GetDlgItemText(itemid, str_sp); USES_CONVERSION; std::string str(W2A(str_sp)); int value = atoi(str.c_str()); parent->m_drv->SetSptime(type, value); } } } void CA3::UpdateMaxBright(bool get, int id) { int sp; CString str_sp; auto parent = (CHuaGoCorrectDlg*)GetParent(); if (parent->m_drv.get() && parent->m_drv->IsConnected()) { if (get) { unsigned int val = 0; parent->m_drv->GetFlatMaxBright(id == IDC_LBCLRMAXBRT, val); str_sp.Format(L"%d", val); SetDlgItemText(id, str_sp); } else { GetDlgItemText(id, str_sp); USES_CONVERSION; std::string str(W2A(str_sp)); int value = atoi(str.c_str()); if (value <= 0) value = 180; parent->m_drv->SetFlatMaxBright(id == IDC_LBCLRMAXBRT, value); } } } void CA3::UpdateSleepTime(bool get) { int sp; CString str_sp; auto parent = (CHuaGoCorrectDlg*)GetParent(); if (parent->m_drv.get() && parent->m_drv->IsConnected()) { if (get) { parent->m_drv->GetSleepTime(sp); str_sp.Format(L"%d", sp); SetDlgItemText(IDC_LBSLEEPTIME, str_sp); } else { GetDlgItemText(IDC_LBSLEEPTIME, str_sp); USES_CONVERSION; std::string str(W2A(str_sp)); int value = atoi(str.c_str()); if (value <= 0) value = 60; parent->m_drv->SetSleepTime(value); } } } void CA3::OnBnClickedBtngetsleeptime() { UpdateSleepTime(true); } void CA3::OnBnClickedBtnsetsleeptime() { UpdateSleepTime(false); } void CA3::OnBnClickedBtnsetclrmaxbrt() { UpdateMaxBright(false, IDC_LBCLRMAXBRT); } void CA3::OnBnClickedBtnsetgrymaxbrt() { // TODO: 在此添加控件通知处理程序代码 UpdateMaxBright(false, IDC_LBGRYMAXBRT); } void CA3::OnBnClickedBtngetclrmaxbrt() { // TODO: 在此添加控件通知处理程序代码 UpdateMaxBright(true, IDC_LBCLRMAXBRT); } void CA3::OnBnClickedBtngetgrymaxbrt() { // TODO: 在此添加控件通知处理程序代码 UpdateMaxBright(true, IDC_LBGRYMAXBRT); } void CA3::OnBnClickedBtngetversion() { auto parent = (CHuaGoCorrectDlg*)GetParent(); if (parent != NULL) { if (parent->m_drv.get() && parent->m_drv->IsConnected()) { auto kversion = parent->m_drv->GetKernelVersion(); CString version(kversion.c_str()); SetDlgItemText(IDC_LBKERNEL_VERSION, version); } } } void CA3::OnBnClickedBtnsetspeed() { // TODO: 在此添加控件通知处理程序代码 updatespeedmode(false); } void CA3::OnBnClickedBtngetspeed() { // TODO: 在此添加控件通知处理程序代码 updatespeedmode(true); } void CA3::updatespeedmode(bool get) { auto parent = (CHuaGoCorrectDlg*)GetParent(); if (parent != NULL) { if (parent->m_drv.get() && parent->m_drv->IsConnected()) { int speedmode; if (get) { parent->m_drv->GetSpeedMode(speedmode, true); bool bfound = false; for (size_t i = 0; i < speedmodeMap.size(); i++) { if (speedmodeMap[i].Speedmode == speedmode) { m_cmbSpeedmode.SetCurSel(i); OnGetOrSetSp(true, 0);//更新灰度sp OnGetOrSetSp(true, 1);//更新彩色sp bfound = true; break; } } if (!bfound) MessageBox(L"未找到对应的速度模式!", L"提示", MB_OK | MB_ICONINFORMATION); } else { int cmbindex = m_cmbSpeedmode.GetCurSel(); if (cmbindex != -1) { auto t_speedmode = speedmodeMap[cmbindex]; parent->m_drv->GetSpeedMode(t_speedmode.Speedmode, false); parent->m_drv->SetSptime(0, t_speedmode.GraySp); parent->m_drv->SetSptime(1, t_speedmode.ColorSp); } } } else { MessageBox(L"未找到扫描仪!", L"提示", MB_OK | MB_ICONINFORMATION); } } }