// OffsetPropDlg.cpp : implementation file // #include "stdafx.h" #include "MSVC5conview.h" #include "OffsetPropDlg.h" #include "leadrastercontainercell.h" #include "leadmagnifyglassaction.h" #include "leadoffsetaction.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // COffsetPropDlg dialog COffsetPropDlg::COffsetPropDlg(CWnd* pParent /*=NULL*/) : CDialog(COffsetPropDlg::IDD, pParent) { //{{AFX_DATA_INIT(COffsetPropDlg) m_uCellIndex = 0; m_uSensitivity = 0; m_bCircleMouse = FALSE; m_uMaxCellIndex = 0; m_nXOffset = 0; m_nYOffset = 0; m_hIcon = NULL; //}}AFX_DATA_INIT } void COffsetPropDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(COffsetPropDlg) DDX_Control(pDX, IDC_ACTION_SEN_EDT, m_edtSensitivity); DDX_Control(pDX, IDC_OFFSETACTION_Y_EDT, m_edtYOffset); DDX_Control(pDX, IDC_OFFSETACTION_X_EDT, m_edtXOffset); DDX_Control(pDX, IDC_ACTION_CELLINDEX_EDT, m_edtCellIndex); DDX_Control(pDX, IDC_ACTION_UPKEY_COM, m_cmbUpKey); DDX_Control(pDX, IDC_ACTION_DOWNKEY_COM, m_cmbDownKey); DDX_Control(pDX, IDC_ACTION_CUR_BTN, m_ActionCursor); DDX_Control(pDX, IDC_ACTION_CELLINDEX_COM, m_cmbCell); DDX_Control(pDX, IDC_ACTION_MOD_COM, m_cmbModifier); DDX_Control(pDX, IDC_ACTION_RIGHTKEY_COM, m_cmbRightKey); DDX_Control(pDX, IDC_ACTION_LEFTKEY_COM, m_cmbLeftKey); DDX_Text(pDX, IDC_ACTION_CELLINDEX_EDT, m_uCellIndex); DDX_Text(pDX, IDC_ACTION_SEN_EDT, m_uSensitivity); DDX_Check(pDX, IDC_ACTION_CIRCLE_CHK, m_bCircleMouse); DDX_Text(pDX, IDC_OFFSETACTION_X_EDT, m_nXOffset); DDX_Text(pDX, IDC_OFFSETACTION_Y_EDT, m_nYOffset); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(COffsetPropDlg, CDialog) //{{AFX_MSG_MAP(COffsetPropDlg) ON_BN_CLICKED(IDC_ACTION_CUR_BTN, OnActionCurBtn) ON_BN_CLICKED(IDAPPLY, OnApply) ON_EN_CHANGE(IDC_ACTION_CELLINDEX_EDT, OnChangeActionCellindexEdt) ON_CBN_SELCHANGE(IDC_ACTION_CELLINDEX_COM, OnSelchangeActionCellindexCom) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // COffsetPropDlg message handlers void COffsetPropDlg::OnActionCurBtn() { CConViewApp * pTheApp = (CConViewApp *)AfxGetApp(); if(pTheApp->GetIconFileName(m_FileName, (this->GetActiveWindow())->m_hWnd)) { m_hIcon = LoadCursorFromFile(m_FileName); m_ActionCursor.SetIcon(m_hIcon); } } void COffsetPropDlg::OnApply() { CConViewApp * pTheApp = (CConViewApp *)AfxGetApp(); INT nVk; UINT uState = (8 >> (4 - m_cmbModifier.GetCurSel())); UpdateData(); m_pView->m_ConView.OffsetAction().SetCursor(pTheApp->hIconToIPictureDisp(m_hIcon)); m_pView->m_ConView.OffsetAction().SetCircularMouseMove(m_bCircleMouse); m_pView->m_ConView.OffsetAction().SetChange(m_uSensitivity); if(m_cmbCell.GetCurSel()) { INT nIndex; if (m_cmbCell.GetCurSel() == 1) nIndex = -1; else nIndex = m_uCellIndex; m_pView->m_ConView.OffsetAction().SetXOffset(m_nXOffset); m_pView->m_ConView.OffsetAction().SetYOffset(m_nYOffset); m_pView->m_ConView.OffsetAction().SetAction(nIndex, CONVIEW_ACTIONLEVEL_CELL); } nVk = pTheApp->GetVirtualKey(&m_cmbUpKey); if (nVk != 0) { m_pView->m_ConView.OffsetAction().SetKey(nVk); m_pView->m_ConView.OffsetAction().SetModifier(uState); m_pView->m_ConView.OffsetAction().SetKeyboardAction(CONVIEW_MOUSEMOVE_UP); } nVk = pTheApp->GetVirtualKey(&m_cmbDownKey); if (nVk != 0) { m_pView->m_ConView.OffsetAction().SetKey(nVk); m_pView->m_ConView.OffsetAction().SetModifier(uState); m_pView->m_ConView.OffsetAction().SetKeyboardAction(CONVIEW_MOUSEMOVE_DOWN); } nVk = pTheApp->GetVirtualKey(&m_cmbLeftKey); if (nVk != 0) { m_pView->m_ConView.OffsetAction().SetKey(nVk); m_pView->m_ConView.OffsetAction().SetModifier(uState); m_pView->m_ConView.OffsetAction().SetKeyboardAction(CONVIEW_MOUSEMOVE_LEFT); } nVk = pTheApp->GetVirtualKey(&m_cmbRightKey); if (nVk != 0) { m_pView->m_ConView.OffsetAction().SetKey(nVk); m_pView->m_ConView.OffsetAction().SetModifier(uState); m_pView->m_ConView.OffsetAction().SetKeyboardAction(CONVIEW_MOUSEMOVE_RIGHT); } m_pView->m_ConView.OffsetAction().SetAction(0, CONVIEW_ACTIONLEVEL_CONTAINER); } void COffsetPropDlg::OnOK() { OnApply(); CDialog::OnOK(); } BOOL COffsetPropDlg::OnInitDialog() { CDialog::OnInitDialog(); CConViewApp * pTheApp = (CConViewApp *)AfxGetApp(); INT nIndex = pTheApp->SearchForFirstSelectedCell(); nIndex = max(0, nIndex); m_pView->m_ConView.OffsetAction().GetAction(0, CONVIEW_ACTIONLEVEL_CONTAINER); m_edtSensitivity.SetNumericEditBox(0, 100, 1, 0, 0); if(m_pView->m_ConView.GetCellCount()) { m_pView->m_ConView.OffsetAction().GetAction(nIndex, CONVIEW_ACTIONLEVEL_CELL); m_uCellIndex = nIndex; m_nXOffset = m_pView->m_ConView.OffsetAction().GetXOffset(); m_nYOffset = m_pView->m_ConView.OffsetAction().GetYOffset(); m_edtCellIndex.SetNumericEditBox(0, m_pView->m_ConView.GetCellCount() - 1, 1, 0, 0); m_uMaxCellIndex = m_pView->m_ConView.GetCellCount() - 1; m_edtXOffset.SetNumericEditBox( -1000000, 1000000, 1, 0, 0); m_edtYOffset.SetNumericEditBox( -1000000, 1000000, 1, 0, 0); } m_cmbCell.AddString(TEXT("None")); m_cmbCell.AddString(TEXT("All")); m_cmbCell.AddString(TEXT("Custom")); m_cmbCell.SetCurSel(0); if(!m_pView->m_ConView.GetCellCount()) { ::EnableWindow((this->GetDlgItem(IDC_ACTION_CELLINDEX_COM))->m_hWnd, FALSE); } ::EnableWindow(this->GetDlgItem(IDC_ACTION_CELLINDEX_EDT)->m_hWnd, FALSE); ::EnableWindow(this->GetDlgItem(IDC_OFFSETACTION_X_EDT)->m_hWnd, FALSE); ::EnableWindow(this->GetDlgItem(IDC_OFFSETACTION_Y_EDT)->m_hWnd, FALSE); pTheApp->AddSupString(&m_cmbModifier); pTheApp->AddVirtualKeyString(&m_cmbUpKey); pTheApp->AddVirtualKeyString(&m_cmbDownKey); pTheApp->AddVirtualKeyString(&m_cmbLeftKey); pTheApp->AddVirtualKeyString(&m_cmbRightKey); m_pView->m_ConView.OffsetAction().GetKeyboardAction(CONVIEW_MOUSEMOVE_UP, 0); pTheApp->GetKeyboardInfo(&m_cmbUpKey, &m_cmbModifier, m_pView->m_ConView.OffsetAction().GetKey(), m_pView->m_ConView.OffsetAction().GetModifier()); m_pView->m_ConView.OffsetAction().GetKeyboardAction(CONVIEW_MOUSEMOVE_DOWN, 0); pTheApp->GetKeyboardInfo(&m_cmbDownKey, &m_cmbModifier, m_pView->m_ConView.OffsetAction().GetKey(), m_pView->m_ConView.OffsetAction().GetModifier()); m_pView->m_ConView.OffsetAction().GetKeyboardAction(CONVIEW_MOUSEMOVE_LEFT, 0); pTheApp->GetKeyboardInfo(&m_cmbLeftKey, &m_cmbModifier, m_pView->m_ConView.OffsetAction().GetKey(), m_pView->m_ConView.OffsetAction().GetModifier()); m_pView->m_ConView.OffsetAction().GetKeyboardAction(CONVIEW_MOUSEMOVE_RIGHT, 0); pTheApp->GetKeyboardInfo(&m_cmbRightKey, &m_cmbModifier, m_pView->m_ConView.OffsetAction().GetKey(), m_pView->m_ConView.OffsetAction().GetModifier()); m_bCircleMouse = m_pView->m_ConView.OffsetAction().GetCircularMouseMove(); m_uSensitivity = m_pView->m_ConView.OffsetAction().GetChange(); m_hIcon = pTheApp->IPictureDispTohIcon((IPictureDisp *)(m_pView->m_ConView.OffsetAction().GetCursor().m_lpDispatch)); m_ActionCursor.SetIcon( m_pView->m_ConView.OffsetAction().GetCursor() ? m_hIcon:LoadCursor(NULL, IDC_ARROW)); UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void COffsetPropDlg::OnChangeActionCellindexEdt() { CConViewApp * pTheApp = (CConViewApp *)AfxGetApp(); UpdateData(); m_pView->m_ConView.OffsetAction().GetAction(m_uCellIndex, CONVIEW_ACTIONLEVEL_CELL); m_nXOffset = m_pView->m_ConView.OffsetAction().GetXOffset(); m_nYOffset = m_pView->m_ConView.OffsetAction().GetYOffset(); UpdateData(FALSE); } void COffsetPropDlg::OnSelchangeActionCellindexCom() { INT nRet = m_cmbCell.GetCurSel(); GetDlgItem(IDC_ACTION_CELLINDEX_EDT)->EnableWindow(nRet == 2); GetDlgItem(IDC_OFFSETACTION_X_EDT)->EnableWindow(nRet != 0); GetDlgItem(IDC_OFFSETACTION_Y_EDT)->EnableWindow(nRet != 0); }