home *** CD-ROM | disk | FTP | other *** search
/ Mastering Visual Basic 6 / mastvb6.iso / leadtools / ocx32.lt / OCRNUM.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1998-01-14  |  2.8 KB  |  133 lines

  1. // Ocrnum.cpp : implementation file
  2. //
  3. // Copyright (c) 1991-1998 by LEAD Technologies, Inc.
  4. // All Rights Reserved.
  5.  
  6. #include "stdafx.h"
  7. //#include "Ocrdemo.h"
  8. #include "resource.h"
  9. #include "Ocrnum.h"
  10.  
  11. /////////////////////////////////////////////////////////////////////////////
  12. // COcrDemoNumberDlg dialog
  13.  
  14. COcrDemoNumberDlg::COcrDemoNumberDlg(CWnd* pParent /*=NULL*/)
  15.     : CDialog(COcrDemoNumberDlg::IDD, pParent)
  16. {
  17.     //{{AFX_DATA_INIT(COcrDemoNumberDlg)
  18.    m_nValue = 0;
  19.    m_nMin = 0;
  20.    m_nMax = 100;
  21.    m_nStep = 1;
  22.    m_nPage = 10;
  23.     m_strLabel = _T("");
  24.     m_strTitle = _T("");
  25.     //}}AFX_DATA_INIT
  26.  
  27.    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  28. }
  29.  
  30.  
  31. void COcrDemoNumberDlg::DoDataExchange(CDataExchange* pDX)
  32. {
  33.     CDialog::DoDataExchange(pDX);
  34.     //{{AFX_DATA_MAP(COcrDemoNumberDlg)
  35.     DDX_Control(pDX, IDC_SCROLLBAR1, m_ScrollBar);
  36.     DDX_Text(pDX, IDC_EDIT1, m_nValue);
  37.     DDV_MinMaxInt(pDX, m_nValue, m_nMin, m_nMax);
  38.     DDX_Text(pDX, IDC_STATIC1, m_strLabel);
  39.     //}}AFX_DATA_MAP
  40. }
  41.  
  42.  
  43. BEGIN_MESSAGE_MAP(COcrDemoNumberDlg, CDialog)
  44.     //{{AFX_MSG_MAP(COcrDemoNumberDlg)
  45.     ON_WM_HSCROLL()
  46.     ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)
  47.     //}}AFX_MSG_MAP
  48. END_MESSAGE_MAP()
  49.  
  50.  
  51. BOOL COcrDemoNumberDlg::GetValue()
  52. {
  53.    BOOL fTranslated;
  54.    int n;
  55.    
  56.    n = GetDlgItemInt (IDC_EDIT1, &fTranslated, TRUE);
  57.  
  58.    if (!fTranslated || n < m_nMin || n > m_nMax)
  59.    {
  60.       return FALSE;
  61.    }
  62.  
  63.    m_nValue = n;
  64.    return TRUE;
  65. }
  66.  
  67. void COcrDemoNumberDlg::SetValue()
  68. {
  69.    SetDlgItemInt (IDC_EDIT1, m_nValue, TRUE);
  70. }
  71.  
  72. /////////////////////////////////////////////////////////////////////////////
  73. // COcrDemoNumberDlg message handlers
  74.  
  75.  
  76. void COcrDemoNumberDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
  77. {
  78.    GetValue();
  79.  
  80.    switch (nSBCode)
  81.    {
  82.    case SB_LEFT:
  83.       m_nValue = m_nMin;
  84.       break;
  85.    case SB_RIGHT:
  86.       m_nValue = m_nMax;
  87.       break;
  88.    case SB_THUMBPOSITION:
  89.    case SB_THUMBTRACK:
  90.       m_nValue = (int) nPos;
  91.       break;
  92.    case SB_LINELEFT:
  93.       m_nValue = max (m_nValue - m_nStep, m_nMin);
  94.       break;
  95.    case SB_LINERIGHT:
  96.       m_nValue = min (m_nValue + m_nStep, m_nMax);
  97.       break;
  98.    case SB_PAGELEFT:
  99.       m_nValue = max (m_nValue - m_nPage, m_nMin);
  100.       break;
  101.    case SB_PAGERIGHT:
  102.       m_nValue = min (m_nValue + m_nPage, m_nMax);
  103.       break;
  104.    }
  105.  
  106.    pScrollBar->SetScrollPos(m_nValue);
  107.    SetValue();
  108. }
  109.  
  110. void COcrDemoNumberDlg::OnChangeEdit1() 
  111. {
  112.    if (GetValue())
  113.    {
  114.       m_ScrollBar.SetScrollPos(m_nValue);
  115.    }
  116. }
  117.  
  118. BOOL COcrDemoNumberDlg::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.  
  128.    SetIcon(m_hIcon, TRUE); 
  129.    SetIcon(m_hIcon, FALSE);
  130.  
  131.     return TRUE;
  132. }
  133.