首页 > 嵌入式基础教程 > 基础知识

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));//设置焦点在第一个编辑框

}

最后编写完成,运行一下,弹出一个界面如下:

 

1.jpg

验证一下程序,以加法为例,m_edit1输入18,m_edit2输入36,得出结果如下所示。

 

2.jpg

mfc编程入门教程

1.MFC窗口类CWnd

在Windows系统里,一个窗口的属性分两个地方存放:一部分放在“窗口类”里头,如上所述的在注册窗口时指定;另一部分放在Windows Object本身,如:窗口的尺寸,窗口的位置(X,Y轴),窗口的Z轴顺序,窗口的状态(ACTIVE,MINIMIZED,MAXMIZED,RESTORED…),和其他窗口的关系(父窗口,子窗口…),窗口是否可以接收键盘或鼠标消息,等等。

为了表达所有这些窗口的共性,MFC设计了一个窗口基类CWnd。有一点非常重要,那就是CWnd提供了一个标准而通用的MFC窗口过程,MFC下所有的窗口都使用这个窗口过程。至于通用的窗口过程却能为各个窗口实现不同的操作,那就是MFC消息映射机制的奥秘和作用了。这些,将在后面有关章节详细论述。

CWnd提供了一系列成员函数,或者是对Win32相关函数的封装,或者是CWnd新设计的一些函数。这些函数大致如下。

方法/步骤

(1)窗口创建函数

这里主要讨论函数Create和CreateEx。它们封装了Win32窗口创建函数::CreateWindowEx。Create的原型如下:

BOOL CWnd::Create(LPCTSTR lpszClassName,

LPCTSTR lpszWindowName, DWORD dwStyle,

const RECT& rect,

CWnd* pParentWnd, UINT nID,

CCreateContext* pContext)

Create是一个虚拟函数,用来创建子窗口(不能创建桌面窗口和POP UP窗口)。CWnd的基类可以覆盖该函数,例如边框窗口类等覆盖了该函数以实现边框窗口的创建,视类则使用它来创建视窗口。

换一批

延伸阅读

[真心话] 搞事!微软前CEO鲍尔默自曝:离职前天天在办公室追剧

搞事!微软前CEO鲍尔默自曝:离职前天天在办公室追剧

鲍尔默于2014年初离开微软,因为依然是个人大股东,所以他衣食无忧,退休后“颓废”了短暂一段时间后,他拿下了NBA快船队,出任老板。......

关键字:微软 CEO 鲍尔默

[猎聘集] 微软实习生月薪7100美元,但这家公司比它还高

微软实习生月薪7100美元,但这家公司比它还高

据报道,美国招聘网站Glassdoor周二发布今年最佳实习雇主榜单,硅谷科技公司占据其中大部分位置。......

关键字:微软实习 薪酬

[真心话] 微软前CEO鲍尔默:最遗憾没开发更多硬件产品

微软前CEO鲍尔默:最遗憾没开发更多硬件产品

日前,在Code 2017大会上,前微软CEO,现为NBA球队洛杉矶快船队的老板史蒂夫·鲍尔默表达了他对任职期间的看法。鲍尔默认为,其未能引导公司研发更多的硬件产品是他最大的遗憾。......

关键字:微软 前CEO 硬件产品
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi®和蓝牙®combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14