// 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_ckbHSVCorrect(FALSE) { } CImageProcPage::~CImageProcPage() { } void CImageProcPage::ImageProcPageUpdate(int val) { CComboBox* m_temp = (CComboBox*)(GetDlgItem(IDC_CMBFILTER)); CButton* t_chMultiOutput = (CButton*)(GetDlgItem(IDC_CKMULTIOUTPUT)); CComboBox* m_temp_sharpen = (CComboBox*)(GetDlgItem(IDC_CMBSHARPEN)); int ival = (val == 0 ? 0 : (val == 1 ? 1 : 2)); if (0 == ival)//彩色 { m_temp->SetCurSel(0); m_temp->EnableWindow(FALSE); t_chMultiOutput->SetCheck(FALSE); t_chMultiOutput->EnableWindow(TRUE); } else { m_temp->SetCurSel(0); m_temp->EnableWindow(TRUE); t_chMultiOutput->SetCheck(FALSE); t_chMultiOutput->EnableWindow(FALSE); } //bool enabele = ival <= 1;//彩色或灰度 //if (!enabele) { // m_temp_sharpen->SetCurSel(0); //} //m_temp_sharpen->EnableWindow(enabele); } 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_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_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")); m_edit_hole.SetValue(0.10); 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) 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); }