MFC之编辑框

初始操作

新建MFC应用程序,项目名为EditCtrl,基于对话框。

删除原有控件在右侧工具箱中找到Edit Control。放置到窗口中。如图:

现在的编辑框只可以在一行输入,无法换行,同时如果按下enter换行会直接退出程序。

多行输入&文本向上滚动&滚动条

1.多行输入
右键属性,找到Multiline,改成True。以及Want Return也改为True。这时候就可以多行输入了。

但一个问题,如图,一行可以一直敲很多字符,但行数一旦占满编辑框就无法再增加行了。

2.文本向上滚动
右键属性,找到Auto VScroll,改成True。这样就可以输入很多行了,由于图片不直观,不放图了。

现在一个问题时没有滚动条,行数太多无法很快返回。

3.滚动条
同样在右键属性中,找到Horizontal Scroll以及Vertical Scroll,都改为True。

一个示例

按住ctrl复制出一个同样的编辑框,并从工具箱中添加两个按钮。

实现功能是点击复制按钮,上面编辑框的内容就复制到下面的编辑框,点击退出就是退出程序。

在上面的编辑框中右键添加变量,设置属性private,变量名n_edit1。而下面的编辑框中右键添加变量,设置属性private,变量名n_edit2。

如果变量名较多,可以在界面上右键选择类向导,即可查看。

定位到:类视图--CEditCtrlDlg--OnInitDialg()中,在其中添加代码。

1.添加编辑框默认显示内容

n_edit1.SetWindowTextW(TEXT("C++"));

2.设置复制按钮的点击事件
双击按钮,进入点击事件中,添加代码。

//获取d到edit1的内容,然后给edit2
CString str;
n_edit1.GetWindowTextW(str);
n_edit2.SetWindowTextW(str);

执行,点击复制按钮后:

3.设置退出按钮
双击按钮,进入点击事件中,添加代码。

//退出程序
exit(0); 

//退出当前对话框
CDialog::OnOK();

CDialog::OnCancel();

后两种的不同之处在于:
CDialog::OnOK首先调用UpdateData(TRUE)将数据传给对话框成员变量,然后调用CDialog::EndDialog关闭对话框;
CDialog::OnCancel只调用CDialog::EndDialog关闭对话框;

关于按下enter换行会直接退出程序

单个未改动的编辑框,换行会使得程序直接退出,尝试更改。
首先在原来项目基础上新增一个编辑框。

然后再本项目Dlg右键属性,选择重写。然后定位到OnOk()中,注释掉里面的CDialog::OnOK();即可。

原文地址:https://www.cnblogs.com/echobiscuit/p/12716214.html