// ZoomViewOptionsDlg.cpp : implementation file // #include "stdafx.h" #include "ZoomView.h" #include "ZoomViewOptionsDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CZoomViewOptionsDlg dialog CZoomViewOptionsDlg::CZoomViewOptionsDlg(ILEADRasterZoomView * pZoomView, CWnd* pParent) : CDialog(CZoomViewOptionsDlg::IDD, pParent) { m_ZoomViewBorderStyle = 0; if (pZoomView) { pZoomView->QueryInterface(IID_ILEADRasterZoomView, (void**)&m_pZoomView); } } CZoomViewOptionsDlg::~CZoomViewOptionsDlg() { m_pZoomView->Release(); } void CZoomViewOptionsDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CZoomViewOptionsDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CZoomViewOptionsDlg, CDialog) //{{AFX_MSG_MAP(CZoomViewOptionsDlg) ON_BN_CLICKED(IDBTN_ZOOMVIEW_SRCCOLOR, OnZoomViewSrcColor) ON_CBN_SELCHANGE(IDCMB_ZOOMVIEW_SRCAPPEARANCE, OnSrcAppearanceChange) ON_CBN_SELCHANGE(IDCMB_ZOOMVIEW_SRCPEN, OnZoomViewSrcPenChange) ON_BN_CLICKED(IDBTN_ZOOMVIEW_DSTCOLOR, OnZoomViewDstColor) ON_CBN_SELCHANGE(IDCMB_ZOOMVIEW_DSTPEN, OnZoomViewDstPenChange) ON_BN_CLICKED(IDCHK_ZOOMVIEW_CALLOUTS, OnZoomViewCallouts) ON_CBN_SELCHANGE(IDCMB_ZOOMVIEW_CALLOUTPEN, OnZoomViewCalloutPenChange) ON_WM_DRAWITEM() ON_BN_CLICKED(IDBTN_ZOOMVIEW_CALLOUTCOLOR, OnZoomviewCalloutcolor) ON_EN_KILLFOCUS(IDEDT_ZOOMVIEW_ZOOMFACTOR, OnKillFocusZoomfactor) ON_CBN_SELCHANGE(IDCMB_ZOOMVIEW_DSTAPPEARANCE, OnSelChangeDstAppearance) ON_CBN_SELCHANGE(IDCMB_ZOOMVIEW_DSTBORDERSTYLE, OnSelChangeDstBorderStyle) ON_CBN_SELCHANGE(IDCMB_ZOOMVIEW_DSTSHAPE, OnSelChangeDstShape) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CZoomViewOptionsDlg message handlers BOOL CZoomViewOptionsDlg::OnInitDialog() { CDialog::OnInitDialog(); { FillPenCombo(IDCMB_ZOOMVIEW_SRCPEN, m_pZoomView->SrcPenStyle); FillPenCombo(IDCMB_ZOOMVIEW_DSTPEN, m_pZoomView->PenStyle); FillPenCombo(IDCMB_ZOOMVIEW_CALLOUTPEN, m_pZoomView->CalloutPenStyle); FillBorderStyleCombo(IDCMB_ZOOMVIEW_DSTBORDERSTYLE, m_pZoomView->BorderStyle); FillSrcAppearanceCombo(IDCMB_ZOOMVIEW_SRCAPPEARANCE,m_pZoomView->SrcBorderStyle); FillDstAppearanceCombo(IDCMB_ZOOMVIEW_DSTAPPEARANCE, m_pZoomView->BorderStyle); FillShapeCombo(IDCMB_ZOOMVIEW_DSTSHAPE, m_pZoomView->BorderStyle); if(m_pZoomView->SrcBorderStyle == SOURCE_BORDERSTYLE_3D) { GetDlgItem(IDCMB_ZOOMVIEW_SRCPEN)->EnableWindow(FALSE); GetDlgItem(IDSTC_ZOOMVIEW_SRCPEN)->EnableWindow(FALSE); GetDlgItem(IDBTN_ZOOMVIEW_SRCCOLOR)->EnableWindow(FALSE); GetDlgItem(IDSTC_ZOOMVIEW_SRCCOLOR)->EnableWindow(FALSE); } if(m_pZoomView->EnableCallouts) { CheckDlgButton(IDCHK_ZOOMVIEW_CALLOUTS, BM_SETCHECK); } GetDlgItem(IDSTC_ZOOMVIEW_CALLOUTPEN)->EnableWindow(m_pZoomView->EnableCallouts); GetDlgItem(IDCMB_ZOOMVIEW_CALLOUTPEN)->EnableWindow(m_pZoomView->EnableCallouts); GetDlgItem(IDSTC_ZOOMVIEW_CALLOUTCOLOR)->EnableWindow(m_pZoomView->EnableCallouts); GetDlgItem(IDBTN_ZOOMVIEW_CALLOUTCOLOR)->EnableWindow(m_pZoomView->EnableCallouts); SetDlgItemInt (IDEDT_ZOOMVIEW_ZOOMFACTOR, m_pZoomView->ZoomFactor, TRUE); } InitDstCombo(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CZoomViewOptionsDlg::OnOK() { int nValue; UpdateData(); nValue = (int)GetDlgItemInt(IDEDT_ZOOMVIEW_ZOOMFACTOR, NULL, FALSE); m_pZoomView->BorderStyle = 0; m_pZoomView->BorderStyle |= GetCurSelValue(IDCMB_ZOOMVIEW_DSTSHAPE); m_pZoomView->BorderStyle |= GetCurSelValue(IDCMB_ZOOMVIEW_DSTBORDERSTYLE); m_pZoomView->BorderStyle |= GetCurSelValue(IDCMB_ZOOMVIEW_DSTAPPEARANCE); m_pZoomView->ZoomFactor = ValidateZoomFactor(nValue); UpdateData(FALSE); CDialog::OnOK(); } void CZoomViewOptionsDlg :: FillPenCombo(int id, int nPen) { CComboBox *pcmbTemp; pcmbTemp = (CComboBox*)GetDlgItem(id); pcmbTemp->AddString(TEXT("0 - Solid")); pcmbTemp->AddString(TEXT("1 - Dash")); pcmbTemp->AddString(TEXT("2 - Dot")); pcmbTemp->AddString(TEXT("3 - DashDot")); pcmbTemp->AddString(TEXT("4 - DASHDOTDOT")); pcmbTemp->SetItemData(0, PEN_STYLE_SOLID); pcmbTemp->SetItemData(1, PEN_STYLE_DASH); pcmbTemp->SetItemData(2, PEN_STYLE_DOT); pcmbTemp->SetItemData(3, PEN_STYLE_DASHDOT); pcmbTemp->SetItemData(4, PEN_STYLE_DASHDOTDOT); pcmbTemp->SetCurSel(nPen); } void CZoomViewOptionsDlg :: FillBorderStyleCombo(int id, unsigned int uZoomViewBorderStyle) { BOOL bSimpleZoomView; CComboBox *pcmbTemp; pcmbTemp = (CComboBox*)GetDlgItem(id); pcmbTemp->AddString(TEXT("0 - None")); pcmbTemp->AddString(TEXT("1 - Fixed Single")); pcmbTemp->SetItemData(0, ZOOM_VIEW_BORDERSTYLE_NONE); pcmbTemp->SetItemData(1, ZOOM_VIEW_BORDERSTYLE_SIMPLE); bSimpleZoomView = uZoomViewBorderStyle & ZOOM_VIEW_BORDERSTYLE_SIMPLE; pcmbTemp->SetCurSel(bSimpleZoomView ? ZOOM_VIEW_BORDERSTYLE_SIMPLE : ZOOM_VIEW_BORDERSTYLE_NONE); } void CZoomViewOptionsDlg :: FillSrcAppearanceCombo(int id, unsigned int uZoomViewBorderStyle) { CComboBox *pcmbTemp; pcmbTemp = (CComboBox*)GetDlgItem(id); BOOL b3D; pcmbTemp->AddString(TEXT("0 - Flat")); pcmbTemp->AddString(TEXT("1 - 3D")); pcmbTemp->SetItemData(0, SOURCE_BORDERSTYLE_SIMPLE); pcmbTemp->SetItemData(1, SOURCE_BORDERSTYLE_3D); b3D = uZoomViewBorderStyle & SOURCE_BORDERSTYLE_3D; pcmbTemp->SetCurSel(b3D ? SOURCE_BORDERSTYLE_3D : SOURCE_BORDERSTYLE_SIMPLE); } void CZoomViewOptionsDlg :: FillDstAppearanceCombo(int id, unsigned int uZoomViewBorderStyle) { CComboBox *pcmbTemp; pcmbTemp = (CComboBox*)GetDlgItem(id); BOOL b3D; pcmbTemp->AddString(TEXT("0 - Flat")); pcmbTemp->AddString(TEXT("2 - 3D")); pcmbTemp->SetItemData(0, ZOOM_VIEW_BORDERSTYLE_NONE); pcmbTemp->SetItemData(1, ZOOM_VIEW_BORDERSTYLE_3D); b3D = uZoomViewBorderStyle & ZOOM_VIEW_BORDERSTYLE_3D; pcmbTemp->SetCurSel(b3D ? 1 : 0); } void CZoomViewOptionsDlg :: FillShapeCombo(int id, unsigned int uZoomViewBorderStyle) { CComboBox *pcmbTemp; pcmbTemp = (CComboBox*)GetDlgItem(id); pcmbTemp->AddString(TEXT("0 - Rectangle")); pcmbTemp->AddString(TEXT("4 - Tear Out")); pcmbTemp->AddString(TEXT("8 - Rounded Rectangle")); pcmbTemp->SetItemData(0, ZOOM_VIEW_BORDERSTYLE_NONE); pcmbTemp->SetItemData(1, ZOOM_VIEW_BORDERSTYLE_TEAROUT); pcmbTemp->SetItemData(2, ZOOM_VIEW_BORDERSTYLE_ROUNDED); pcmbTemp->SetCurSel(0); if(uZoomViewBorderStyle & ZOOM_VIEW_BORDERSTYLE_TEAROUT) pcmbTemp->SetCurSel(1); if(uZoomViewBorderStyle & ZOOM_VIEW_BORDERSTYLE_ROUNDED) pcmbTemp->SetCurSel(2); } COLORREF CZoomViewOptionsDlg :: ShowColorDlg (COLORREF crInitial) { int nRet = 0; ILEADRasterDlgClr *pDlgColor = NULL; HRESULT hr = CoCreateInstance( CLSID_LEADRasterDlgClr, NULL, CLSCTX_ALL, IID_ILEADRasterDlgClr, (void**)&pDlgColor ); pDlgColor->UIFlags = COLOR_SHOW_OLDCOLOR | COLOR_SHOW_NEWCOLOR | COLOR_SHOW_NAME | COLOR_COLORSPACE_SHOW_HUE | COLOR_COLORSPACE_SHOW_BRIGHTNESS | COLOR_COLORSPACE_SHOW_WHEEL | COLOR_COLORSPACE_SHOW_RGB | COLOR_COLORSPACE_SHOW_CMY | COLOR_COLORSPACE_SHOW_CMYK | COLOR_COLORSPACE_SHOW_LAB | COLOR_COLORMODEL_SHOW_RGB | COLOR_COLORMODEL_SHOW_HSB | COLOR_COLORMODEL_SHOW_HLS | COLOR_COLORMODEL_SHOW_CMY | COLOR_COLORMODEL_SHOW_CMYK | COLOR_COLORMODEL_SHOW_LAB ; pDlgColor->PutSelectedColor(crInitial); nRet = pDlgColor->ShowColorDlg((long)this->GetSafeHwnd()) ; if(nRet == 0 && pDlgColor->DialogStatus == DLG_OK) { crInitial = pDlgColor->SelectedColor; } return crInitial; } int CZoomViewOptionsDlg::GetCurSelValue(int id) { int nCurSel; CComboBox *pcmbTemp; pcmbTemp = (CComboBox*)GetDlgItem(id); nCurSel = pcmbTemp->GetCurSel(); return pcmbTemp->GetItemData(nCurSel); } void CZoomViewOptionsDlg::OnZoomViewSrcColor() { m_pZoomView->SrcBorderColor = ShowColorDlg (m_pZoomView->GetSrcBorderColor()); RepaintButton(IDBTN_ZOOMVIEW_SRCCOLOR, m_pZoomView->SrcBorderColor); } void CZoomViewOptionsDlg::OnSrcAppearanceChange() { BOOL b3D; m_pZoomView->SrcBorderStyle = GetCurSelValue(IDCMB_ZOOMVIEW_SRCAPPEARANCE); b3D = m_pZoomView->SrcBorderStyle == SOURCE_BORDERSTYLE_3D; GetDlgItem(IDCMB_ZOOMVIEW_SRCPEN)->EnableWindow(!b3D); GetDlgItem(IDSTC_ZOOMVIEW_SRCPEN)->EnableWindow(!b3D); GetDlgItem(IDBTN_ZOOMVIEW_SRCCOLOR)->EnableWindow(!b3D); GetDlgItem(IDSTC_ZOOMVIEW_SRCCOLOR)->EnableWindow(!b3D); } void CZoomViewOptionsDlg::OnZoomViewSrcPenChange() { m_pZoomView->SrcPenStyle = (ZoomViewPenStyleConstants)GetCurSelValue(IDCMB_ZOOMVIEW_SRCPEN); } void CZoomViewOptionsDlg::OnZoomViewDstColor() { m_pZoomView->BorderColor = ShowColorDlg (m_pZoomView->GetBorderColor()); RepaintButton(IDBTN_ZOOMVIEW_DSTCOLOR, m_pZoomView->BorderColor); } void CZoomViewOptionsDlg::OnZoomViewDstPenChange() { m_pZoomView->PenStyle = (ZoomViewPenStyleConstants)GetCurSelValue(IDCMB_ZOOMVIEW_DSTPEN); } void CZoomViewOptionsDlg::OnZoomViewCallouts() { m_pZoomView->EnableCallouts = !m_pZoomView->EnableCallouts; GetDlgItem(IDSTC_ZOOMVIEW_CALLOUTPEN)->EnableWindow(m_pZoomView->EnableCallouts); GetDlgItem(IDCMB_ZOOMVIEW_CALLOUTPEN)->EnableWindow(m_pZoomView->EnableCallouts); GetDlgItem(IDSTC_ZOOMVIEW_CALLOUTCOLOR)->EnableWindow(m_pZoomView->EnableCallouts); GetDlgItem(IDBTN_ZOOMVIEW_CALLOUTCOLOR)->EnableWindow(m_pZoomView->EnableCallouts); } void CZoomViewOptionsDlg::OnZoomViewCalloutPenChange() { m_pZoomView->CalloutPenStyle = (ZoomViewPenStyleConstants)GetCurSelValue(IDCMB_ZOOMVIEW_CALLOUTPEN); } void CZoomViewOptionsDlg::RepaintButton(int id ,COLORREF ColorRef) { HBRUSH hNewBrush,hOldBrush; CDC *pcdc; RECT rect; BOOL bEnable; pcdc = GetDlgItem(id)->GetDC(); GetDlgItem(id)->GetClientRect(&rect); bEnable = GetDlgItem(id)->IsWindowEnabled(); hNewBrush = CreateSolidBrush (bEnable ? ColorRef : GetSysColor(COLOR_BTNFACE)); hOldBrush = (HBRUSH) SelectObject (pcdc->GetSafeHdc(), hNewBrush); Rectangle (pcdc->GetSafeHdc(), rect.left, rect.top, rect.right, rect.bottom); SelectObject(pcdc->GetSafeHdc(), hOldBrush); DeleteObject (hNewBrush); } void CZoomViewOptionsDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) { RepaintButton(IDBTN_ZOOMVIEW_SRCCOLOR, m_pZoomView->SrcBorderColor); RepaintButton(IDBTN_ZOOMVIEW_DSTCOLOR, m_pZoomView->BorderColor); RepaintButton(IDBTN_ZOOMVIEW_CALLOUTCOLOR, m_pZoomView->CalloutColor); CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct); } void CZoomViewOptionsDlg::OnZoomviewCalloutcolor() { m_pZoomView->CalloutColor = ShowColorDlg (m_pZoomView->GetCalloutColor()); RepaintButton(IDBTN_ZOOMVIEW_CALLOUTCOLOR, m_pZoomView->CalloutColor); } void CZoomViewOptionsDlg::OnKillFocusZoomfactor() { ValidateZoomFactor(m_pZoomView->ZoomFactor); } CZoomViewOptionsDlg::ValidateZoomFactor(int nOldValue) { int nValue; nValue = (int)GetDlgItemInt(IDEDT_ZOOMVIEW_ZOOMFACTOR, NULL, FALSE); if(nValue < 100) { nValue = nOldValue; SetDlgItemInt(IDEDT_ZOOMVIEW_ZOOMFACTOR, nOldValue, FALSE); return nValue; } else if(nValue > 800) { nValue = nOldValue; SetDlgItemInt(IDEDT_ZOOMVIEW_ZOOMFACTOR, nOldValue, FALSE); return nValue; } return nValue; } void CZoomViewOptionsDlg::InitDstCombo() { GetDlgItem(IDCMB_ZOOMVIEW_DSTBORDERSTYLE)->EnableWindow(TRUE); GetDlgItem(IDCMB_ZOOMVIEW_DSTAPPEARANCE)->EnableWindow(TRUE); GetDlgItem(IDCMB_ZOOMVIEW_DSTPEN)->EnableWindow(TRUE); GetDlgItem(IDBTN_ZOOMVIEW_DSTCOLOR)->EnableWindow(TRUE); GetDlgItem(IDSTC_ZOOMVIEW_DSTCOLOR)->EnableWindow(TRUE); switch (GetCurSelValue(IDCMB_ZOOMVIEW_DSTSHAPE)) { case ZOOM_VIEW_BORDERSTYLE_TEAROUT: GetDlgItem(IDCMB_ZOOMVIEW_DSTBORDERSTYLE)->EnableWindow(FALSE); GetDlgItem(IDCMB_ZOOMVIEW_DSTAPPEARANCE)->EnableWindow(FALSE); GetDlgItem(IDCMB_ZOOMVIEW_DSTPEN)->EnableWindow(FALSE); GetDlgItem(IDBTN_ZOOMVIEW_DSTCOLOR)->EnableWindow(FALSE); GetDlgItem(IDSTC_ZOOMVIEW_DSTCOLOR)->EnableWindow(FALSE); break; case ZOOM_VIEW_BORDERSTYLE_ROUNDED: GetDlgItem(IDCMB_ZOOMVIEW_DSTAPPEARANCE)->EnableWindow(FALSE); if(GetCurSelValue(IDCMB_ZOOMVIEW_DSTBORDERSTYLE) == ZOOM_VIEW_BORDERSTYLE_NONE) { GetDlgItem(IDCMB_ZOOMVIEW_DSTPEN)->EnableWindow(FALSE); GetDlgItem(IDBTN_ZOOMVIEW_DSTCOLOR)->EnableWindow(FALSE); GetDlgItem(IDSTC_ZOOMVIEW_DSTCOLOR)->EnableWindow(FALSE); } else { GetDlgItem(IDCMB_ZOOMVIEW_DSTPEN)->EnableWindow(TRUE); GetDlgItem(IDBTN_ZOOMVIEW_DSTCOLOR)->EnableWindow(TRUE); GetDlgItem(IDSTC_ZOOMVIEW_DSTCOLOR)->EnableWindow(TRUE); } break; case 0: if(GetCurSelValue(IDCMB_ZOOMVIEW_DSTAPPEARANCE) == ZOOM_VIEW_BORDERSTYLE_3D) { GetDlgItem(IDCMB_ZOOMVIEW_DSTBORDERSTYLE)->EnableWindow(FALSE); GetDlgItem(IDCMB_ZOOMVIEW_DSTPEN)->EnableWindow(FALSE); GetDlgItem(IDBTN_ZOOMVIEW_DSTCOLOR)->EnableWindow(FALSE); GetDlgItem(IDSTC_ZOOMVIEW_DSTCOLOR)->EnableWindow(FALSE); } else { GetDlgItem(IDCMB_ZOOMVIEW_DSTBORDERSTYLE)->EnableWindow(TRUE); if(GetCurSelValue(IDCMB_ZOOMVIEW_DSTBORDERSTYLE) == ZOOM_VIEW_BORDERSTYLE_SIMPLE) { GetDlgItem(IDCMB_ZOOMVIEW_DSTPEN)->EnableWindow(TRUE); GetDlgItem(IDBTN_ZOOMVIEW_DSTCOLOR)->EnableWindow(TRUE); GetDlgItem(IDSTC_ZOOMVIEW_DSTCOLOR)->EnableWindow(TRUE); } else { GetDlgItem(IDCMB_ZOOMVIEW_DSTPEN)->EnableWindow(FALSE); GetDlgItem(IDBTN_ZOOMVIEW_DSTCOLOR)->EnableWindow(FALSE); GetDlgItem(IDSTC_ZOOMVIEW_DSTCOLOR)->EnableWindow(FALSE); } } break; default: GetDlgItem(IDCMB_ZOOMVIEW_DSTBORDERSTYLE)->EnableWindow(TRUE); GetDlgItem(IDCMB_ZOOMVIEW_DSTPEN)->EnableWindow(TRUE); GetDlgItem(IDBTN_ZOOMVIEW_DSTCOLOR)->EnableWindow(TRUE); GetDlgItem(IDSTC_ZOOMVIEW_DSTCOLOR)->EnableWindow(TRUE); break; } } void CZoomViewOptionsDlg::OnSelChangeDstAppearance() { InitDstCombo(); } void CZoomViewOptionsDlg::OnSelChangeDstBorderStyle() { InitDstCombo(); } void CZoomViewOptionsDlg::OnSelChangeDstShape() { InitDstCombo(); }