创建对话框应用程序
- CTest6_1App:为程序运行的基础,它使程序在Windows下可以运行多个实例。
- CTest6_1Dlg:是对话框类。
- MFC AppWizard(exe) —— test6_1 —— 对话框 —— 默认下一步
创建对话框
如果应用程序不止一个对话框时,则需要手动创建对话框。
- 工作环境中的Resource View面板,右击Dialog,然后选择插入Dialog
- 利用MFC ClassWizard可以实现创建对话框资源所对应的类。右击对话框标题栏,建立类向导,选择创建new class。
- new class 对话框,输入类名dlg1,确定,确定。class面板就多了一个类。
使用模态对话框
- 模态对话框始终占据焦点,不关闭,其他程序无法进行。
- 模态对话框利用对话框类DoModal函数实现。IDOK或INCANCEL
- View|ClassWizard命令,选择IDOK、BN_CLICKED、Add Member Function。
- 在CTest6_1Dlg::OnOk,添加代码
- 在test6_1Dlg.cpp前添加头文件
dlg1 test;
int result=test.DoModal();
if(result==IDOK)
AfxMessageBox("单击确定");
else
AfxMessageBox("单机取消");
使用非模态对话框
- 在类CTest6_1Dlg声明前添加dlg1声明语句。在类CTest6_1中添加变量dlg1 *pdlg;并且在CTest6_1Dlg构造函数初始化为NULL,cpp中添加头文件dlg1.h
class dlg1;//+++声明
class CTest6_1Dlg : public CDialog
{
……
}
- 同上,代码改一下,屏蔽掉CDialog::OnOK();
// TODO: Add extra validation here
if((pdlg!=NULL)&&::IsWindow(pdlg->m_hWnd))//判断对话框是否已经被创建
{
AfxMessageBox("对话框已经被创建");
pdlg->ShowWindow(SW_SHOW);//已经被创建,直接显示
}
else
{
pdlg=new dlg1(NULL);//没有被创建,则创建对象
}
if(!::IsWindow(pdlg->m_hWnd))
{
pdlg->Create(IDD_DIALOG1,NULL);//创建对话框
pdlg->ShowWindow(SW_SHOW);//显示对话框
}
//CDialog::OnOK();
- 销毁窗口:在ClassView面板右击dlg1类图标,Add Virtual Function,选择PostNcDestory,单击Add Handler按钮,单击Edit Exiting按钮,添加delete this;屏蔽掉CDialog::PostDestroy();
设置对话框属性
- 标题
- 样式
添加控件变量
- 创建一个对话框程序,放入一个编辑框
- 右击编辑框,选择类向导,Member Variables,Add Variable,名字m_cstring1、value、CString
- 按钮添加消息响应函数
UpdateData(true);//文本框数据和变量进行交互
AfxMessageBox(m_cstring1);//输出值
CDialog::OnOK();//调用基类的OnOk函数
界面中数据的处理——数据成员和成员函数
数据成员
在应用程序开发中有时需要在类中添加新的变量,在类中添加变量直接打开类文件,然后进行添加就可以了。类的定义都是在.h文件中,可以打开相应的文件查找相应的类,然后在相应的位置添加变量就可以了。但是有时候并不知道一个类到底在那个文件中,实际中常常在ClassView中双击进入。
成员函数
添加成员函数与添加数据成员的方法基本相似。不同之处在于,函数的具体代码一般不在类中直接实现,而是在.c文件中实现。也就是在类中添加函数,在类的外部实现函数代码。
消息处理函数
- 在类CTest6_1中添加