实现:EDIT控件字符个数与长度的计算

void CtestDlg::OnBnClickedButton1()
{
    CString str;
    int count = 0;
    int length = 0;
    GetDlgItemText(IDC_EDIT_1, str);
    length = str.GetLength();  //得到了字符的长度

    for (int i = 0; i < length; i++) {
        if ((byte)str[i] > 0x7F) { //判断单字符是否大于十进制127 是的话那么为中文字符
            i++;
        }
        count++;
    }
    CString strOut;
    strOut.Format(_T("字符长度为 %d  字符个数为%d"), length, count);
    SetDlgItemText(IDC_STATIC_2, strOut);
}

原文地址:https://www.cnblogs.com/zpchcbd/p/12269858.html

时间: 2024-08-29 18:53:47

实现:EDIT控件字符个数与长度的计算的相关文章

关于Edit控件focused状态,调用自己编写的键盘

一.涉及编写自己的自己的键盘 由于只使用英文字母跟数字等简单的字符而已,没有包括全角或者中文字符.所以直接使用跟手机的输入密码键盘一样的键盘即可. 遇到的问题:1.使用法keybd_event()的方式进行发送消息,不管发送大小写字母都是显示小写字母 2.键盘不能有焦点状态,否则使用的keybd_event则无法将字符发送给edit框.如果使用有焦点的状态则会导致edit控件跟我自己编写的键盘耦合性太大. 3.由于使用duilib的tilelayout而出现键盘的所有按键无法正常对齐. 解决方案

自定义Edit控件控制输入范围

1 //自定义Edit,实现十六进制输入控制,使用OnChar()函数实现 2 //MyEdit.h 3 #pragma once 4 5 class CMyEdit : public CEdit { 6 DECLARE_DYNAMIC(CMyEdit) -----------------------① 7 8 public: 9 CMyEdit(){}; 10 protected: 11 DECLARE_MESSAGE_MAP() ----------------------------② 1

vc 在edit控件中动态插入数据滚动显示

内存从网上论坛摘抄整理 思路:给控件设置多行属性,设置垂直滚动条,Auto Vscroll设置为true,放入文本后把插入点设置到末尾 pEdit->LineScroll(pEdit->GetLineCount()); 滚动条滚动到最下端 int len  = pEdit->GetWindowTextLength(); pEdit->SetSel(len,-1,true); //定位光标到内容末尾pEdit->ReplaceSel("12121212");

unity中计算ugui中Text控件的所需长度

背景是这样的,我在unity中需要在我按下某个按键的时候,然后显示出被射线碰撞到的物体的信息.物体的信息之前已经整理好成txt文本了.读取一下就可以了.那么这时候就有一个问题,因为每个物体的介绍信息不是一样的长度,那么如果当text控件里面文字的长度超过显示的长度时,超过部分就不再显示.那么这该怎么办. 我是通过去便利txt文本中的所有文字和符号,然后将所有换行符也就是/n的个数记录下来,然后计算一下对应字体大小一行有几个字,比如我的是18号字体,那么一行可以写30个字,然后计算一下txt文本中

vc中edit控件使用总结

通过类向导可以生成两种类成员变量,一种是cstring类型,一种是cedit类型.在程序中使用时如果只是简单的获取 edit控件内容,或设置简单的内容建议使用cstring类型成员变量.示例:CString   m_strEdit;//获得edit框内容UpdateData(true);此时m_strEdit就是edit框内容的字符串变量.//要更新edit的话只要对m_strEdit进行赋值然后UpdataData(false);//即可 如果是一些对edit框的复杂操作建议用cedit类型.

emWin(ucGui)的Edit控件退格处理方法 worldsing

在enWin(ucGui)中EDIT控件在数值模式(十进制/十六进制/二进制/浮点数)下编辑是,无法使用BackSpace键进行退格,主要涉及到的函数有: EDIT_SetBinMode() EDIT_SetDecMode() EDIT_SetHexMode() EDIT_SetFloatMode() ? 将Edit控件一旦使用此类的模式是将无法BackSpace键进行退格删除,解决办法如下,响应Edit控件的按键消息,当收到BackSpace键时强制将光标退到上一个字符,那么就使用到接口函数即

WIN32窗口子类化----自定义Edit控件的右键菜单

前言 Win32应用程序中,子控件的消息都是分发到其父窗口的消息处理函数中去了,这对于我们需要自定义子控件的某些特性时时十分不方便的,还好,Windows为我们提供了控件子类化的相关接口API.核心的思想是:通过获取子控件的消息处理函数地址,设置子控件的消息处理函数到自己定义的函数里,也就是Get/SetWindowLong API的使用. 测试代码 这里是一个简单的测试程序,在控制台程序中创建一个对话框,然后对话框上有一个EDIT控件(资源编辑器里拖入的,不多说),子类化EDIT控件,右键弹出

delphi Components[i]清除所有edit控件中的内容

(* 一般的清空combobox方法 combobox1.clear; ... combobox9.clear; *) procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin for i:=0 to self.ComponentCount-1 do begin if self.Components[i] is TCombobox then TCombobox(self.Components[i]).clear;

spin constrol与edit 控件共用

第一步:创建一个spin control,属性 Set Buddy Integer 设为 True,绑定控件为m_spinPollingTime 创建一个edit control,ID为IDC_EDIT_POLLING_TIME, 属性改为只是数字与不可修改, 绑定值为 m_nPollingTime 第二步:在对话框的初始化函数OnInitDialog()里添加 m_spinPollingTime.SetBuddy(GetDlgItem(IDC_EDIT_POLLING_TIME)); // 关