MFC原理与方法(一)
一.前言
哈喽!好久不见呀!我们又见面了,我是不会食言的,说到做到。见字如面,一日不见,甚是想念!哈哈,不骗你,是真的想,想你们可以看完,可以点个小小的赞和收藏以及对我的关注!好了,话不多说,我们直接来进入正题吧!这个星期我们初步学习了MFC原理与方法,接下来我给大家介绍什么是MFC,MFC编程的环境配置以及使用MFC来做一些简单的操作。
二.什么是MFC?
- MFC全拼为(Microsoft Foundation Classes)Microsoft意思是微软,Foundation意思是基础,Classes意思是类,所以我们不难理解MFC就是微软公司创建的一个基础类库。
- 为什么会有这么一个基础类库嘞?我们都知道一个Windows应用程序的开发是靠代码来实现的,然而一个Windows应用程序的代码量往往是非常巨大的,如果每次开发都是靠人从0开始打代码的话,那么这样的开发方式不仅要耗费巨大的时间而且还开发效率低,还极易出错,出了错还极难纠正,这就很麻烦。那通过什么方式来提高我们的开发效率嘞?其实,大部分的Windows应用程序的基本框架都差不多一样,只是具体的实现细节不同。于是,人们就把一些基本的Windows应用程序的框架单独提取出来形成一个类库,大家只需要根据自己的需求进行简单的调用和编程就行了。
- 所以,MFC的本质就是一个包含了许多微软公司已经定义好的对象的类库,包含了一百多个程序开发过程中最常用的对象。MFC除了是一个类库以外,还是一个框架,在Visual C++ 中新建一个MFC的工程,开发环境会自动搭建框架,产生许多相应文件。这样的开发方式是非常简单的。
三.MFC编程的环境配置
同志们,接下来咱们直接上号!
这次咱们得换一个编译器,因为Microsoft Visual C++ 2010 Express(学习版)是没有MFC的,所以这次咱们得换一个高级点的编译器,咱们用Microsoft Visual Studio 2010。接下来我一步一步来教大家下载。建议使用电脑打开此页面,先点击下方的下载链接。
Visual Studio 2010下载链接.
然后,我们看到下面的页面。(注意:如果你是第一次登陆这个页面的话,是需要登录你的微软账号的,也就你电脑的Microsoft账号,登录之后需要重新点链接进入下载页面)
我们选择[Trial] Visual Studio Professional 2010这个编译器。注意!语言要选择Chinese-Simplified(简体中文)。然后Download。下载过程可能会很长,我们就静静的等待下载就行了,或者写几道积分题也不错,嘿嘿。下载好之后咱们在下载打开文件。之后进行以下操作。
然后进入安装程序,按照以下图片操作即可,安装过程有点漫长,请耐心等待。(安装完成之后,第一次打开是还有一步操作的,我忘记截图了。。。那步操作是选择编程语言,是在左下角我记得,选择C++就OK了)
如果你使用的是比较高版本的 Visual Studio编译器,那么你需要在编译器里的菜单栏里打开工具,然后点击获取工具和功能。进行以下操作。
四.使用MFC进行一些简单操作
下载好编译器之后,我们先创建一个MFC应用程序,步骤流程为,新建项目->选择MFC应用程序->再根据你的需要来设置选项。
创建完之后,我们会发现有好多好多文件,不同的文件有着不同的作用,我们首先从最简单的开始吧。我们先找到OnDraw()函数,我们直接在类视图里的搜索框输入OnDraw,回车,就可以找到了。我们就来先画一个圆吧。
void CMFCView::OnDraw(CDC* pDC) //要先把这里的块注释删除,释放pDC指针,通过pDC指针来调用函数
{
CMFCDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
pDC->Ellipse(100,100,200,200); //Ellipse函数为画圆函数,是通过矩形的内切圆来画的,所以我们定义了两个坐标(100,100),(200,200)
// TODO: 在此处为本机数据添加绘制代码
}
运行结果如下:
我们还可以调用TextOutW()函数来输出文字。
void CMFCView::OnDraw(CDC* pDC)
{
CMFCDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
pDC->Ellipse(100,100,400,400);
pDC->TextOutW(200,250,L"不放弃!继续努力!"); //前面两个数为文字开始出现的坐标位置,需要注意的是要在前面的双引号输入一个大写字母L,不然编译通不过
// TODO: 在此处为本机数据添加绘制代码
}
运行结果如下:
我给大家一个问题,如果我把上面的Ellipse()函数和TextOutW()函数换一个位置,运行结果还会是一样的吗?通过实践,我们发现答案是不一样的,文字没有了。这是因为Ellipse()函数生成的圆是一个“实心”的圆,不是一个圆架子,所以会把生成在圆覆盖面积里的文字覆盖掉,其他图形也是一样的。除此之外,我们还可以进行一些“进阶”操作,我们可以应用循环和选择等结构来编程。例如,循环输出文字“不想放弃!”
void CMFCView::OnDraw(CDC* pDC)
{
CMFCDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
for (int x = 0; x < 100; x += 20)
{
pDC->TextOutW(100, x, L"不想放弃!");
Sleep(100); //每次输出延迟100毫秒
}
// TODO: 在此处为本机数据添加绘制代码
}
运行结果如下:
以上是一些基础的MFC用法,我们可以用来进行一些简单的绘图和输出文字。还有其他很多功能,后面会继续学习的,在这里英语好的同学就比较开心,因为函数名都是英文的。。。
五.结语
芜湖!我的第二篇博客完成啦!这次没有上次那么累,上次那个内容比较多,又复杂,我还是熬了夜才完成的。相比之下这一篇就简单多了,比较好写。==但是我还是有一些做的不足的地方,我会慢慢改进,希望可以见谅!我也相信终会有一天我可以的!**emm,哈哈哈,好了,那就期待我们的下一次见面吧!谢谢大家!奥里给!!!(没有结束的哦)不说了,我去和积分决一死斗了!!!
(声明一下:本人是大一新生,难免会出现错误,如果大家发现错误,请及时告诉我,我会及时更正,谢谢大家!)