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

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鲍尔默:最遗憾没开发更多硬件产品

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

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

[新鲜事] 黑客发现20年漏洞:微软不修复让升级至最新Win10

黑客发现20年漏洞:微软不修复让升级至最新Win10

DEF CON黑客大会上,黑客们曝光了Windows系统上一个藏了20年的漏洞,其被安全研究人员将它称作“SMBLoris”,这可以轻松发起Dos攻击,感染Windows 2000及以上系统的任一版本SMB协议。......

关键字:微软 黑客 漏洞
条评论

我 要 评 论

网友评论

大家都爱看

  • 华为的优势,就是自家的各种自研芯片

    CPU即中央处理器,是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。它的功能主要是解释计算机指令以及处理计算机软件中的数据。

    2017-08-16
  • 你不知道Ryzen芯片有多火?来看看AMD的股票吧

    据外媒报道,美银美林认为,AMD最新的Ryzen芯片可能会引发一波销售浪潮,进而推动该股继续上涨。它认为AMD股票还有40%以上的上涨空间。

    2017-08-16
  • 国产芯片:厚积薄发,强势崛起

    关于国产芯片,是近几年才有崛起的势头,可是在几年之前,国产芯片还处于“沉睡”的状态,尤其是手机芯片,几乎大部分都依赖进口,而且国外的市场几乎被高通和联发科所垄断,也就展讯还在市场边…

    2017-08-16
  • 为了数据安全 大疆无人机增加隐私飞行功能

    大疆周一表示,在美国陆军因为“网络缺陷”而要求其成员停用大疆无人机后,这家中国无人机制造商将加强无人机的数据安全性。 大疆政策和法务副总裁布伦丹&middot…

    2017-08-15
  • Intel代工 展讯发布14nm SC9853I手机SoC

    SC9853I采用的Intel的14nm FinFET制程,架构为8核64位Airmont架构,主频1.8GHz,GPU为Mali-T820 MP2,号称面向799~1299元档次的手机。…

    2017-08-15