学习笔记之深入浅出MFC 第一章win32程序的开发流程
来源:互联网 发布:淘宝客服教程视频在线 编辑:程序博客网 时间:2024/06/05 09:32
“只用一样东西,不明白它的道理,实在不高明”。借用林语堂先生的这句话,所以我们很有必要弄懂MFC这一工具的原理,这将更有利于我们应用它来解决工程问题。
作为windows程序设计者一定得知道的基础知识,我们很有必要对Windows程序的运行原理弄懂,甚至是烂熟于心,这样在以后碰到一些问题才能从更深层次考虑问题的原因,对我们踏实的功底是非常必要的。借用作者的话说,就是没有学会走之前,不要跑!
Windows程序分为“程序代码”和“UI(User Interface 用户接口)资源”两大部分。两大部分最后以RC编译器整合为一个.exe的可执行文件。UI资源是指功能菜单、对话框外貌、程序图标、光标图形等这些图形化的界面,这些我们可以直接看到的图形界面都是由各种工具产生的,并且以各种扩展名的文件形式存在,比如.ico图标文件、.bmp位图文件等等。程序员需要在一个资源描述文件(.rc)中描述它们,RC编译器读取RC文件的描述后将所有的UI资源集中制作成一个.RES文件,然后再与程序代码结合在一起,才能形成一个完整的Windows可执行文件。
从上图中我们可以看到,一个Windows程序在最终形成.exe文件时,是由.OBJ的编译文件、.lib静态链接库文件、.DEF动态链接库文件以及.RES资源文件共同连接而成。其中.OBJ编译文件是由我们写的源文件编译而得到的,资源文件是我们设计产生的各种UI文件的整合,那么剩下的静态和动态连接库是什么呢?
函数库(.LIB)介绍
所谓的动态连接,是指应用程序调用的API函数是在执行时期才连接上的,也就是上图中LINKER时候。Windows API由操作系统本身(主要是三大模块GDI32.DLL、USER32.DLL和KERNEL32.DLL)提供。虽然说动态链接是在链接时期才执行链接动作的,但是链接器必须提前为链接动作准备一些连接信息,这样才连接阶段应用程序才知道应该链接哪些DLL链接库。也只有在提前给应用程序提供了这些信息,应用程序才能知道有哪些DLL链接库需要先行加载。这些信息就存放在“import函数库”中,即.LIB库中。在使用SDK开发软件时,需要把.DLL库文件放在C盘WIN32文件夹中,同时将相应的.LIB文件放在工程所在的文件夹下,并在SDK的连接设置中添加所需的.LIB文件名。
以消息为基础的事件驱动机制
Windows程序的进行是依靠外部发生的事件来驱动的。也就是说,在没有外部驱动到来之前程序是静态的,不会有任何反应。程序不断的在While循环中等待任何输入的到达,然后判断为这种消息,并对此消息做出相应的处理。输入是有操作系统捕捉到之后,以消息的形式进入程序的。
可以将应用程序获得的各种输入进行分类,分为由硬件装置所产生的消息(如鼠标移动或键盘按下),放在系统队列中;由Windows系统或其他Windows程序传送过来的消息,放在程序队列中。程序会调用GetMessageAPI取得一个消息,程序的生命靠它推动。
接收并处理消息的主角是窗口。每一个窗口都有一个函数负责处理消息,程序员必须负责设计这个所谓的窗口函数。如果窗口获得一个消息,则这个窗口函数必须判断消息的类别,决定处理的方式。
- 学习笔记之深入浅出MFC 第一章win32程序的开发流程
- 《MFC深入浅出》学习笔记--------Win32 SDK 程序开发流程
- MFC深入浅出-Win32程序开发流程
- 【深入浅出MFC】第一章 Win32 基本程序观念
- 深入浅出MFC学习笔记:(第一章:win32基本概念,第二章:C++的重要性质)
- 深入浅出MFC学习笔记:(第一章:win32基本概念,第二章:C++的重要性质)
- 深入浅出MFC学习笔记3--MFC程序流程
- 《深入浅出MFC》学习笔记之Win32程序设计原理(一)
- 深入浅出MFC学习笔记:MFC六大关键技术仿真之MFC程序的初始化过程
- 深入浅出MFC笔记2-MFC程序如何包装Win32程序
- 深入浅出MFC笔记1-Win32和MFC程序对比
- 《深入浅出MFC》学习笔记一 : Win32基本程序概念 (转)
- <<深入浅出MFC>>笔记1——Win32基本程序观念
- 学习笔记之深入浅出MFC 第5章 Windows程序的生与死
- 1.Win32基本程序概念(深入浅出MFC之读书笔记)
- Win32学习笔记 第一章
- Win32开发MFC程序
- Win32程序开发流程
- angularJs入门第二篇:全局函数
- cubic-bezier贝塞尔曲线CSS3动画工具
- Unity 使用ShareSDK 3.X 版本发布Xcode进入AR闪退
- Android TextView部分文字指定颜色
- 欢迎使用CSDN-markdown编辑器
- 学习笔记之深入浅出MFC 第一章win32程序的开发流程
- iOS js oc相互调用(JavaScriptCore 1)
- 入学登记系统
- js--JSON
- 计算机软件工程国家标准汇编目录
- ListView实例(SimpleAdapter实现)
- 错误:-[UIKBBlurredKeyView candidateList]: unrecognized selector sent to instance
- iOS 获取用户位置信息的 预处理
- android 自定义闪退Dialog 收集闪退信息