home *** CD-ROM | disk | FTP | other *** search
/ Xentax forum attachments archive / xentax.7z / 8090 / ModelEdit.7z / StringDlg.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2006-03-08  |  2.7 KB  |  154 lines

  1. // StringDlg.cpp : implementation file
  2. //
  3.  
  4. #include "precompile.h"
  5. #include "stringdlg.h"
  6.  
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12.  
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CStringDlg dialog
  15.  
  16.  
  17. CStringDlg::CStringDlg(UINT id, CWnd* pParent /*=NULL*/)
  18.     : CDialog(id, pParent)
  19. {
  20.     //{{AFX_DATA_INIT(CStringDlg)
  21.     m_EnteredText = _T("");
  22.     m_MsgText = _T("");
  23.     //}}AFX_DATA_INIT
  24.  
  25.     m_bAllowLetters = m_bAllowNumbers = m_bAllowOthers = FALSE;
  26.     m_bBeeping = FALSE;
  27.     m_MaxStringLen = 255;
  28. }
  29.  
  30.  
  31. void CStringDlg::DoDataExchange(CDataExchange* pDX)
  32. {
  33.     CDialog::DoDataExchange(pDX);
  34.     //{{AFX_DATA_MAP(CStringDlg)
  35.     DDX_Text(pDX, IDC_ENTEREDTEXT, m_EnteredText);
  36.     DDX_Text(pDX, IDC_MSGTEXT, m_MsgText);
  37.     //}}AFX_DATA_MAP
  38. }
  39.  
  40.  
  41. BEGIN_MESSAGE_MAP(CStringDlg, CDialog)
  42.     //{{AFX_MSG_MAP(CStringDlg)
  43.     ON_EN_CHANGE(IDC_ENTEREDTEXT, OnChangeEnteredtext)
  44.     //}}AFX_MSG_MAP
  45. END_MESSAGE_MAP()
  46.  
  47.  
  48.  
  49. int CStringDlg::DoModal( UINT idCaption, UINT idText )
  50. {
  51.     m_idCaption = idCaption;
  52.     m_idText = idText;
  53.  
  54.     return CDialog::DoModal();
  55. }
  56.  
  57.  
  58.  
  59. /////////////////////////////////////////////////////////////////////////////
  60. // CStringDlg message handlers
  61.  
  62.  
  63. BOOL CStringDlg::OnInitDialog() 
  64. {
  65.     CString        captionString;
  66.  
  67.  
  68.     CDialog::OnInitDialog();
  69.  
  70. //    GetDlgItem(IDOK)->EnableWindow(FALSE);
  71.     
  72.     captionString.LoadString( m_idCaption );
  73.     m_MsgText.LoadString( m_idText );
  74.     
  75.     SetWindowText( captionString );
  76.     UpdateData( FALSE );
  77.  
  78.     GetDlgItem(IDC_ENTEREDTEXT)->SetFocus();
  79.     
  80.     return TRUE;  
  81. }
  82.  
  83.  
  84.  
  85.  
  86. void CStringDlg::OnChangeEnteredtext() 
  87. {
  88.     CString        sText;
  89.     CString        sNew;
  90.     char        letter[2] = {0,0};
  91.     int            i;
  92.  
  93.     CEdit        *pEdit = (CEdit*)GetDlgItem( IDC_ENTEREDTEXT );
  94.     int            selStart, selEnd;
  95.  
  96.  
  97.     // Validate the string.
  98.     pEdit->GetWindowText( sText );
  99.  
  100.     for( i=0; i < sText.GetLength(); i++ )
  101.     {
  102.         if( m_bAllowLetters )
  103.         {
  104.             if( isalpha(sText[i]) )
  105.             {
  106.                 letter[0] = sText[i];
  107.                 sNew += letter;
  108.             }
  109.         }
  110.     
  111.         if( m_bAllowNumbers )
  112.         {
  113.             if( isdigit(sText[i]) )
  114.             {
  115.                 letter[0] = sText[i];
  116.                 sNew += letter;
  117.             }
  118.         }
  119.  
  120.         if( m_bAllowOthers )
  121.         {
  122.             if( !isdigit(sText[i]) && !isalpha(sText[i]) )
  123.             {
  124.                 letter[0] = sText[i];
  125.                 sNew += letter;
  126.             }
  127.         }
  128.     }
  129.  
  130.     if( (sNew.GetLength() != sText.GetLength()) || (sNew.GetLength() > m_MaxStringLen) )
  131.     {
  132.         if( sNew.GetLength() > m_MaxStringLen )
  133.             sNew = sNew.Left(m_MaxStringLen);
  134.  
  135.         pEdit->GetSel( selStart, selEnd );
  136.         pEdit->SetWindowText( sNew );
  137.         pEdit->SetSel( selStart-1, selEnd-1 );
  138.     
  139.         if( m_bBeeping )
  140.             MessageBeep(0);
  141.     }
  142.  
  143.     GetDlgItem(IDOK)->EnableWindow(strlen(sNew) > 0 ? TRUE : FALSE);    
  144. }
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.