第一个MFC!!!不知道做了多少遍老师才满意QAQ,搜了好多好多好多好多博客真的TM太难搜了

于是发了善心来造福众生

让我们先放段PPT

一、对话框

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

二、新建一个基于对话框的MFC应用程序

1.打开VS--选择“文件”—“新建”—“项目”,打开对话框

2.选择“MFC应用程序”,选择文件位置,输入文件名“OOPEx1”,点击下一步进入对话框,选择“基于对话框”,点完成。

3.在资源视图中找到Dialog,双击点开

三、添加控件、修改控件属性 

1.菜单栏 视图->工具箱 或 Alt+Ctrl+X调出工具箱

2.添加如图控件,“用户和“操作”是Group Box,“模态”、“非模态”等按钮是Button,在控件的属性中找到“Caption”修改名称。

3.为对话框各个控件设置ID(依旧是属性中的ID

IDC_BUTTON1

IDC_BUTTON2

IDC_BUTTON_FILEDIALOG

IDC_BUTTON_FONTDIALOG

IDC_BUTTON_COLORDIALOG

4.在资源视图中,选择Dialog选项,右键添加两个Dialog

 

5.参照下图设置Dialog1,并将UserNameEdit)控件的ID改为IDC_USERNAME

6.参照下图设置Dialog2

7.右键点击 Dialog2中的‘Edit Box’控件,选择属性,选择Read Only一项选择’True’

 

四、添加MFC类、成员变量

 

1.右键单击Dialog1对话框空白部分,点击添加类,新类名为CInputDlg,其余选项默认不变。

 

 

 

 

2.对Dialog2添加新类CShowDlg,方法同上。

 

3.进入类视图,看到如下对话框,分别双击CShowDlg和CInputDlg,进入两个类的头文件。

#pragma once后添加如下代码:#include "Resource.h"(记得两个类都要加嗷~)

4.右键单击Dialog1,选择添加变量:CString m_Username

(注意:变量类型为CString,变量名为m_Username  且要选Value类别

5.对Dialog2做以上同样的操作,变量类别也是“值”

6.右键单击主对话框空白部分,选择类向导,选择成员变量。

选择添加自定义。

添加三个公共的成员变量:1.类型:CShowDlg * 变量名:m_pSDlg

                                            2.类型:CInputDlg *  变量名:m_pIDlg

                                            3.类型:CString        变量名:username

结果图如下:

 

7.选择类视图,双击COOPEx1Dlg,打开COOPEx1Dlg.h,添加头文件:

#include "InputDlg.h"
#include "ShowDlg.h"

 

 

 

五、模态与非模态

双击模态按钮添加代码;
双击非模态按钮添加代码;

( 模态即在该弹出该对话框之后其余对话框不可点击,非模态即可以点击其他对话框)

void COOPEx1Dlg::OnBnClickedButton1()///模态
{
	// TODO: 在此添加控件通知处理程序代码
	m_pIDlg = new CInputDlg;
	if (m_pIDlg->DoModal())
	{
		username = m_pIDlg->m_Username;
	}
}

void COOPEx1Dlg::OnBnClickedButton2()///非模态
{
	// TODO: 在此添加控件通知处理程序代码

	m_pSDlg = new CShowDlg;
	m_pSDlg->m_Username = username;
	//m_pSDlg->DoModal();
	m_pSDlg->Create(IDD_DIALOG2);
	m_pSDlg -> ShowWindow(SW_SHOWNORMAL);
}

六、编辑操作代码

为文件、字体、颜色三个按钮添加代码:

分别双击“文件对话框”“字体对话框”“颜色对话框”。

添加代码:

void COOPEx1Dlg::OnBnClickedButtonFiledialog()///文件
{
	// TODO: 在此添加控件通知处理程序代码
	CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, NULL, NULL);
	fileDlg.DoModal();

}


void COOPEx1Dlg::OnBnClickedButtonFontdialog()///字体
{
	// TODO: 在此添加控件通知处理程序代码
	CFontDialog fontDlg(NULL, CF_EFFECTS | CF_SCREENFONTS, NULL, NULL);
	fontDlg.DoModal();

}


void COOPEx1Dlg::OnBnClickedButtonColordialog()///颜色
{
	// TODO: 在此添加控件通知处理程序代码
	CColorDialog colorDlg(0,0,NULL);
	colorDlg.DoModal();

}

 

 

恭喜你做完MFC1了!!!!

F5运行一下叭!!!!!!!

我发誓这是我写过的最长的一篇博客orz

如果觉得不错的话给小弟点个赞嘛(@^0^)

MFC2、3、4、5还在路上

持续更新