MFC学习笔记--模态对话框

创建

创建MFC应用程序
在这里插入图片描述
选择基于对话框
在这里插入图片描述
转到对话框:解决方案中的资源文件.rc;资源视图中 dialog中的dialog。
在这里插入图片描述

操作

可通过右键→属性的方式
caption:对话框名称(也可选中控件直接输入)

创建窗口:
资源视图中,Dialog文件夹上右键→插入Dialog。
修改窗口ID:
资源视图中右键对应的dialog。

添加关联类:
选中控件,右键→添加关联类;
在这里插入图片描述
切换至类视图,可以看到增加了一个类。

为控件添加事件:
1、 右键→属性→控件事件(闪电图标),选择后选add
2、 右键控件→添加事件处理程序
3、双击(只支持鼠标单击事件)

模态对话框的实现

  创建一个新窗口(用于弹出),为此窗口添加关联类(CDlgEXEC),在父窗口中引用此类,按钮事件中弹出。模态对话框具有阻塞的功能,即弹出后不消失。

添加头文件

#include"DlgEXEC.h"

事件:

void C模态对话框Dlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	//弹出模态对话框
	CDlgEXEC dlg;
	dlg.DoModal();
}

ps:
  引用头文件时,如果头文件以大写C开头,可以不写C。

非模态对话框的实现

将对话框关联一个类CDlgShow;在父窗口类中引用此类头文件,并添加一个该类的成员:

#include "DlgShow.h"
//...
private:
	CDlgShow dlg;

在父窗口类的OnInitDialog()函数定义中增加窗口创建函数:

	// TODO: 在此添加额外的初始化代码
	dlg.Create(IDD_SHOW);//创建窗口只能创建一次,多次创建会崩溃

在单击非模态对话框按钮事件中增加显示窗口:

void CMFCModalDlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	//显示
	dlg.ShowWindow(SW_SHOWNORMAL);//弹出模式
}

ps:
  非模态方式展示对话框不能直接在按钮单击事件中创建,会导致窗口闪退,所以将父窗口增加一个成员;同时在单击事件中执行create,会重复创建窗口,导致崩溃,创建窗口代码需要移动到初始化函数中。

文化建设

简卢陟
可怜白雪曲,未遇知音人
恓惶戎旅下,蹉跎淮海滨
涧树含朝雨,山鸟哢馀春
我有一瓢酒,可以慰风尘
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值