开发教程 Visual C++ MFC入门教程.docx

上传人:王** 文档编号:1330566 上传时间:2024-06-19 格式:DOCX 页数:83 大小:201.81KB
下载 相关 举报
开发教程 Visual C++ MFC入门教程.docx_第1页
第1页 / 共83页
开发教程 Visual C++ MFC入门教程.docx_第2页
第2页 / 共83页
开发教程 Visual C++ MFC入门教程.docx_第3页
第3页 / 共83页
开发教程 Visual C++ MFC入门教程.docx_第4页
第4页 / 共83页
开发教程 Visual C++ MFC入门教程.docx_第5页
第5页 / 共83页
开发教程 Visual C++ MFC入门教程.docx_第6页
第6页 / 共83页
开发教程 Visual C++ MFC入门教程.docx_第7页
第7页 / 共83页
开发教程 Visual C++ MFC入门教程.docx_第8页
第8页 / 共83页
开发教程 Visual C++ MFC入门教程.docx_第9页
第9页 / 共83页
开发教程 Visual C++ MFC入门教程.docx_第10页
第10页 / 共83页
亲,该文档总共83页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《开发教程 Visual C++ MFC入门教程.docx》由会员分享,可在线阅读,更多相关《开发教程 Visual C++ MFC入门教程.docx(83页珍藏版)》请在优知文库上搜索。

1、您当前位置置奥开发教程ViSUalC+/MFC入门教程1.1如何学好VC1.1如何学好VC这个问题很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果。万事开头难,为了帮助朋友们更快的掌握VC开发,下面我将自己的一点体会讲一下:Is需要有好的C/C+基础。正所谓“磨刀不误砍柴工”,最开始接触VC时不要急于开始Windows程序开发,而是应该进行一些字符界面程序的编写。这样做的目的主要是增加对语言的熟悉程度,同时也训练自己的思维和熟悉一些在编程中常犯的错误。更重要的是理解并能运用C+的各种特性,这些在以后的开发中都会有很大的帮助,特别是利用MFC进行开发的

2、朋友对C+一定要能熟练运用。2、理解WindOWS的消息机制,窗口句柄和其他GUl句柄的含义和用途。了解和MFC各个类功能相近的API函数。3、一定要理解MFC中消息映射的作用。4、训练自己在编写代码时不使用参考书而是使用HeIpOnIineo5、记住一些常用的消息名称和参数的意义。6、学会看别人的代码。7、多看书,少买书,买书前一定要慎重。8、闲下来的时候就看参考书。9、多来我的主页。0后面几条是我个人的一点意见,你可以根据需要和自身的情况选用适用于自己的方法。此外我将一些我在选择参考书时的原则:对于初学者:应该选择一些内容比较全面的书籍,并且书籍中的内容应该以合理的方式安排,在使用该书时可

3、以达到循序渐进的效果,书中的代码要有详细的讲解。尽量买翻译的书,因为这些书一般都比较易懂,而且语言比较轻松。买书前一定要慎重如果买到不好用的书可能会对自己的学习积极性产生打击O对于已经掌握了VC的朋友这种程度的开发者应该加深自己对系统原理,技术要点的认识。需要选择一些对原理讲解的比较透彻的书籍,这样一来才会对新技术有更多的了解,最好书中对技术的应用有一定的阐述。尽量选择示范代码必较精简的书,可以节约银子。此外最好涉猎一些辅助性的书籍。返回版权所有闻怡洋http:/WWW您当前位置首页开发教程ViSUalC+/MFC入门教程1.2理解WindOWS消息机制1.2 理解WindoWS消息机制Win

4、dows系统是一个消息驱动的0S,什么是消息呢?我很难说得清楚,也很难下一个定义(谁在嘘我),我下面从不同的几个方面讲解一下,希望大家看了后有一点了解。1、消息的组成:一个消息由一个消息名称(UINT),和两个参数(WPARAM,1.PARAM)o当用户进行了输入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。例如当菜单转中之后会有WM.COMMAND消息发送,WPARAM的高字中(HIWORD(WParam)是命令的ID号,对菜单来讲就是菜单ID。当然用户也可以定义自己的消息名称,也可以利用自定义消息来发送通知和传送数据。2、谁将收到消息:一个消息必须由一个窗口接收。在窗口的过程(WN

5、DPROc)中可以对消息进行分析,对自己感兴趣的消息进行处理。例如你希望对菜单选择进行处理那么你可以定义对WM_COMMAND进行处理的代码,如果希望在窗口中进行图形输出就必须对WM_PAINT进行处理“3、未处理的消息到那里去了:M$为窗口编写了默认的窗口过程,这个窗口过程将负责处理那些你不处理消息。正因为有了这个默认窗口过程我们才可以利用Windows的窗口进行开发而不必过多关注窗口各种消息的处理。例如窗口在被拖动时会有很多消息发送,而我们都可以不予理睬让系统自己去处So4、窗口句柄:说到消息就不能不说窗口句柄,系统通过窗口句柄来在整个系统中唯一标识一个窗口,发送一个消息时必须指定一个窗口

6、句柄表明该消息由那个窗口接收。而每个窗口都会有自己的窗口过程,所以用户的输入就会被正确的处理。例如有两个窗口共用一个窗口过程代码,你在窗口一上按下鼠标时消息就会通过窗口一的句柄被发送到窗口一而不是窗口二。5、示例:下面有一段伪代码演示如何在窗口过程中处理消息1.ONGyourWndProc(HWNDhWnd,UINTUMessageType,WPARAMwP,1.PARAM)(switch(uMessageType)使用SWITCH语句将各种消息分开case(WM_PAINT):doYourWindow(.);在窗口需要重新绘制时进行输出break;case(WM1.BUTTONDOWN):d

7、oYourWork(.);在鼠标左键被按下时进行处理break;default:calIDefaultWndProc(.);对于其它情况就让系统自己处理break;接下来谈谈什么是消息机制:系统将会维护一个或多个消息队列,所有产生的消息都回被放入或是插入队列中。系统会在队列中取出每一条消息,根据消息的接收句柄而将该消息发送给拥有该窗口的程序的消息循环。每一个运行的程序都有自己的消息循环,在循环中得到属于自己的消息并根据接收窗口的句柄调用相应的窗口过程。而在没有消息时消息循环就将控制权交给系统所以WindoWS可以同时进行多个任务。下面的伪代码演示了消息循环的用法:while(l)(id=get

8、Message(.);if(id=quit)break;translateMessage(.);当该程序没有消息通知时getMessage就不会返回,也就不会占用系统的CPU时间。图示消息投递模式在16位的系统中系统中只有一个消息队列,所以系统必须等待当前任务处理消息后才可以发送下一消息到相应程序,如果一个程序陷如死循环或是耗时操作时系统就会得不到控制权。这种多任务系统也就称为协同式的多任务系统。WindoWs3.X就是这种系统。而32位的系统中每一运行的程序都会有一个消息队列,所以系统可以在多个消息队列中转换而不必等待当前程序完成消息处理就可以得到控制权。这种多任务系统就称为抢先式的多任务系

9、统。Widows95NT就是这种系统。返回版权所有闻怡洋Htp:WWW您当前位置首更开发教程ViSUalC+/MFC入门教程1.3利用ViSUalC+/MFC开发Windows程序的优势1.3 利用VisualC+/MFC开发Windows程序的优势MFC借助C+的优势为Windows开发开辟了一片新天地,同时也借助AppIicationWizzard使开发者摆脱离了那些每次都必写基本代码,借助CIassWizard和消息映射使开发者摆脱了定义消息处理时那种混乱和冗长的代码段。更令人兴奋的是利用C+的封装功能使开发者摆脱WindoWS中各种句柄的困扰,只需要面对C+中的对象,这样一来使开发更接

10、近开发语言而远离系统。(但我个人认为了解系统原理对开发很有帮助)正因为MFC是建立在C+的基础上,所以我强调C/C+语言基础对开发的重要性。利用C+的封装性开发者可以更容易理解和操作各种窗口对象;利用C+的派生性开发者可以减少开发自定义窗口的时间和创造出可重用的代码;利用虚拟性可以在必要时更好的控制窗口的活动。而且C+本身所具备的超越C语言的特性都可以使开发者编写出更易用,更灵活的代码。在MFC中对消息的处理利用了消息映射的方法,该方法的基础是宏定义实现,通过宏定义将消息分派到不同的成员函数进行处理。下面简单讲述一下这种方法的实现方法:代码如下BEGINMESSAGEMAP(CMainFram

11、e,CFrameWnd)/AFXJISGJfAP(CMainFrame)ON_WM_CREATE()/JAFXJISGJfAPONCOMMAND(ID_FONT_DROPDOWN,DoNothing)ENDJfESSAGEJfAPO经汪编译后,E码被替换为如下形式(这只是作讲解,实际情况比这复杂得多):/BEGINJfESSAGEJfAP(CMainFrame,CFrameWnd)CMainFrame:newWndProc(.)SWitCh()/AFX_MSG_MAP(CMainFrame)/ON_WM_CREATE()CaSe(WM.CREATE):OnCreate(.);break;/AF

12、X_MSG_MAP/ON_COMMAND(ID_FONT_DROPDOWN,DoNothing)CaSe(WM.COMMAND):if(HIWORD(wP)=ID_FONT_DROPDOWN)DoNothing(.);)break;/ENDJfESSAGEJfAPOnewWndProc就是窗口过程只要是该类的实例生成的窗口都使用该窗口过程。所以了解了Windows的消息机制在加上对消息映射的理解就很容易了解MFC开发的基本思路了。返回版权所有闻怡洋http:WWW您当前位置首页开发教程ViSUalC+/MFC入门教程1.4利用MFC进行开发的通用方法介绍1.4 利用MFC进行开发的通用方法介绍

13、以下是我在最初学习VC时所常用的开发思路和方法,希望能对初学VC的朋友有所帮助和启发。1、开发需要读写文件的应用程序并且有简单的输入和输出可以利用单文档视结构。2、开发注重交互的简单应用程序可以使用对话框为基础的窗口,如果文件读写简单这可利用CFiIe进行。3、开发注重交互并且文件读写复杂的的简单应用程序可以利用以CFormView为基础视的单文档视结构。4、利用对话框得到用户输入的数据,在等级提高后可使用就地输入。5、在对多文档要求不强烈时尽量避免多文档视结构,可以利用分隔条产生单文档多视结构。6、在要求在多个文档间传递数据时使用多文档视结构。7、学会利用子窗口,并在自定义的子窗口包含多个控

14、件达到封装功能的目的。8、尽量避免使用多文档多视结构。9、不要使用多重继承并尽量减少一个类中封装过多的功能。返回版权所有闻怡洋Htp:WWW您当前位置首页开发教程ViSUalC+/MFC入门教程1.5MFC中常用类,宏,函数介绍1.5 MFC中常用类,宏,函数介绍常用类CRect:用来表示矩形的类,拥有四个成员变量:topleftbottomright0分别表是左上角和右下角的坐标。可以通过以下的方法构造: CRect(int/intt,intr,intb);指明四个坐标 CRect(constRECT&SrCReCt);由RECT结构构造 CRect(1.PCRECTIpSrcRecty,由

15、RECT结构构造 CRect(POINTpoint,SIZEsize)有左上角坐标和尺寸构造 CRect(POINTtop1.eft,POINTbottomRight)有两点坐标构造下面介绍几个成员函数: intWidth()const;得到宽度 itHeight()const;得到高度 CSizeSize()const;得到尺寸 CPoint&Top1.eft();得到左上角坐标 CPoint&BottomRight();得到右下角坐标 CPointCeterPoit()const;得当中心坐标此外矩形可以和点(CPoint)相加进行位移,和另一个矩形相加得到“并”操作后的矩形。CPoint:用来表示一个点的坐标,有两个成员变量:XVO可以和另一个点相加。CString:用来表示可变长度的字符串。使用CString可不指明内存大小,CString会根据需要自行分配。下面介绍几个成员函数: Get1.ength得

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > C/C++资料

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!