MFC学习(一)模态与非模态

我用的是VS2017版

模态:弹出后该程序的其它窗口就呈不可用的状态,原来程序暂停执行,直到这个模态窗口关闭后才回到原来程序继续。
非模态: 直接显示出来,原来的程序继续执行下面的语句,其它窗口也呈可用状态。

 

一、新建MFC(基于对话框模式)

二、按图所示完成主对话框布局(Alt+Ctrl+X调出工具箱)

用户和操作框是【Group Box】 (组成框)

其他的是【Button】 (按钮)

修改名称在属性的caption中直接修改

三、为对话框各个属性设置ID

IDC_BUTTON1   
IDC_BUTTON2
IDC_BUTTON_FILEDIALOG   ///文件对话框
IDC_BUTTON_FONTDIALOG  ///字体对话框
IDC_BUTTON_COLORDIALOG   ///颜色对话框

四、添加两个新的对话框

请输入用户名:【Static Text】(静态文本)

示例编辑框:【Edit Control】 (编辑控件)并把属性read only 改为 false

把示例编辑框属性read only 改为 false

五、单击选中IDD_DIALOG1,双击对话框空白部分

为IDD_DIALOG1添加CInputDlg类,相同的,为IDD_DIALOG2添加CShowDlg类

在两个类中在=#pragma once后添加如下代码 #include "Resource.h"

CInputDlg类添加如图所示

对新建的两个对话框,添加变量【变量类型】为CString,【变量名】为m_Username,且要选Value类别

在主对话框类COOPEx1Dlg.h 中添加成员变量
CShowDlg * m_pSDlg
CInputDlg * m_pIDlg
CString username;
并在COOPEx1Dlg.h中添加头文件引用
#include "InputDlg.h"
#include "ShowDlg.h"

六、选择模态按钮,修改函数内容

void CDialogExDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	m_pIDlg = new CInputDlg;
	if(m_pIDlg->DoModal())
	{
		username= m_pIDlg->m_Username;
	}
	
}

非模态

void Cmfc1Dlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	m_pSDlg = new CShowDlg;
	m_pSDlg->m_Username = username;
	m_pSDlg->Create(IDD_DIALOG2); //创建一个非模态对话框  
	m_pSDlg->ShowWindow(SW_SHOWNORMAL); //显示非模态对话框  
}

七、文件对话框添加

CFileDialog 
fileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,NULL,NULL);
fileDlg.DoModal();

字体对话框添加

CFontDialog 
fontDlg(NULL,CF_EFFECTS|CF_SCREENFONTS,NULL,NULL);
fontDlg.DoModal();

颜色对话框添加

CColorDialog colorDlg(0,0,NULL);
	colorDlg.DoModal();

 

 

哈哈哈大功告成,运行一波美滋滋,不过MFC的代码真的可读性贼差特晕。

持续更新中~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值