Win32 控件篇(3)

 

6.11 如何在编辑框中追加文本

  1. 用SetWindowText重新设置文本
  2. 用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));
}

转载于:https://www.cnblogs.com/Clingingboy/archive/2011/03/20/1989789.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值