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

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

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

退出的方法有很多种

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

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

四、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);
}

可以实现

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

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

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值