home *** CD-ROM | disk | FTP | other *** search
/ Mastering Visual Basic 6 / mastvb6.iso / leadtools / ocx32.lt / RANGEANN.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-25  |  3.7 KB  |  151 lines

  1. // rangedlg.cpp : implementation file
  2. // Copyright (C) 1996 LEAD Technologies, Inc.
  3. // All rights reserved.
  4.  
  5. #include "stdafx.h"
  6. #include "annotate.h"
  7. #include "rangeann.h"
  8.  
  9. #ifdef _DEBUG
  10. #undef THIS_FILE
  11. static char BASED_CODE THIS_FILE[] = __FILE__;
  12. #endif
  13.  
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CRangeDlg dialog
  16.  
  17.  
  18. CRangeDlg::CRangeDlg(CWnd* pParent /*=NULL*/)
  19.     : CDialog(CRangeDlg::IDD, pParent)
  20. {
  21.     //{{AFX_DATA_INIT(CRangeDlg)
  22.         m_nValue = 0;
  23.         m_nMin = 0;
  24.         m_nMax = 100;
  25.         m_nStep = 1;
  26.         m_nPage = 10;
  27.     m_strLabel = _T("");
  28.     m_strTitle = _T("");
  29.     m_strComboInit = _T("");
  30.         m_strComboLabel = _T("");
  31.         m_nComboValue = 0;
  32.         m_fShowCombo = FALSE;
  33.     //}}AFX_DATA_INIT
  34. }
  35.  
  36.  
  37. void CRangeDlg::DoDataExchange(CDataExchange* pDX)
  38. {
  39.     CDialog::DoDataExchange(pDX);
  40.     //{{AFX_DATA_MAP(CRangeDlg)
  41.     DDX_Control(pDX, IDC_STATIC2, m_Static2);
  42.     DDX_Control(pDX, IDC_COMBO1, m_Combo);
  43.     DDX_Control(pDX, IDC_SCROLLBAR1, m_ScrollBar);
  44.     DDX_Text(pDX, IDC_EDIT1, m_nValue);
  45.     DDV_MinMaxInt(pDX, m_nValue, m_nMin, m_nMax);
  46.     DDX_Text(pDX, IDC_STATIC1, m_strLabel);
  47.     //}}AFX_DATA_MAP
  48. }
  49.  
  50.  
  51. BEGIN_MESSAGE_MAP(CRangeDlg, CDialog)
  52.     //{{AFX_MSG_MAP(CRangeDlg)
  53.     ON_WM_HSCROLL()
  54.     ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)
  55.     ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
  56.     //}}AFX_MSG_MAP
  57. END_MESSAGE_MAP()
  58.  
  59.  
  60. BOOL CRangeDlg::GetValue()
  61. {
  62.         BOOL fTranslated;
  63.         int n;
  64.         n = GetDlgItemInt (IDC_EDIT1, &fTranslated, TRUE);
  65.         if (!fTranslated || n < m_nMin || n > m_nMax)
  66.                 return(FALSE);
  67.         m_nValue = n;
  68.         return(TRUE);
  69. }
  70.  
  71. void CRangeDlg::SetValue()
  72. {
  73.         SetDlgItemInt (IDC_EDIT1, m_nValue, TRUE);
  74. }
  75.  
  76. /////////////////////////////////////////////////////////////////////////////
  77. // CRangeDlg message handlers
  78.  
  79.  
  80. void CRangeDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
  81. {
  82.       GetValue();
  83.       switch (nSBCode)
  84.       {
  85.       case SB_LEFT:
  86.          m_nValue = m_nMin;
  87.          break;
  88.       case SB_RIGHT:
  89.          m_nValue = m_nMax;
  90.          break;
  91.       case SB_THUMBPOSITION:
  92.       case SB_THUMBTRACK:
  93.          m_nValue = (int) nPos;
  94.          break;
  95.       case SB_LINELEFT:
  96.          m_nValue = max (m_nValue - m_nStep, m_nMin);
  97.          break;
  98.       case SB_LINERIGHT:
  99.          m_nValue = min (m_nValue + m_nStep, m_nMax);
  100.          break;
  101.       case SB_PAGELEFT:
  102.          m_nValue = max (m_nValue - m_nPage, m_nMin);
  103.          break;
  104.       case SB_PAGERIGHT:
  105.          m_nValue = min (m_nValue + m_nPage, m_nMax);
  106.          break;
  107.       }
  108.       pScrollBar->SetScrollPos(m_nValue);
  109.       SetValue();
  110. }
  111.  
  112. void CRangeDlg::OnChangeEdit1() 
  113. {
  114.       if(GetValue())
  115.               m_ScrollBar.SetScrollPos(m_nValue);
  116. }
  117.  
  118. BOOL CRangeDlg::OnInitDialog() 
  119. {
  120.     CDialog::OnInitDialog();
  121.     
  122.         SetWindowText(m_strTitle);
  123.  
  124.         m_ScrollBar.SetScrollRange(m_nMin, m_nMax, TRUE);
  125.         m_ScrollBar.SetScrollPos(m_nValue);
  126.         int j = 0;
  127.         for(int i = 0; i < m_strComboInit.GetLength(); i++)
  128.         {
  129.                 if(m_strComboInit[i] == '|')
  130.                 {
  131.                         m_Combo.AddString(m_strComboInit.Mid(j, i - j));
  132.                         j = i + 1;
  133.                 }
  134.         }
  135.         m_Combo.SetCurSel(m_nComboValue);
  136.         m_Static2.SetWindowText(m_strComboLabel);
  137.  
  138.  
  139.         m_Combo.ShowWindow(m_fShowCombo ? SW_SHOW : SW_HIDE);
  140.         m_Static2.ShowWindow(m_fShowCombo ? SW_SHOW : SW_HIDE);
  141.     
  142.     return TRUE;  // return TRUE unless you set the focus to a control
  143.                   // EXCEPTION: OCX Property Pages should return FALSE
  144. }
  145.  
  146.  
  147. void CRangeDlg::OnSelchangeCombo1() 
  148. {
  149.         m_nComboValue = m_Combo.GetCurSel();
  150. }
  151.