• MFC编辑框控件属性和用法


    目录

    一、编辑框的属性

    1.want return

    2.Multiline

    3.滚动条

    4.添加完效果

    二、初始化编辑框内容

    三、复制与退出

    四、edit control的值类型

    五、思维拓展


    一、编辑框的属性

     默认情况下编辑框edit control 是可以横向无限输入的

    1.want return

    支持换行,运行程序后想在编辑框里通过换行来输入接下来的内容,把它设为true即可

    如果此属性是FALSE,运行程序一旦在编辑框内回车就会导致退出整个程序

     解决这个一回车就退出的小bug方法就是,在类视图中找到Dlg后缀的文件,左键选中之后右键属性,可以跳转到一个有重写的属性面板,找到其中的on ok,其小三角下拉框点击add on ok

    会跳转到这样一段代码,可以看到有CDialogEx::OnOK(); 这个是让程序按回车(以确定的方式)退出的,只需要把它注释掉就可以放心在编辑框中敲回车了

    2.Multiline

     支持多行输入,此功能与want return 搭配使用可以敲多行文本(新版 VS2017以上不用打开auto  hoerizen)也可以实现纵向无限输入,旧版本则需要打开此属性

    3.滚动条

     水平滚动条,horzontal scroll  横向的滚动条,方便定位在编辑框中输入的每一列中的内容

    垂直滚动条vertical scroll 竖的,定位行 内容

    4.添加完效果

    二、初始化编辑框内容

    ctrl+鼠标左键拖拽复制控件(属性也和上一个一样,就caption不一样)

    给两个编辑框分别添加变量,命名为edit_1,edit_2

    找到类视图,选中Dlg后缀的文件,找到oninitdialog,双击,定位到该函数

    添加初始化edit_control1的代码

       // TODO: 在此添加额外的初始化代码
        m_edit1.SetWindowTextW(TEXT("面朝大海 春暖花开"));//设置默认显示,初始化edit1

     这样运行起来就会默认有内容显示了

    三、复制与退出

    添加一个button改caption为“复制”

    双击button进入其函数,先获取edit1的内容再设置给edit2

    1. void CBianJiKuangDlg::OnBnClickedButton1()//复制 button的函数
    2. {
    3. //获取edit1的内容,然后复制
    4. CString str;
    5. m_edit1.GetWindowTextW(str);
    6. m_edit2.SetWindowTextW(str);//把edit2的内容设置为edit1获取到的str
    7. }

    再添加一个退出按钮,写入退出程序的代码

    退出的方法有很多种

    1. void CBianJiKuangDlg::OnBnClickedButton2()//退出按钮
    2. {
    3. // TODO: 在此添加控件通知处理程序代码
    4. //exit(0);//最简单粗暴的退出方法
    5. //CDialog::OnOK();//以确定的方式来退出
    6. CDialog::OnCancel();//以取消的方式来退出
    7. }

    这样就可以实现程序的复制和退出了

    四、edit control的值类型

    在原基础上,添加一个新的edit control ,添加变量时把类别改为值

    尝试直接对编辑框内容进行操作

    添加两个button 一个叫设置内容,一个叫获取内容

    双击进入设置内容和获取内容 button的函数,添加如下代码

    void CBianJiKuangDlg::OnBnClickedButton3()//设置内容
    {
        // TODO: 在此添加控件通知处理程序代码
        //设置内容
        m_value=TEXT("海子的诗");
        //将变量内容 同步到控件中
        UpdateData(FALSE);
    }


    void CBianJiKuangDlg::OnBnClickedButton4()//获取内容
    {
        // TODO: 在此添加控件通知处理程序代码
        //v_value本身就是cstring类型,所以可以直接把他传入messagebox中
        //将控件内容同步到变量中
        UpdateData(TRUE);//和将变量内容 同步到控件中  反着来
        MessageBox(m_value);//弹出内容显示
    }

    有无updata的差别就是在获取内容之后,继续执行内容修改,获取的内容是否会随着edit control内新输入的内容更新显示

    也可以更改属性,实现多行显示

    纵向想无限输入却被限制了?打开竖向的滚动条就可以纵向无限输入了

    五、思维拓展

    把复制内容用值类别的方式传递呢?

    也就是改写控件变量为,值变量

    复制(或添加两个新的编辑框),分别添加类变量(类型改为值类型(value)),变量名改为v_edit1和v_edit2

    为值方式复制按钮添加如下代码即可实现

    void CBianJiKuangDlg::OnBnClickedButton5()//值方式复制
    {
        // TODO: 在此添加控件通知处理程序代码
        UpdateData(TRUE);//将控件内容同步到变量中
        v_edit1 = TEXT("值方式的 面朝大海 春暖花开");
        v_edit2 = v_edit1;
        UpdateData(FALSE);
    }

    可以实现

    更改内容试试看是否能同步复制更新,答案是不可以,重新点击,还是会变成代码中的语句

    果然是我太笨了,拓展这里换不过来--^^--~,望指教

  • 相关阅读:
    leetcode 13
    CentOS7.6上实现Spring Boot(JAR包)开机自启
    SpringCloud Alibaba Nacos注册中心官方文档——快速开始
    MySQL——四、SQL语句(下篇)
    LeetCode(32)串联所有单词的子串【滑动窗口】【困难】(含图解)
    Kubernetes kubelet 状态上报/节点资源的管理
    基于OpenGL和GLSL实现一个三维图形绘制交互程序,能够读入三维obj文件、绘制并打上光照(同时实现线框图和实体图绘制),并且实现基本的三维交互—包含平移、旋转和缩放。
    LNMP和数据库的安装
    uniapp开发H5及app监听返回事件(以及监听不到的处理方法)
    9 个让你的 Python 代码更快的小技巧
  • 原文地址:https://blog.csdn.net/qq_58619891/article/details/128058066