zoukankan      html  css  js  c++  java
  • 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));
    }
    
  • 相关阅读:
    基于VitralBox 的 OpenEuler系统 安装增强功能
    OpenEuler 操作系统 安装 银河麒麟GUI界面
    OpenEuler 操作系统的安装
    vscode 安装markdown插件 及 实用markdown语法
    无限技能下的密码系统愿景
    商用密码企业调研
    实验四 Python综合实践 ——20191331刘宇轩
    20191331 《Python程序设计》实验三报告
    9.29载入史册的一天
    人生的四天半
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1989789.html
Copyright © 2011-2022 走看看