home *** CD-ROM | disk | FTP | other *** search
/ Mastering Visual Basic 6 / mastvb6.iso / leadtools / ocx32.lt / ZOOMDLG.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-10  |  3.0 KB  |  118 lines

  1. // zoomdlg.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "magnify.h"
  6. #include "zoomdlg.h"
  7.  
  8. #ifdef _DEBUG
  9. #undef THIS_FILE
  10. static char BASED_CODE THIS_FILE[] = __FILE__;
  11. #endif
  12.  
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CZoomDlg dialog
  15.  
  16.  
  17. CZoomDlg::CZoomDlg(CWnd* pParent /*=NULL*/)
  18.         : CDialog(CZoomDlg::IDD, pParent)
  19. {
  20.     nZoomFactor = 100;
  21.     nZoomLineInc = 10;
  22.     nZoomPageInc = 100;
  23.  
  24.     nZoomMin = 1;
  25.     nZoomMax = 800;
  26.         //{{AFX_DATA_INIT(CZoomDlg)
  27.       // NOTE: the ClassWizard will add member initialization here
  28.    //}}AFX_DATA_INIT
  29. }
  30.  
  31.  
  32. void CZoomDlg::DoDataExchange(CDataExchange* pDX)
  33. {
  34.    CDialog::DoDataExchange(pDX);
  35.         //{{AFX_DATA_MAP(CZoomDlg)
  36.       // NOTE: the ClassWizard will add DDX and DDV calls here
  37.    //}}AFX_DATA_MAP
  38. }
  39.  
  40.  
  41. BEGIN_MESSAGE_MAP(CZoomDlg, CDialog)
  42.         //{{AFX_MSG_MAP(CZoomDlg)
  43.    ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)
  44.    ON_WM_HSCROLL()
  45.    //}}AFX_MSG_MAP
  46. END_MESSAGE_MAP()
  47.  
  48.  
  49. /////////////////////////////////////////////////////////////////////////////
  50. // CZoomDlg message handlers
  51.  
  52. void CZoomDlg::OnChangeEdit1() 
  53. {
  54.    BOOL    bOKValue;
  55.     CScrollBar *pScrollBar = (CScrollBar *)GetDlgItem(IDC_SCROLLBAR3);
  56.    nZoomFactor = GetDlgItemInt(IDC_EDIT1,&bOKValue,FALSE);
  57.     pScrollBar->SetScrollPos(nZoomFactor,TRUE);
  58. }
  59.  
  60. void CZoomDlg::OnOK() 
  61. {
  62.    BOOL    bOKValue;
  63.    nZoomFactor = GetDlgItemInt(IDC_EDIT1,&bOKValue,FALSE);
  64.     if( bOKValue && nZoomFactor >= nZoomMin && nZoomFactor <= nZoomMax )
  65.        CDialog::OnOK();
  66. }
  67.  
  68. void CZoomDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
  69. {
  70.    int nScrollPos = pScrollBar->GetScrollPos();
  71.     switch (nSBCode)
  72.     {
  73.     case SB_LEFT:
  74.      nScrollPos = nZoomMin;
  75.      break;
  76.     case SB_RIGHT:
  77.      nScrollPos = nZoomMax;
  78.      break;
  79.     case SB_THUMBPOSITION:
  80.     case SB_THUMBTRACK:
  81.      nScrollPos = (int) nPos;
  82.      break;
  83.     case SB_LINELEFT:
  84.      nScrollPos = max (nScrollPos - nZoomLineInc, nZoomMin);
  85.      break;
  86.     case SB_LINERIGHT:
  87.      nScrollPos = min (nScrollPos + nZoomLineInc, nZoomMax);
  88.      break;
  89.     case SB_PAGELEFT:
  90.      nScrollPos = max (nScrollPos - nZoomPageInc, nZoomMin);
  91.      break;
  92.     case SB_PAGERIGHT:
  93.      nScrollPos = min (nScrollPos + nZoomPageInc, nZoomMax);
  94.      break;
  95.     }
  96.  
  97.     if( nZoomFactor != nScrollPos )
  98.     {
  99.         nZoomFactor = nScrollPos;
  100.         SetDlgItemInt(IDC_EDIT1, nZoomFactor, FALSE);
  101.         pScrollBar->SetScrollPos(nScrollPos);
  102.     }
  103. }
  104.  
  105. BOOL CZoomDlg::OnInitDialog() 
  106. {
  107.    CDialog::OnInitDialog();
  108.     CScrollBar *pScrollBar = (CScrollBar *)GetDlgItem(IDC_SCROLLBAR3);
  109.  
  110.     SetDlgItemInt( IDC_EDIT1, nZoomFactor, FALSE );
  111.     pScrollBar->SetScrollRange( nZoomMin, nZoomMax, FALSE );
  112.     pScrollBar->SetScrollPos( nZoomFactor, FALSE );
  113.  
  114.    return TRUE;  // return TRUE unless you set the focus to a control
  115.                  // EXCEPTION: OCX Property Pages should return FALSE
  116. }
  117.  
  118.