// CImageProcPage.cpp: 实现文件 // #include "stdafx.h" #include "CImageProcPage.h" #include "afxdialogex.h" #include "resource.h" #include static std::vector filters = { _T("不除色"), _T("除红色"), _T("除绿色"), _T("除蓝色"), _T("红色增强"), _T("绿色增强"), _T("蓝色增强") }; static std::vector sharpens = { _T("无"), _T("锐化"), _T("进一步锐化"), _T("模糊"), _T("进一步模糊") }; // CImageProcPage 对话框 IMPLEMENT_DYNAMIC(CImageProcPage, CTabPageSSL) CImageProcPage::CImageProcPage(CWnd* pParent /*=nullptr*/) : CTabPageSSL(IDD_PAGEIMGPROC, pParent) , m_ckbFillBlack(FALSE) , m_ckbAutoDeskrew(FALSE) , m_ckbMultioutput(FALSE) , m_ckbRemoveHole(FALSE) , m_ckbDetachNoise(FALSE) , m_ckbHSVCorrect(FALSE) , indent(5) , noise(8) ,threshold(40) ,is_bw(false) { } CImageProcPage::~CImageProcPage() { } void CImageProcPage::ImageProcPageUpdate(int val,int twss, int cmduplexsel,bool is_Crop) { this->twss = twss; this->cmduplexsel = cmduplexsel; CComboBox* m_temp = (CComboBox*)(GetDlgItem(IDC_CMBFILTER)); CButton* t_chMultiOutput = (CButton*)(GetDlgItem(IDC_CKMULTIOUTPUT)); CComboBox* m_temp_sharpen = (CComboBox*)(GetDlgItem(IDC_CMBSHARPEN)); is_bw = val == 2 ? true : false; this->is_crop = is_Crop; if (((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck() || is_crop) ((CButton*)GetDlgItem(IDC_ADVANCEDSET))->EnableWindow(true); else { ((CButton*)GetDlgItem(IDC_ADVANCEDSET))->EnableWindow(false); } if (val == 0) GetDlgItem(IDC_CKHSVCORRECT)->EnableWindow(TRUE); else { GetDlgItem(IDC_CKHSVCORRECT)->EnableWindow(FALSE); ((CButton*)GetDlgItem(IDC_CKHSVCORRECT))->SetCheck(FALSE); } if (0 == val||val==3)//彩色 { m_temp->SetCurSel(0); m_temp->EnableWindow(FALSE); //t_chMultiOutput->SetCheck(TRUE); t_chMultiOutput->EnableWindow(TRUE); } else { m_temp->EnableWindow(TRUE); t_chMultiOutput->SetCheck(FALSE); t_chMultiOutput->EnableWindow(FALSE); } if (val == 2) { ((CButton*)GetDlgItem(IDC_CHECKDETACHNOISE))->EnableWindow(true); //m_temp->SetCurSel(4); } else { ((CButton*)GetDlgItem(IDC_CHECKDETACHNOISE))->SetCheck(false); ((CButton*)GetDlgItem(IDC_CHECKDETACHNOISE))->EnableWindow(false); m_edit_detachnoise.EnableWindow(false); m_slider_detachnoise.EnableWindow(false); } #ifndef G300 if (twss == 19 || twss == 20 || (cmduplexsel == 4) || ((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck()) #else if (twss == 8 || (cmduplexsel == 4) || ((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck()) #endif // !G300 { ((CButton*)GetDlgItem(IDC_CKCROPMODEL))->SetCheck(false); ((CButton*)GetDlgItem(IDC_CKCROPMODEL))->EnableWindow(false); } else ((CButton*)GetDlgItem(IDC_CKCROPMODEL))->EnableWindow(true); } void CImageProcPage::ImageAutoDescrewUpdate(int val) { //CButton* t_chAutoDeskrew = (CButton*)(GetDlgItem(IDC_CKAUTODESKREW)); //if (16 == val) //{ // t_chAutoDeskrew->SetCheck(TRUE); //} } void CImageProcPage::DoDataExchange(CDataExchange* pDX) { CTabPageSSL::DoDataExchange(pDX); DDX_Control(pDX, IDC_SLDOUTHOLE, m_slider_hole); DDX_Control(pDX, IDC_EDIT_HOLE, m_edit_hole); DDX_Control(pDX, IDC_EDITDETACHNOISE, m_edit_detachnoise); DDX_Control(pDX, IDC_SLIDERDETACHNOISE, m_slider_detachnoise); DDX_Control(pDX, IDC_CMBFILTER, m_cmBoxFilter); DDX_Control(pDX, IDC_CMBSHARPEN, m_cmBoxSharpen); DDX_Check(pDX, IDC_CKFILLBLACKRECT, m_ckbFillBlack); DDX_Check(pDX, IDC_CKAUTODESKREW, m_ckbAutoDeskrew); DDX_Check(pDX, IDC_CKMULTIOUTPUT, m_ckbMultioutput); DDX_Check(pDX, IDC_CKREMOVEHOLE, m_ckbRemoveHole); DDX_Check(pDX, IDC_CHECKDETACHNOISE,m_ckbDetachNoise); DDX_Check(pDX, IDC_CKHSVCORRECT, m_ckbHSVCorrect); } BOOL CImageProcPage::OnInitDialog() { CTabPageSSL::OnInitDialog(); m_edit_hole.SetSlideLink(this, IDC_SLDOUTHOLE); m_edit_hole.SetParams(0.01, 0.50, 10, _T("%0.2f"),20); m_edit_hole.SetValue(0.10); m_edit_detachnoise.SetSlideLink(this, IDC_SLIDERDETACHNOISE); m_edit_detachnoise.SetParams(10, 50, 10); m_edit_detachnoise.SetValue(detachnoise); ((CButton*)GetDlgItem(IDC_CHECKDETACHNOISE))->SetCheck(is_detachnoise); for (int i = 0; i < filters.size(); i++) { m_cmBoxFilter.InsertString(i, filters[i]); } for (int i = 0; i < sharpens.size(); i++) { m_cmBoxSharpen.InsertString(i, sharpens[i]); } return true; } BEGIN_MESSAGE_MAP(CImageProcPage, CTabPageSSL) ON_BN_CLICKED(IDC_CKREMOVEHOLE, &CImageProcPage::OnCtrlChange) ON_BN_CLICKED(IDC_ADVANCEDSET, &CImageProcPage::OnBnClickedAdvancedset) ON_BN_CLICKED(IDC_CKFILLBLACKRECT, &CImageProcPage::OnBnClickedCkfillblackrect) ON_BN_CLICKED(IDC_CKAUTODESKREW, &CImageProcPage::OnBnClickedCkautodeskrew) ON_BN_CLICKED(IDC_CHECKDETACHNOISE, &CImageProcPage::OnBnClickedCheckdetachnoise) END_MESSAGE_MAP() void CImageProcPage::EnableOutHoleCheckChanged(BOOL enable) { UpdateData(); ((CButton*)GetDlgItem(IDC_EDIT_HOLE))->SetCheck(enable); GetDlgItem(IDC_EDIT_HOLE)->EnableWindow(enable); GetDlgItem(IDC_SLDOUTHOLE)->EnableWindow(enable); GetDlgItem(IDC_EDIT_HOLE)->EnableWindow(enable); } void CImageProcPage::SetOutHoleValue(int value) { m_edit_hole.SetValue(value); } void CImageProcPage::SetMultiOutputEnable(int pixtype, bool enable) { switch (pixtype) { case 2://彩色 ((CButton*)GetDlgItem(IDC_CKMULTIOUTPUT))->SetCheck(enable); ((CButton*)GetDlgItem(IDC_CKMULTIOUTPUT))->EnableWindow(TRUE); break; case 0://灰度 黑白 case 1: ((CButton*)GetDlgItem(IDC_CKMULTIOUTPUT))->SetCheck(FALSE); ((CButton*)GetDlgItem(IDC_CKMULTIOUTPUT))->EnableWindow(FALSE); break; default: break; } } void CImageProcPage::OnCtrlChange() { // TODO: 在此添加控件通知处理程序代码 UpdateData(); m_edit_hole.EnableWindow(m_ckbRemoveHole); m_slider_hole.EnableWindow(m_ckbRemoveHole); } void CImageProcPage::OnBnClickedAdvancedset() { // TODO: 在此添加控件通知处理程序代码 CAdvancedDLG cb(indent, noise, threshold,is_convex,((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck(),this); cb.DoModal(); noise= cb.m_Slider_noise.m_iPosition; indent = cb.m_Slider_indent.m_iPosition; threshold = cb.m_Slider_threshold.m_iPosition; is_convex = cb.is_convex; } void CImageProcPage::OnBnClickedCkfillblackrect() { // TODO: 在此添加控件通知处理程序代码 if(((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck()|| ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck()||is_crop) ((CButton*)GetDlgItem(IDC_ADVANCEDSET))->EnableWindow(true); else { ((CButton*)GetDlgItem(IDC_ADVANCEDSET))->EnableWindow(false); } #ifndef G300 if (twss == 19 || twss == 20 || (cmduplexsel == 4) || ((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck()) #else if (twss == 8|| (cmduplexsel == 4) || ((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck()) #endif // !G300 { ((CButton*)GetDlgItem(IDC_CKCROPMODEL))->SetCheck(false); ((CButton*)GetDlgItem(IDC_CKCROPMODEL))->EnableWindow(false); } else ((CButton*)GetDlgItem(IDC_CKCROPMODEL))->EnableWindow(true); } void CImageProcPage::OnBnClickedCkautodeskrew() { // TODO: 在此添加控件通知处理程序代码 if (((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck() || is_crop) ((CButton*)GetDlgItem(IDC_ADVANCEDSET))->EnableWindow(true); else { ((CButton*)GetDlgItem(IDC_ADVANCEDSET))->EnableWindow(false); } #ifndef G300 if (twss == 19 || twss == 20 || (cmduplexsel == 4) || ((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck()) #else if (twss == 8 || (cmduplexsel == 4) || ((CButton*)GetDlgItem(IDC_CKFILLBLACKRECT))->GetCheck() || ((CButton*)GetDlgItem(IDC_CKAUTODESKREW))->GetCheck()) #endif // !G300 { ((CButton*)GetDlgItem(IDC_CKCROPMODEL))->SetCheck(false); ((CButton*)GetDlgItem(IDC_CKCROPMODEL))->EnableWindow(false); } else ((CButton*)GetDlgItem(IDC_CKCROPMODEL))->EnableWindow(true); } void CImageProcPage::OnBnClickedCheckdetachnoise() { // TODO: 在此添加控件通知处理程序代码 UpdateData(); m_ckbDetachNoise = m_ckbDetachNoise && is_bw; m_edit_detachnoise.EnableWindow(m_ckbDetachNoise); m_slider_detachnoise.EnableWindow(m_ckbDetachNoise); }