第一个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,并将UserName(Edit)控件的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还在路上
持续更新