MFC限制edit控件的字符输入长度

一.

  1.Edit 控件添加EN_CHANGE事件

#define MAX_SIZE                     200 


void CMyDlg::OnChangeEditFeed()
{
    // TODO:  如果该控件是 RICHEDIT 控件,它将不
    // 发送此通知,除非重写 CDialogEx::OnInitDialog()
    // 函数并调用 CRichEditCtrl().SetEventMask(),
    // 同时将 ENM_CHANGE 标志“或”运算到掩码中。

    // TODO:  在此添加控件通知处理程序代码
    CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT);
    CString strContent;
    pEdit->GetWindowText(strContent);

    DWORD dwNum = 0;

    dwNum = WideCharToMultiByte(CP_UTF8, 0, strContent, -1, NULL, 0, NULL, NULL);

    if (dwNum > MAX_SIZE)
    {
        SetDlgItemText(IDC_EDIT_FEED, strContent.Left(MAX_SIZE));
        pEdit->SetSel(strContent.GetLength(), strContent.GetLength());//重设给光标设置位置 指向最后           
    }
}

 

2.CString 获取中文,字母及数字的字节数

 转载:https://blog.csdn.net/qiangzi4646/article/details/62881587

CString text = _T("中国12ab");
int len1 = text.GetLength();//获取的是字符数量,值为 6
int len2 = CStringA(text).GetLength();//获取的是字节数量,值为 8

二.MFC基于对话框程序——固定主对话框大小

     1. 用记事本打开.rc格式文件

     2. 找到主对话框的相关信息,例如下面

     IDD_TEST_DIALOG DIALOGEX 0, 0, 320, 200
     STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME

     3. 将“| WS_THICKFRAME”去掉,保存重新编译即可

原文地址:https://www.cnblogs.com/chechen/p/10070018.html