MFC 基础知识:主对话框与子对话框(二)

来源:互联网 发布:h5微场景页面源码 编辑:程序博客网 时间:2024/04/29 12:58

(仅供使用VS MFC初学者学习,高手莫见笑)
接"MFC 基础知识:主对话框与子对话框(一)"的内容
在"MFC 基础知识:主对话框与子对话框(一)"中Edit Control(编辑框)控件中输出内容,主要是想讲讲在创建的子对话框中如何实现一些操作:即添加OnInitDialog初始化函数的操作,这里的操作VS2012与VC++6.0略有些改动.

一. 主对话框编辑框中输出内容

1.找到主对话框XXXDlg.cpp中的OnInitDialog()初始化函数,在函数注释“//TODO:在此添加额外的初始化代码”后面添加显示在Edit中的代码。

//获取编辑框ID并显示内容
GetDlgItem(IDC_EDIT1)->SetWindowText(_T("在主对话框编辑框Edit中显示"));
如下图所示:

如果要在中文后面输出变量的值,用CString::Format()
CString str;
str.Format( _T("数值=%d"),1000 );
GetDlgItem( ID_EDIT )->SetWindowText( str);

2.运行结果如下图所示:

注意:_T()表示UNICODE编码的TEXT,如果不是UNICODE不用_T(),通常在创建工程时把“使用Unicode库”前面的勾去掉。

3.编辑框实现换行的两种方法:
输入换行:设置编辑框的属性:Mutilines->true;Want return->true
输出换行:将控件的属性设置为Mutilines->true;输出字符串换行符”\r\n”(回车换行),而不是”\n”。

注意:设置Edit为只读采用的方法是设置它的属性Read Only->true,y也可以类向导中添加CEdit类变量m_edit,通过调用函数设置m_edit.XXX.

二. 子对话框编辑框输出内容

MFC新建的子对话框中通常没有用于初始化对话框的OnInitDialog()函数,需要手动添加,通过打开类向导方式添加。

在VC6中的方法是:查看->建立类向导(快捷键Ctrl+W打开类向导)->Message Maps->选择Classname->Objects IDs 选择对话框的ID->Messages中选择WM_INITDIALOG->点击Add Function即可。

1.为子对话框添加OnInitDialog()函数:在VS2012类向导(快捷键Ctrl+Shift+X)Class Wizard中没有VC6中的WM_INITDIALOG消息响应,而是采用虚函数中OnInitDialog()函数添加,如下图双击OnInitDialog添加初始化函数。
(注意:是向CSubDlg子对话框类添加该函数)

2.在“已重写的虚函数”中双击OnInitDialog会自动在SubDlg.cpp中建立一个初始化函数,如下图所示,我保留一个return true。

3.添加代码

GetDlgItem(IDC_EDIT1)->SetWindowText(_T("子对话框\r\n编辑框Edit中显示属性"));

4.运行结果如下图所示:

注意:如果出现error:“DDX_Control”不能将参数3从CString转换为CWnd&见:
http://blog.csdn.net/eastmount/article/details/9052735
这里要感谢很多博主,它们让我学到了很多知识,最后高手莫见笑,希望能帮助到大家吧!若有错误见谅.
(2013-6-8 夜3点 By:Eastmount)