home *** CD-ROM | disk | FTP | other *** search
/ ftp.funduc.com / 2014.08.ftp.funduc.com.tar / ftp.funduc.com / fshedcode-072212.zip / ManipulateBitsDlg.cpp < prev    next >
C/C++ Source or Header  |  2010-09-13  |  4KB  |  132 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. //    License (GPLv2+):
  3. //    This program is free software; you can redistribute it and/or modify
  4. //    it under the terms of the GNU General Public License as published by
  5. //    the Free Software Foundation; either version 2 of the License, or
  6. //    (at your option) any later version.
  7. //
  8. //    This program is distributed in the hope that it will be useful, but
  9. //    WITHOUT ANY WARRANTY; without even the implied warranty of
  10. //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11. //    General Public License for more details.
  12. //
  13. //    You should have received a copy of the GNU General Public License
  14. //    along with this program; if not, write to the Free Software
  15. //    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  16. /////////////////////////////////////////////////////////////////////////////
  17.  
  18. #include "stdafx.h"
  19. #include "fshed.h"
  20. #include "ManipulateBitsDlg.h"
  21.  
  22. #ifdef _DEBUG
  23. #define new DEBUG_NEW
  24. #undef THIS_FILE
  25. static char THIS_FILE[] = __FILE__;
  26. #endif
  27.  
  28. /////////////////////////////////////////////////////////////////////////////
  29. // CManipulateBitsDlg dialog
  30.  
  31.  
  32. CManipulateBitsDlg::CManipulateBitsDlg(CWnd* pParent /*=NULL*/)
  33.     : CDialog(CManipulateBitsDlg::IDD, pParent)
  34. {
  35.     //{{AFX_DATA_INIT(CManipulateBitsDlg)
  36.     m_bChk1 = FALSE;
  37.     m_bChk2 = FALSE;
  38.     m_bChk3 = FALSE;
  39.     m_bChk4 = FALSE;
  40.     m_bChk5 = FALSE;
  41.     m_bChk6 = FALSE;
  42.     m_bChk7 = FALSE;
  43.     m_bChk8 = FALSE;
  44.     m_strLabel1 = _T("");
  45.     m_strLabel2 = _T("");
  46.     //}}AFX_DATA_INIT
  47.    m_nBitPos = 0;
  48.    m_chValue = 0;
  49. }
  50.  
  51.  
  52. void CManipulateBitsDlg::DoDataExchange(CDataExchange* pDX)
  53. {
  54.     CDialog::DoDataExchange(pDX);
  55.     //{{AFX_DATA_MAP(CManipulateBitsDlg)
  56.     DDX_Check(pDX, IDC_CHECK1, m_bChk1);
  57.     DDX_Check(pDX, IDC_CHECK2, m_bChk2);
  58.     DDX_Check(pDX, IDC_CHECK3, m_bChk3);
  59.     DDX_Check(pDX, IDC_CHECK4, m_bChk4);
  60.     DDX_Check(pDX, IDC_CHECK5, m_bChk5);
  61.     DDX_Check(pDX, IDC_CHECK6, m_bChk6);
  62.     DDX_Check(pDX, IDC_CHECK7, m_bChk7);
  63.     DDX_Check(pDX, IDC_CHECK8, m_bChk8);
  64.     //}}AFX_DATA_MAP
  65.    if (pDX->m_bSaveAndValidate)
  66.    {
  67.       m_chValue = 0;
  68.         if (m_bChk8) m_chValue += 128;
  69.         if (m_bChk7) m_chValue += 64;
  70.         if (m_bChk6) m_chValue += 32;
  71.         if (m_bChk5) m_chValue += 16;
  72.         if (m_bChk4) m_chValue += 8;
  73.         if (m_bChk3) m_chValue += 4;
  74.         if (m_bChk2) m_chValue += 2;
  75.         if (m_bChk1) m_chValue += 1;
  76.    }
  77.    else
  78.    {
  79.        m_strLabel1.Format(IDS_LAB_MANIP_OFFSET, m_nBitPos, m_nBitPos );
  80.        m_strLabel2.Format(IDS_LAB_MANIP_SIGNED, (unsigned char) m_chValue, (signed char) m_chValue, (unsigned char) m_chValue);
  81.    }
  82.     DDX_Text(pDX, IDC_STATIC1, m_strLabel1);
  83.     DDX_Text(pDX, IDC_STATIC2, m_strLabel2);
  84. }
  85.  
  86.  
  87. BEGIN_MESSAGE_MAP(CManipulateBitsDlg, CDialog)
  88.     //{{AFX_MSG_MAP(CManipulateBitsDlg)
  89.     ON_BN_CLICKED(IDC_CHECK1, OnCheck)
  90.     ON_BN_CLICKED(IDC_CHECK2, OnCheck)
  91.     ON_BN_CLICKED(IDC_CHECK3, OnCheck)
  92.     ON_BN_CLICKED(IDC_CHECK4, OnCheck)
  93.     ON_BN_CLICKED(IDC_CHECK5, OnCheck)
  94.     ON_BN_CLICKED(IDC_CHECK6, OnCheck)
  95.     ON_BN_CLICKED(IDC_CHECK7, OnCheck)
  96.     ON_BN_CLICKED(IDC_CHECK8, OnCheck)
  97.     //}}AFX_MSG_MAP
  98. END_MESSAGE_MAP()
  99.  
  100. /////////////////////////////////////////////////////////////////////////////
  101. // CManipulateBitsDlg message handlers
  102. #define bitval(base,pos) ((base)[(pos)/8]&(1<<((pos)%8)))
  103.  
  104. BOOL CManipulateBitsDlg::OnInitDialog() 
  105. {
  106.    m_bChk1 = (bitval(&m_chValue,0) ? TRUE : FALSE);
  107.    m_bChk2 = (bitval(&m_chValue,1) ? TRUE : FALSE);
  108.    m_bChk3 = (bitval(&m_chValue,2) ? TRUE : FALSE);
  109.    m_bChk4 = (bitval(&m_chValue,3) ? TRUE : FALSE);
  110.    m_bChk5 = (bitval(&m_chValue,4) ? TRUE : FALSE);
  111.    m_bChk6 = (bitval(&m_chValue,5) ? TRUE : FALSE);
  112.    m_bChk7 = (bitval(&m_chValue,6) ? TRUE : FALSE);
  113.    m_bChk8 = (bitval(&m_chValue,7) ? TRUE : FALSE);
  114.     CDialog::OnInitDialog();
  115.     
  116.     return TRUE;  // return TRUE unless you set the focus to a control
  117.                   // EXCEPTION: OCX Property Pages should return FALSE
  118. }
  119.  
  120. void CManipulateBitsDlg::OnOK() 
  121. {
  122.     // TODO: Add extra validation here
  123.     
  124.     CDialog::OnOK();
  125. }
  126.  
  127. void CManipulateBitsDlg::OnCheck() 
  128. {
  129.    UpdateData();
  130.     UpdateData(FALSE);
  131. }
  132.