// ActionPropDlg.cpp : implementation file // #include "stdafx.h" #include "imgconvw.h" #include "ActionPropDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CActionPropDlg dialog CActionPropDlg::CActionPropDlg(LImageViewer *pImageViewer, CWnd* pParent /*=NULL*/) : CDialog(CActionPropDlg::IDD, pParent) { //{{AFX_DATA_INIT(CActionPropDlg) m_pImageViewer = pImageViewer; //}}AFX_DATA_INIT } void CActionPropDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CActionPropDlg) DDX_Control(pDX, IDCMB_ACTION_APPLYMETHOD, m_cmbApplyMethod); DDX_Control(pDX, IDCMB_ACTION_APPLYON, m_cmbApplyOn); DDX_Control(pDX, IDCMB_ACTION_MOUSE, m_cmbMouseButton); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CActionPropDlg, CDialog) //{{AFX_MSG_MAP(CActionPropDlg) ON_BN_CLICKED(IDAPPLY, OnApply) ON_CBN_SELCHANGE(IDCMB_ACTION_APPLYON, OnSelChangeActionApplyOn) ON_CBN_SELCHANGE(IDCMB_ACTION_MOUSE, OnSelChangeActionMouse) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CActionPropDlg message handlers BOOL CActionPropDlg::OnInitDialog() { CDialog::OnInitDialog(); switch(m_uAction) { case CONTAINER_ACTION_ALPHA: SetWindowText(TEXT("Set Alpha Action")); break; case CONTAINER_ACTION_OFFSET: SetWindowText(TEXT("Set Offset Action")); break; case CONTAINER_ACTION_MAG: SetWindowText(TEXT("Set Magnify Glass Action")); break; case CONTAINER_ACTION_SCALE: SetWindowText(TEXT("Set Scale Action")); break; case CONTAINER_ACTION_STACK: SetWindowText(TEXT("Set Stack Action")); break; case CONTAINER_ACTION_WINDOWLEVEL: default : SetWindowText(TEXT("Set Window Level Action")); break; } m_cmbMouseButton.AddString(TEXT("None")); m_cmbMouseButton.AddString(TEXT("Left Button")); m_cmbMouseButton.AddString(TEXT("Right Button")); m_cmbMouseButton.AddString(TEXT("Middle Button")); if (m_uAction != CONTAINER_ACTION_MAG) m_cmbMouseButton.AddString(TEXT("Wheel")); m_cmbMouseButton.SetCurSel(m_arrCurrentActionButton[m_uAction]); m_cmbApplyOn.AddString(TEXT("Active Only")); m_cmbApplyOn.AddString(TEXT("Selected Cells")); m_cmbApplyOn.AddString(TEXT("All Cells")); m_cmbApplyMethod.AddString(TEXT("Real time")); m_cmbApplyMethod.AddString(TEXT("On mouse release")); int nCount = m_pImageViewer->GetCellCount(0); BOOL bEnable = (((m_uAction != CONTAINER_ACTION_MAG) && (nCount > 1)) && m_cmbMouseButton.GetCurSel()); m_cmbApplyOn.SetCurSel(m_arrCurrentActionFlags[m_uAction] & 0xf); m_cmbApplyMethod.SetCurSel((m_arrCurrentActionFlags[m_uAction] & 0xf0) >> 4); m_cmbApplyOn.EnableWindow(bEnable); m_cmbApplyMethod.EnableWindow(bEnable && (m_cmbApplyOn.GetCurSel() && (m_cmbMouseButton.GetCurSel() != 4))); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CActionPropDlg::OnOK() { OnApply(); CDialog::OnOK(); } void CActionPropDlg::OnApply() { L_UINT uFlags = (m_cmbApplyMethod.GetCurSel()<<4) | m_cmbApplyOn.GetCurSel(); L_INT nMouse = m_cmbMouseButton.GetCurSel(); if ((nMouse != (L_INT)m_arrCurrentActionButton[m_uAction]) || (uFlags != m_arrCurrentActionFlags[m_uAction])) { L_INT nI = 1; m_pImageViewer->SetAction(m_uAction, 0, 0); while(nI < 7) { if ((L_INT)m_arrCurrentActionButton[nI] == nMouse) { m_arrCurrentActionButton[nI] = 0; m_arrCurrentActionFlags[nI] = 0; nI = 7; } else nI++; } m_pImageViewer->SetAction(m_uAction, nMouse, uFlags); m_arrCurrentActionButton[m_uAction] = nMouse; m_arrCurrentActionFlags[m_uAction] = uFlags; } m_pImageViewer->SetAction(m_uAction, nMouse, uFlags); } void CActionPropDlg::OnSelChangeActionApplyOn() { int nMouseSel = (m_cmbMouseButton.GetCurSel() != 4) && m_cmbMouseButton.GetCurSel(); int nApplyOnSel = !m_cmbApplyOn.GetCurSel(); int nCellCount = m_pImageViewer->GetCellCount(0); if ((nCellCount <= 1) || (m_uAction == CONTAINER_ACTION_MAG)) return; m_cmbApplyMethod.EnableWindow(!nApplyOnSel && nMouseSel); } void CActionPropDlg::OnSelChangeActionMouse() { int nMouseSel = (m_cmbMouseButton.GetCurSel() != 4) && m_cmbMouseButton.GetCurSel(); int nApplyOnSel = !m_cmbApplyOn.GetCurSel(); int nCellCount = m_pImageViewer->GetCellCount(0); if ((nCellCount <= 1) || (m_uAction == CONTAINER_ACTION_MAG)) return; m_cmbApplyOn.EnableWindow(m_cmbMouseButton.GetCurSel()); m_cmbApplyMethod.EnableWindow(!nApplyOnSel && nMouseSel); }