// ImageProcess.cpp: 实现文件 // #include "stdafx.h" #include "ImageProcess.h" #include "afxdialogex.h" #include "resource.h" //#include "UI_INI.h" // ImageProcess 对话框0 //extern CUI_INI* m_pUI_INI; IMPLEMENT_DYNAMIC(ImageProcess, CDialog) ImageProcess::ImageProcess(CWnd* pParent /*=nullptr*/) : CDialog(IDD_DIALOG_PAGEIMGPROC, pParent) { } ImageProcess::~ImageProcess() { } void ImageProcess::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_CMBFILTER, m_cmBoxFilter); DDX_Control(pDX, IDC_SLDEAGEENHANCE, m_sldEageEnhance); DDX_Control(pDX, IDC_SLDCHARENHACE, m_sldCharEnhance); DDX_Control(pDX,IDC_SLDOUTHOLE,m_sldOutHole); } BEGIN_MESSAGE_MAP(ImageProcess, CDialog) ON_WM_HSCROLL() ON_BN_CLICKED(IDC_CKREMOVEHOLE, &ImageProcess::OnBnClickedCkremovehole) END_MESSAGE_MAP() // ImageProcess 消息处理程序 BOOL ImageProcess::OnInitDialog() { CDialog::OnInitDialog(); OnInitcmBoxFilter(0); OnInitsldCharEnhance(4); OnInitsldEageEnhance(0); OnInitsldOutHole(10); // TODO: 在此添加额外的初始化 return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void ImageProcess::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: 在此添加消息处理程序代码和/或调用默认值 UpdateData(TRUE); switch(pScrollBar->GetDlgCtrlID()) { case IDC_SLDOUTHOLE: { CSliderCtrl *slc_C = (CSliderCtrl*)GetDlgItem(IDC_SLDOUTHOLE); int valueC = slc_C->GetPos(); double outv=valueC/100.0; char strC[10]; sprintf(strC,"%0.2f",outv); SetDlgItemText(IDC_LBOUTHOLEVALUE, strC); break; } case IDC_SLDCHARENHACE: break; default: break; } CDialog::OnHScroll(nSBCode, nPos, pScrollBar); UpdateData(FALSE); } void ImageProcess::OnInitcmBoxFilter(int selectIndex) { m_cmBoxFilter.InsertString(0,_T("不除色")); m_cmBoxFilter.InsertString(1, _T("除红色")); m_cmBoxFilter.InsertString(2, _T("除绿色")); m_cmBoxFilter.InsertString(3, _T("除蓝色")); m_cmBoxFilter.InsertString(4, _T("红色增强")); m_cmBoxFilter.InsertString(5, _T("绿色增强")); m_cmBoxFilter.InsertString(6, _T("蓝色增强")); m_cmBoxFilter.SetCurSel(selectIndex); } void ImageProcess::OnInitsldEageEnhance(int selectIndex) { m_sldEageEnhance.SetRange(-2,2); m_sldEageEnhance.SetTicFreq(1); m_sldEageEnhance.SetPos(selectIndex); } void ImageProcess::OnInitsldCharEnhance(int selectIndex) { m_sldCharEnhance.SetRange(1, 7); m_sldCharEnhance.SetTicFreq(1); m_sldCharEnhance.SetPos(selectIndex); } void ImageProcess::OnInitsldOutHole(int selectIndex) { m_sldOutHole.SetRange(1,50); m_sldOutHole.SetTicFreq(5); m_sldOutHole.SetPos(selectIndex); } void ImageProcess::OnBnClickedCkremovehole() { // TODO: 在此添加控件通知处理程序代码 int checked= ((CButton*)GetDlgItem(IDC_CKREMOVEHOLE))->GetCheck(); EnableOutHoleCheckChanged(checked); } void ImageProcess::EnableOutHoleCheckChanged(BOOL enable) { ((CButton*)GetDlgItem(IDC_CKREMOVEHOLE))->SetCheck(enable); ((CStatic*) GetDlgItem(IDC_LBOUTHOLEVALUE))->EnableWindow(enable==1?TRUE:FALSE); ((CSliderCtrl*)GetDlgItem(IDC_SLDOUTHOLE))->EnableWindow(enable==1?TRUE:FALSE); ((CStatic*)GetDlgItem(IDC_LBSEARCHAREA))->EnableWindow(enable==1?TRUE:FALSE); } void ImageProcess::SetOutHoleValue(int value) { ((CSliderCtrl*)GetDlgItem(IDC_SLDOUTHOLE))->SetPos(value); CString lbstr; lbstr.Format("%0.2f",value/100.0); ((CStatic*)GetDlgItem(IDC_LBOUTHOLEVALUE))->SetWindowText(lbstr.GetBuffer()); } void ImageProcess::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; } }