MaskEditDlg.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:9k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // MaskEditDlg.cpp : implementation file
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "MaskEdit.h"
  22. #include "MaskEditDlg.h"
  23. #include "AboutDlg.h"
  24. #ifdef _DEBUG
  25. #define new DEBUG_NEW
  26. #undef THIS_FILE
  27. static char THIS_FILE[] = __FILE__;
  28. #endif
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CMaskEditDlg dialog
  31. CMaskEditDlg::CMaskEditDlg(CWnd* pParent /*=NULL*/)
  32. : CXTResizeDialog(CMaskEditDlg::IDD, pParent)
  33. {
  34. //{{AFX_DATA_INIT(CMaskEditDlg)
  35. m_strEditMask = _T("");
  36. m_strLiteral = _T("");
  37. m_strDefault = _T("");
  38. m_bDefault = FALSE;
  39. m_strPrompt = _T("_");
  40. //}}AFX_DATA_INIT
  41. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  42. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  43. }
  44. void CMaskEditDlg::DoDataExchange(CDataExchange* pDX)
  45. {
  46. CXTResizeDialog::DoDataExchange(pDX);
  47. //{{AFX_DATA_MAP(CMaskEditDlg)
  48. DDX_Control(pDX, IDC_EDIT_PROMPT, m_editPrompt);
  49. DDX_Control(pDX, IDC_BTN_HELP, m_btnHelp);
  50. DDX_Control(pDX, IDC_EDIT_LITERAL, m_editLiteral);
  51. DDX_Control(pDX, IDC_EDIT_MASK, m_editMask);
  52. DDX_Control(pDX, IDC_EDIT_DEFAULT, m_editDefault);
  53. DDX_Control(pDX, IDC_LBOX_MASK, m_lboxMask);
  54. DDX_Control(pDX, IDC_EDIT_MASKEDIT, m_editMaskEdit);
  55. DDX_Control(pDX, IDC_GBOX_PROPERTIES, m_grpProperties);
  56. DDX_Text(pDX, IDC_EDIT_MASK, m_strEditMask);
  57. DDX_Text(pDX, IDC_EDIT_LITERAL, m_strLiteral);
  58. DDX_Text(pDX, IDC_EDIT_DEFAULT, m_strDefault);
  59. DDX_Check(pDX, IDC_CHK_DEFAULT, m_bDefault);
  60. DDX_Text(pDX, IDC_EDIT_PROMPT, m_strPrompt);
  61. //}}AFX_DATA_MAP
  62. }
  63. BEGIN_MESSAGE_MAP(CMaskEditDlg, CXTResizeDialog)
  64. //{{AFX_MSG_MAP(CMaskEditDlg)
  65. ON_WM_SYSCOMMAND()
  66. ON_WM_PAINT()
  67. ON_WM_QUERYDRAGICON()
  68. ON_WM_DESTROY()
  69. ON_LBN_SELCHANGE(IDC_LBOX_MASK, OnSelchangeLboxMask)
  70. ON_BN_CLICKED(IDC_CHK_DEFAULT, OnChkDefault)
  71. ON_BN_CLICKED(IDC_BTN_UPDATE, OnUpdate)
  72. ON_BN_CLICKED(IDC_BTN_HELP, OnHelp)
  73. //}}AFX_MSG_MAP
  74. END_MESSAGE_MAP()
  75. struct MASK_ITEM
  76. {
  77. LPCTSTR lpszMask;
  78. LPCTSTR lpszLiteral;
  79. LPCTSTR lpszDefault;
  80. };
  81. static MASK_ITEM _maskArray[] =
  82. {
  83. { _T("Phone No: (000) 000-0000"),    _T("Phone No: (___) ___-____"),    _T("Phone No: (800) 555-1212")    },
  84. { _T("SSN: 000-00-0000"),            _T("SSN: ___-__-____"),            _T("SSN: 123-45-6789")            },
  85. { _T("IP Address: 000.000.000.000"), _T("IP Address: ___.___.___.___"), _T("IP Address: 192.168.100.100") },
  86. { _T("Currency: $0,000.00"),         _T("Currency: $_,___.__"),         _T("Currency: $1,250.29")         },
  87. { _T("Hex: 0xHHHHHHHH"),             _T("Hex: 0x________"),             _T("Hex: 0x0012FCE4")             },
  88. { _T("Date: 00/00/00"),              _T("Date: __/__/__"),              _T("Date: 08/26/02")              },
  89. { _T("Time: 00:00"),                 _T("Time: __:__"),                 _T("Time: 14:25")                 },
  90. { _T("Upper Case: >>>>>>>"),         _T("Upper Case: _______"),         _T("Upper Case: ABCDEFG")         },
  91. { _T("Lower Case: <<<<<<<"),         _T("Lower Case: _______"),         _T("Lower Case: abcdefg")         },
  92. { _T("Alpha: LLLLLLL"),              _T("Alpha: _______"),              _T("Alpha: AbCdEfG")              },
  93. { _T("Alpha-Numeric: AAAAAAA"),      _T("Alpha-Numeric: _______"),      _T("Alpha-Numeric: AbC1234")      },
  94. };
  95. /////////////////////////////////////////////////////////////////////////////
  96. // CMaskEditDlg message handlers
  97. BOOL CMaskEditDlg::OnInitDialog()
  98. {
  99. CXTResizeDialog::OnInitDialog();
  100. // Add "About..." menu item to system menu.
  101. // IDM_ABOUTBOX must be in the system command range.
  102. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  103. ASSERT(IDM_ABOUTBOX < 0xF000);
  104. CMenu* pSysMenu = GetSystemMenu(FALSE);
  105. if (pSysMenu != NULL)
  106. {
  107. CString strAboutMenu;
  108. strAboutMenu.LoadString(IDS_ABOUTBOX);
  109. if (!strAboutMenu.IsEmpty())
  110. {
  111. pSysMenu->AppendMenu(MF_SEPARATOR);
  112. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  113. }
  114. }
  115. // Set the icon for this dialog.  The framework does this automatically
  116. //  when the application's main window is not a dialog
  117. SetIcon(m_hIcon, TRUE);         // Set big icon
  118. SetIcon(m_hIcon, FALSE);        // Set small icon
  119. // initialize edit controls.
  120. m_editLiteral.Initialize(this);
  121. m_editMask.Initialize(this);
  122. m_editDefault.Initialize(this);
  123. m_editMaskEdit.Initialize(this);
  124. // initialize the list box.
  125. m_lboxMask.Initialize();
  126. // Add masks to the list box.
  127. int i;
  128. for ( i = 0; i < _countof(_maskArray); ++i )
  129. {
  130. m_lboxMask.AddString( _maskArray[ i ].lpszMask );
  131. }
  132. m_lboxMask.SetCurSel( 0 );
  133. OnSelchangeLboxMask();
  134. // Set control resizing.
  135. SetResize(IDC_EDIT_MASKEDIT,   SZ_TOP_LEFT,     SZ_TOP_RIGHT);
  136. SetResize(IDC_TXT_MASK,        SZ_TOP_CENTER,   SZ_TOP_RIGHT);
  137. SetResize(IDC_LBOX_MASK,       SZ_TOP_CENTER,   SZ_TOP_RIGHT);
  138. SetResize(IDC_BTN_UPDATE,      SZ_TOP_CENTER,   SZ_TOP_CENTER);
  139. SetResize(IDC_EDIT_MASK,       SZ_TOP_LEFT,     SZ_TOP_CENTER);
  140. SetResize(IDC_EDIT_PROMPT,     SZ_TOP_LEFT,     SZ_TOP_CENTER);
  141. SetResize(IDC_EDIT_LITERAL,    SZ_TOP_LEFT,     SZ_TOP_CENTER);
  142. SetResize(IDC_EDIT_DEFAULT,    SZ_TOP_LEFT,     SZ_TOP_CENTER);
  143. SetResize(IDC_GBOX_PROPERTIES, SZ_TOP_LEFT,     SZ_TOP_CENTER);
  144. SetResize(IDCANCEL,            SZ_BOTTOM_RIGHT, SZ_BOTTOM_RIGHT);
  145. SetResize(IDOK,                SZ_BOTTOM_RIGHT, SZ_BOTTOM_RIGHT);
  146. // prevent vertical resizing.
  147. SetFlag(xtResizeNoVertical);
  148. // Load window placement
  149. LoadPlacement(_T("CMaskEditDlg"));
  150. return TRUE;  // return TRUE  unless you set the focus to a control
  151. }
  152. void CMaskEditDlg::OnDestroy()
  153. {
  154. // Save window placement
  155. SavePlacement(_T("CMaskEditDlg"));
  156. CXTResizeDialog::OnDestroy();
  157. }
  158. void CMaskEditDlg::OnSysCommand(UINT nID, LPARAM lParam)
  159. {
  160. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  161. {
  162. CAboutDlg dlgAbout;
  163. dlgAbout.DoModal();
  164. }
  165. else
  166. {
  167. CXTResizeDialog::OnSysCommand(nID, lParam);
  168. }
  169. }
  170. // If you add a minimize button to your dialog, you will need the code below
  171. //  to draw the icon.  For MFC applications using the document/view model,
  172. //  this is automatically done for you by the framework.
  173. void CMaskEditDlg::OnPaint()
  174. {
  175. if (IsIconic())
  176. {
  177. CPaintDC dc(this); // device context for painting
  178. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  179. // Center icon in client rectangle
  180. int cxIcon = GetSystemMetrics(SM_CXICON);
  181. int cyIcon = GetSystemMetrics(SM_CYICON);
  182. CRect rect;
  183. GetClientRect(&rect);
  184. int x = (rect.Width() - cxIcon + 1) / 2;
  185. int y = (rect.Height() - cyIcon + 1) / 2;
  186. // Draw the icon
  187. dc.DrawIcon(x, y, m_hIcon);
  188. }
  189. else
  190. {
  191. CXTResizeDialog::OnPaint();
  192. }
  193. }
  194. // The system calls this to obtain the cursor to display while the user drags
  195. //  the minimized window.
  196. HCURSOR CMaskEditDlg::OnQueryDragIcon()
  197. {
  198. return (HCURSOR) m_hIcon;
  199. }
  200. void CMaskEditDlg::OnSelchangeLboxMask()
  201. {
  202. // get the current selection from the list box.
  203. int iSel = m_lboxMask.GetCurSel( );
  204. // if a valid selection has been made
  205. if ( LB_ERR != iSel )
  206. {
  207. // update the edit fields
  208. m_strEditMask = _maskArray[ iSel ].lpszMask;
  209. m_strLiteral  = _maskArray[ iSel ].lpszLiteral;
  210. m_strDefault  = _maskArray[ iSel ].lpszDefault;
  211. // set the edit mask
  212. m_editMaskEdit.SetEditMask(
  213. m_strEditMask, m_strLiteral, m_bDefault ? m_strDefault : m_strLiteral );
  214. m_editMaskEdit.SetPromptChar( '_' );
  215. m_strPrompt = '_';
  216. // enable / disable default edit
  217. m_editDefault.EnableWindow( m_bDefault );
  218. UpdateData( FALSE );
  219. }
  220. }
  221. void CMaskEditDlg::OnChkDefault()
  222. {
  223. UpdateData();
  224. m_editDefault.EnableWindow( m_bDefault );
  225. }
  226. void CMaskEditDlg::RemoveSpaces( CString& strIn )
  227. {
  228. CString strBuffer;
  229. int i;
  230. for ( i = 0; i < strIn.GetLength(); ++i )
  231. {
  232. TCHAR ch = strIn.GetAt( i );
  233. if ( ch != ' ' )
  234. {
  235. strBuffer += ch;
  236. }
  237. }
  238. strIn = strBuffer;
  239. }
  240. void CMaskEditDlg::OnUpdate()
  241. {
  242. UpdateData( );
  243. int iLen1 = m_strEditMask.GetLength();
  244. int iLen2 = m_strLiteral.GetLength();
  245. int iLen3 = m_strDefault.GetLength();
  246. if ( iLen1 != iLen2 || (iLen1 != iLen3 && m_bDefault) )
  247. {
  248. AfxMessageBox( _T("The fields for Mask, Literal and Default must be the same length.") );
  249. OnSelchangeLboxMask();
  250. return;
  251. }
  252. TCHAR ch = '_';
  253. if ( m_strPrompt.GetLength( ) )
  254. {
  255. ch = m_strPrompt.GetAt( 0 );
  256. }
  257. m_strLiteral.Replace(
  258. m_editMaskEdit.GetPromptChar( ), ch );
  259. // set the edit mask
  260. m_editMaskEdit.SetEditMask(
  261. m_strEditMask, m_strLiteral, m_bDefault ? m_strDefault : m_strLiteral );
  262. m_editMaskEdit.SetPromptChar( ch );
  263. m_strPrompt = ch;
  264. m_editDefault.EnableWindow( m_bDefault );
  265. UpdateData( FALSE );
  266. }
  267. void CMaskEditDlg::OnHelp()
  268. {
  269. if ( ::IsWindow( m_dlg.m_hWnd ) )
  270. {
  271. m_dlg.DestroyWindow();
  272. }
  273. if ( m_dlg.Create( IDD_MASKHELP ) )
  274. {
  275. m_dlg.ShowWindow( SW_SHOW );
  276. m_dlg.UpdateWindow();
  277. }
  278. }