MFC
微软基础类库(英语:Microsoft FoundaTIon Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
MFC(MicrosoftFoundaTIonClasses)是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windows API函数,vc++是微软公司开发的c/c++的集成开发环境,所谓集成开发环境,就是说利用它可以编辑,编译,调试,而不是使用多种工具轮换操作,灵活性较大。vc也指它的内部编译器,集成开发环境必须有一个编译器内核,例如DevC++其中一个编译器内核就是gcc。
MFC除了是一个类库以外,还是一个框架,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll。xx是版本,它封装了mfc内核,所以你在你的代码看不到原本的SDK编程中的消息循环等等东西,因为MFC框架帮你封装好了,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性,当然也就丧失了一些灵活性和效率。但是MFC的封装很浅,所以效率上损失不大。
MFC初学教程
编写MFC程序,其实跟编写C++程序一样,在VS编译平台上新建项目,然后一直默认下一步就行,不过有其他需求则需要根据实际情况来添加。建好一个项目后,会出现两个界面,一个是显示窗口,一个是编程界面,类似LV中的前面板和程序框图。在界面右边有个工具箱,可以根据需要添加控件。
下面主要编写一个简单的计算器程序,实现对输入数的四则运算,主要步骤如下:
1、在对话框中放置6个按钮控件和3个编辑框控件
具体操作:界面右边点击工具箱,根据具体需要选择具体控件。
2、将3个编辑框控件分别添加float型变量m_edit1、m_edit2、m_edit3
具体操作:选中编辑框点右键添加变量,将右边类别改为value,变量名分别改为m_edit1、m_edit2、m_edit3。
3、将6个个按钮控件重新命名
具体操作:选中按钮点击右键属性,将CapTIon改为所需要+ - * / 清除 关闭,具体可根据需要来命名。
4、选择工具箱中Group Box将四则运算框住,然后通过属性改名字,同时在上方添加静态文本(StaTIc Text)来编辑命名。
界面主要部分完成,接下来就是编写代码,双击各个控件,就可自动跳转到程序编写部分,主要代码如下
[html] view plain copyvoid CMFC入门Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(true);//从控件获得数据赋给变量
m_edit3 = m_edit1 + m_edit2;
UpdateData(false);//输出变量的值到控件
}
void CMFC入门Dlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(true);
m_edit3 = m_edit1 - m_edit2;
UpdateData(false);
}
void CMFC入门Dlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(true);
m_edit3 = m_edit1*m_edit2;
UpdateData(false);
}
void CMFC入门Dlg::OnBnClickedButton4()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(true);
if (m_edit2 == 0)
{
MessageBox(_T(“除数不能为0”));
return;
}
m_edit3 = m_edit1 / m_edit2;
UpdateData(false);
}
void CMFC入门Dlg::OnBnClickedButton7()
{
// TODO: 在此添加控件通知处理程序代码
m_edit1 = 0;
m_edit2 = 0;
m_edit3 = 0;
UpdateData(false);
GotoDlgCtrl((CEdit*)GetDlgItem(IDC_EDIT1));//设置焦点在第一个编辑框
}
最后编写完成,运行一下,弹出一个界面如下:
验证一下程序,以加法为例,m_edit1输入18,m_edit2输入36,得出结果如下所示。
技术专区
- 睿赛德科技喜迁新址 ,RT-Thread进入新的加速发展阶段
- 可靠性高、控制灵活、低功耗可调速风扇散热系统
- 安防监控摄像头LED驱动解决方案
- 如何定制嵌入式Linux发行版
- 基于SoC实现的数据采集系统详解