// CImageViewDlg.cpp: 实现文件 // #include "pch.h" #include "resource.h" #include "CImageViewDlg.h" #include "afxdialogex.h" // CImageViewDlg 对话框 IMPLEMENT_DYNAMIC(CImageViewDlg, CDialogEx) CImageViewDlg::CImageViewDlg(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_CImageViewDlg, pParent) { m_pImageView = nullptr; m_bBtnVisable = false; m_bStrFlag = FALSE; m_strNote = ""; } CImageViewDlg::~CImageViewDlg() { } BOOL CImageViewDlg::OnInitDialog() { CDialogEx::OnInitDialog(); m_pImageView = new CImageView(); m_pImageView->SubclassDlgItem(IDC_STATIC_IMG, this); m_pImageView->SetImageData(m_pdata, m_nwidth, m_nheight, 16); CString strShow; strShow.Format("%d", ShowAllAverage(m_pdata, m_nwidth, m_nheight)); m_editAllAverage.SetWindowText(strShow); if (m_bStrFlag) { m_static_errornote.SetWindowText(m_strNote); m_btn_Accept.EnableWindow(FALSE); } else { m_strNote.Format("DV is Advisable"); m_static_errornote.SetWindowText(m_strNote); } if (!m_bBtnVisable) { CString strclose = "close"; m_btn_Accept.SetWindowText(strclose); m_btn_Reject.ShowWindow(SW_HIDE); m_static_errornote.ShowWindow(SW_HIDE); } m_bBtnVisable = true; return TRUE; } void CImageViewDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT_ALL_AVERAGE, m_editAllAverage); DDX_Control(pDX, IDC_EDIT_ROI_AVERAGE, m_edtROIAverage); DDX_Control(pDX, IDC_STATIC_ERRORNOTE, m_static_errornote); DDX_Control(pDX, IDC_BUTTON_ACCEPT, m_btn_Accept); DDX_Control(pDX, IDC_BUTTON_REJECT, m_btn_Reject); } BEGIN_MESSAGE_MAP(CImageViewDlg, CDialogEx) ON_MESSAGE(MSG_RETANGE, UpDataAverage) ON_BN_CLICKED(IDC_BUTTON_ACCEPT, &CImageViewDlg::OnBnClickedButtonAccept) ON_BN_CLICKED(IDC_BUTTON_REJECT, &CImageViewDlg::OnBnClickedButtonReject) END_MESSAGE_MAP() // CImageViewDlg 消息处理程序 LRESULT CImageViewDlg::UpDataAverage(WPARAM wParam, LPARAM lParam) { CString strShow; strShow.Format("%d", *(int*)lParam); m_edtROIAverage.SetWindowText(strShow); return 0; } int CImageViewDlg::ShowAllAverage(unsigned short* data, int width, int height) { int all = width * height; double total = 0; for (int i = 0; i < all; ++i) { total += (data[i]); } return total / all; } int CImageViewDlg::ShowROIAverage(unsigned short* data, int width, int height, int left, int top, int right, int bottom) { int average = 0; double total = 0; int count = 0; for (int i = top; i < bottom; ++i) { for (int j = left; j < right; ++j) { total += data[i * width + j]; count++; } } average = total / count; return average; } void CImageViewDlg::SetBtnVisable(bool bVisable) { m_bBtnVisable = bVisable; } void CImageViewDlg::OnBnClickedButtonAccept() { if (m_pImageView) { delete m_pImageView; m_pImageView = NULL; } delete[] m_pdata; m_pdata = NULL; CDialog::OnOK(); } void CImageViewDlg::OnBnClickedButtonReject() { if (m_pImageView) { delete m_pImageView; m_pImageView = NULL; } CDialog::OnCancel(); }