MFC无模态对话框程序结构

//  MFC无模态对话框架构   //
/*
 设置:
   1.在VS2019中创建一个空项目
   2.项目->属性->配置属性->高级->MFC的使用 选"在静态库中使用MFC"
   3.项目->属性->配置属性->高级->字符集 选"使用多字节字符集"
   4.项目->属性->配置属性->链接器->系统->子系统 选"窗口"
   5.添加对话框资源 右键方案名称->添加->资源->Dialog->新建(资源ID:IDD_DIALOG1)
*/
#include<afxwin.h>
#include "resource.h"

//第1步:公开继承CDialog声明CMyDlg(对话框类)
class CMyDlg :public CDialog { 
    //1.1 类内声明消息处理宏
    DECLARE_MESSAGE_MAP(CMyDlg) 
public:
    //1.2 类内声明消息处理函数
    void OnMyOK();
    void OnMyCancel();
};
//1.3 类外实现消息处理函数OnMyOK
void CMyDlg::OnMyOK() {
    //CDialog::OnOK();// 父类CDialog::OnOK()函数中调用了EndDialog(IDOK),EndDialog是对话框类的成员函数,
                      // 会在对话框关闭前被调用,类似于析构函数。在无模态对话框中仅能将窗口隐藏(不能退出)
    //1.4 点击确定时窗口关闭退出
    ::DestroyWindow(this->m_hWnd);//全局函数DestroyWindow可以用来销毁对话框窗口,参数为窗口句柄
                                  //这里this是对话框类对象指针pdlg,通过其成员函数m_hWnd取得对话框句柄
}   
//1.5 类外实现消息处理函数OnMyCancel
void CMyDlg::OnMyCancel() {
    this->DestroyWindow();//利用CMyDlg的成员函数销毁对话框;函数前this指针即后边的pdlg,因此不用参数
}
//1.6 类外实现消息处理宏
BEGIN_MESSAGE_MAP(CMyDlg,CDialog)
    ON_COMMAND(IDOK,OnMyOK) //OK按钮点击消息及处理函数
    ON_COMMAND(IDCANCEL,OnMyCancel)//Cancel按钮点击消息及处理函数
END_MESSAGE_MAP()
//第2步 公开继承CWinApp声明CMyWinApp(应用程序类)
class CMyWinApp :public CWinApp {
public:
    //2.1类内声明重写InitInstance虚函数
    virtual BOOL InitInstance();
};
//2.2类外实现InitInstance虚函数
BOOL CMyWinApp::InitInstance() {
    CMyDlg* pdlg = new CMyDlg;//new方式生成CMyDlg对象指针
    pdlg->Create(IDD_DIALOG1);//CMyDlg对象调用Create生成对话框窗口,参数对话框资源ID
    m_pMainWnd = pdlg;//将new方式生成CMyDlg对象指针存储到应用程序类对象theApp成员变量中
    pdlg->ShowWindow(SW_SHOW);//显示对话框窗口
    pdlg->UpdateWindow();//更新对话框窗口
    return TRUE;
}
//第3步 生成应用程序类对象
CMyWinApp theApp;//程序关键结点,main函数在其中,无此语句程序不能运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值