Parse phone fields | CodeGuru

Parse phone fields

Here is a function I use to parse phone fields. I’ve tested this on Windows 95/NT with Visual C++ 5.0 SP1/2. This works by changing the value to a formatted phone number. I’m sure there could be some code improvements here, and would appreciate any suggestions anyone might have. //Definition void AFXAPI DDX_Phone(CDataExchange* pDX, int […]

Written By
CodeGuru Staff
CodeGuru Staff
Aug 7, 1998
1 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

Here is a function I use to parse phone fields. I’ve tested this on
Windows 95/NT with Visual C++ 5.0 SP1/2.

This works by changing the value to a formatted phone number.

I’m sure there could be some code improvements here, and would
appreciate any suggestions anyone might have.

//Definition
void AFXAPI DDX_Phone(CDataExchange* pDX, int nIDC, CString& value);

//Implementation
void AFXAPI DDX_Phone(CDataExchange* pDX, int nIDC, CString& value)
{
      HWND hWndCtrl = pDX->PrepareEditCtrl(nIDC);
      if (pDX->m_bSaveAndValidate)
      {
            int nLen = ::GetWindowTextLength(hWndCtrl);
            ::GetWindowText(hWndCtrl, value.GetBufferSetLength(nLen),nLen+1);
            value.ReleaseBuffer();

      }
      else
      {
            CString newValue;
            for(int x=0; x < value.GetLength();x++)
            {
                  if(value[x] != '(' &&
                        value[x] != ')' &&
                        value[x] != '-' &&
                        value[x] != ' ' &&
                        value[x] != '.')

                        newValue += value[x];

            }
            if(newValue.GetLength()==7)
				newValue.Format("%s-%s",newValue.Left(3),newValue.Right(4));
            else if(newValue.GetLength()==10)
                newValue.Format("(%s)%s-%s",newValue.Left(3),newValue.Mid(3,3),newValue.Right(4));
            else if(newValue.GetLength()>10)
                newValue.Format("(%s) %s-%s%s",newValue.Left(3),newValue.Mid(3,3),newValue.Mid(6,4),newValue.Right(newValue.GetLength()-10));
            else
                newValue = value;

            AfxSetWindowText(hWndCtrl, newValue);
      }
}
CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.