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();即可。