// PropertyPageImage.cpp : implementation file // #include "stdafx.h" #include "resource.h" #include "ScreenGrabber.h" #include "PropertyPageImage.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CPropertyPageImage property page //IMPLEMENT_DYNCREATE(CPropertyPageImage, COXContextHelpPropertyPage) // array of control IDs and corresponding help IDs const DWORD CPropertyPageImage::m_nHelpIDs[] = { IDC_CHECK_RESIZE, IDH_CHECK_RESIZE, IDC_STATIC_WIDTH, IDH_STATIC_WIDTH, IDC_EDIT_WIDTH, IDH_EDIT_WIDTH, IDC_SPIN_WIDTH, IDH_SPIN_WIDTH, IDC_STATIC_HEIGHT, IDH_STATIC_HEIGHT, IDC_EDIT_HEIGHT, IDH_EDIT_HEIGHT, IDC_SPIN_HEIGHT, IDH_SPIN_HEIGHT, IDC_CHECK_MAINTAIN_RATIO, IDH_CHECK_MAINTAIN_RATIO, 0, 0 }; CPropertyPageImage::CPropertyPageImage() : COXContextHelpPropertyPage(CPropertyPageImage::IDD) { //{{AFX_DATA_INIT(CPropertyPageImage) m_bMaintainRatio = FALSE; m_bResize = FALSE; m_nHeight = 0; m_nWidth = 0; //}}AFX_DATA_INIT } CPropertyPageImage::~CPropertyPageImage() { } void CPropertyPageImage::DoDataExchange(CDataExchange* pDX) { COXContextHelpPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPropertyPageImage) DDX_Control(pDX, IDC_STATIC_WIDTH, m_ctlStaticWidth); DDX_Control(pDX, IDC_STATIC_HEIGHT, m_ctlStaticHeight); DDX_Control(pDX, IDC_SPIN_WIDTH, m_ctlSpinWidth); DDX_Control(pDX, IDC_SPIN_HEIGHT, m_ctlSpinHeight); DDX_Control(pDX, IDC_EDIT_WIDTH, m_ctlEditWidth); DDX_Control(pDX, IDC_EDIT_HEIGHT, m_ctlEditHeight); DDX_Control(pDX, IDC_CHECK_RESIZE, m_ctlCheckResize); DDX_Control(pDX, IDC_CHECK_MAINTAIN_RATIO, m_ctlCheckMaintainRatio); DDX_Text(pDX, IDC_EDIT_HEIGHT, m_nHeight); DDV_MinMaxUInt(pDX, m_nHeight, 1, 16384); DDX_Text(pDX, IDC_EDIT_WIDTH, m_nWidth); DDV_MinMaxUInt(pDX, m_nWidth, 1, 16384); DDX_Check(pDX, IDC_CHECK_MAINTAIN_RATIO, m_bMaintainRatio); DDX_Check(pDX, IDC_CHECK_RESIZE, m_bResize); //}}AFX_DATA_MAP // check if all variables are correct CheckVars(); } BEGIN_MESSAGE_MAP(CPropertyPageImage, COXContextHelpPropertyPage) //{{AFX_MSG_MAP(CPropertyPageImage) ON_BN_CLICKED(IDC_CHECK_RESIZE, OnCheckResize) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPropertyPageImage message handlers BOOL CPropertyPageImage::AdjustToolTips() { //Set up the Tooltip BOOL result; result=m_Tooltip.AddTool(&m_ctlStaticWidth, _T("Define the width of captured image")); ASSERT(result != 0) ; result=m_Tooltip.AddTool(&m_ctlStaticHeight, _T("Define the height of captured image")); ASSERT(result != 0) ; result=m_Tooltip.AddTool(&m_ctlSpinWidth, _T("Change the width of captured image")); ASSERT(result != 0) ; result=m_Tooltip.AddTool(&m_ctlSpinHeight, _T("Change the height of captured image")); ASSERT(result != 0) ; result=m_Tooltip.AddTool(&m_ctlEditWidth, _T("Change the width of captured image")); ASSERT(result != 0) ; result=m_Tooltip.AddTool(&m_ctlEditHeight, _T("Change the height of captured image")); ASSERT(result != 0) ; result=m_Tooltip.AddTool(&m_ctlCheckResize, _T("Lets customize the height and width of captured image")); ASSERT(result != 0) ; result=m_Tooltip.AddTool(&m_ctlCheckMaintainRatio, _T("Maintains aspect ratio of captured image")); ASSERT(result != 0) ; return result; } BOOL CPropertyPageImage::OnInitDialog() { COXContextHelpPropertyPage::OnInitDialog(); // TODO: Add extra initialization here m_LayoutManager.Attach(this); CRect rectDialog; GetWindowRect(&rectDialog); CRect rectItem; GetDlgItem(IDC_STATIC_RESIZING)->GetWindowRect(&rectItem); m_LayoutManager.SetConstraint(IDC_STATIC_RESIZING, OX_LMS_RIGHT, OX_LMT_SAME, rectItem.right-rectDialog.right); m_LayoutManager.SetConstraint(IDC_STATIC_RESIZING, OX_LMS_LEFT, OX_LMT_SAME, rectItem.left-rectDialog.left); GetDlgItem(IDC_CHECK_MAINTAIN_RATIO)->GetWindowRect(&rectItem); m_LayoutManager.SetConstraint(IDC_CHECK_MAINTAIN_RATIO, OX_LMS_RIGHT, OX_LMT_SAME, rectItem.right-rectDialog.right); // check if all variables are correct CheckVars(); // Set the COXSpinCtrl object, which is mapped to a common Spin Control. m_ctlSpinWidth.SetBuddy(&m_ctlEditWidth); m_ctlSpinWidth.SetRange(ID_MIN_WIDTH,ID_MAX_WIDTH); m_ctlSpinWidth.SetPos(m_nWidth); // Set a default COXSpinCtrl method of delta value computation // (Delta pixel = Delta value). m_ctlSpinWidth.SetComputationMethod(OX_SPIN_DELTA_PIXEL_IS_DELTA_VALUE); // Set the COXSpinCtrl object, which is mapped to a common Spin Control. m_ctlSpinHeight.SetBuddy(&m_ctlEditHeight); m_ctlSpinHeight.SetRange(ID_MIN_HEIGHT,ID_MAX_HEIGHT); m_ctlSpinHeight.SetPos(m_nHeight); // Set a default COXSpinCtrl method of delta value computation // (Delta pixel = Delta value). m_ctlSpinHeight.SetComputationMethod(OX_SPIN_DELTA_PIXEL_IS_DELTA_VALUE); UpdateData(FALSE); ShowControls(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CPropertyPageImage::OnCheckResize() { // TODO: Add your control notification handler code here UpdateData(TRUE); ShowControls(); } void CPropertyPageImage::ShowControls() { if(m_bResize) { m_ctlEditWidth.EnableWindow(TRUE); m_ctlSpinWidth.EnableWindow(TRUE); m_ctlEditHeight.EnableWindow(TRUE); m_ctlSpinHeight.EnableWindow(TRUE); m_ctlCheckMaintainRatio.EnableWindow(TRUE); } else { m_ctlEditWidth.EnableWindow(FALSE); m_ctlSpinWidth.EnableWindow(FALSE); m_ctlEditHeight.EnableWindow(FALSE); m_ctlSpinHeight.EnableWindow(FALSE); m_ctlCheckMaintainRatio.EnableWindow(FALSE); } UpdateData(FALSE); } void CPropertyPageImage::CheckVars() { if(m_nWidthID_MAX_WIDTH) { m_nWidth=::GetSystemMetrics(SM_CXSCREEN); } if(m_nHeightID_MAX_HEIGHT) { m_nHeight=::GetSystemMetrics(SM_CYSCREEN); } }