6.11 如何在编辑框中追加文本
- 用SetWindowText重新设置文本
- 用SetSel重新设置文本长度,然后用ReplaceSel替换文本的局部文本
void CDemoDlg::OnTest1()
{
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT);
CString strText = _T("");
//获得当前文本
pEdit->GetWindowText(strText);
strText += _T("ABC1");
//设置追加后的文本
pEdit->SetWindowText(strText);
}
void CDemoDlg::OnTest2()
{
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT);
int nLength = pEdit->GetWindowTextLength();
//选定当前文本的末端
pEdit->SetSel(nLength, nLength);
//l追加文本
pEdit->ReplaceSel(_T("ABC2"));
}
6.12 如何在编辑框中实现多行显示
在每行文本结束追加空格符\r\n
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT);
CString strText = _T("");
for (int n = 0; n < 10; n++)
{
CString strTemp = _T("");
strTemp.Format(_T("Line%d"), n);
strText += strTemp;
if (n < 10 - 1)
{
strText += _T("\r\n");
}
}
pEdit->SetWindowText(strText);
6.13 如何限制编辑框输入文本的长度
文本的总长度是变的,但文本的字体是变化的,所以要以总长度除以每个字符的长度
TEXTMETRIC tm;
CDC* pDC = m_ctrlEdit.GetDC();
pDC->GetTextMetrics(&tm);
m_ctrlEdit.ReleaseDC(pDC);
//获得编辑框的格式化矩形
CRect rect;
m_ctrlEdit.GetRect(&rect);
m_ctrlEdit.LimitText(rect.Width() / tm.tmAveCharWidth);
6.14 如何限制编辑框只能输入数字
在OnChar事件中判断输入字符的编码
void CDemoEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
//判断字符是否为数字
if ((nChar < '0') || (nChar > '9'))
{
if (nChar != VK_BACK)
{
AfxMessageBox(_T("请输入数字。"));
return;
}
}
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
6.15 如何将编辑框中输入的字符转换为大写(小写)
调用对应的IsCharUpper和CharUpper方法或者IsCharLower和CharLower方法,然后用DefWindowProc方法处理消息
void CDemoEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
//将字符转换为大写字符
if (!IsCharUpper((TCHAR)nChar))
{
nChar = (UINT)CharUpper((TCHAR*)nChar);
}
// //将字符转换为小写字符
// if (!IsCharLower((TCHAR)nChar))
// {
// nChar = (UINT)CharLower((TCHAR*)nChar);
// }
//处理消息
DefWindowProc(WM_CHAR, nChar, MAKELPARAM(nRepCnt, nFlags));
}