第6章 最简单的界面化程序——对话框

本文详细介绍了如何在Windows环境中使用MFC进行对话框编程,包括创建对话框应用程序、模态与非模态对话框的使用、设置对话框属性、添加控件变量以及处理界面数据。还涵盖了通用对话框如文件、字体、颜色和查找替换对话框的实现方法。
摘要由CSDN通过智能技术生成

创建对话框应用程序

  • 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中添加
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值