Parse phone fields
Posted
by Jeff Lundgren
on August 7th, 1998
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);
}
}







Comments
There are no comments yet. Be the first to comment!