1、消息驱动
在介绍Windows消息驱动概念之前,我们首先来回顾面向过程的程序结构:main()程序有明显的开始、中间过程和结束点,程序是围绕这个过程编写好相关的子过程,再把这些子过程串联在一起。程序编好以后,该过程也就确定了,程序必须按照规定好的顺序执行:是否需要用户的输入、输入什么、程序取得用户输入以后做什么处理,处理完毕将结果显示给用户。该过程一旦确定,程序的执行过程也是固定的,用户不能干预。
而Windows编程所采用设计思想是:消息驱动,又叫做事件驱动。在这种程序结构中,程序没有明显的开始、结束,程序流程的控制由各种随机发生、不确定、没有预先设定顺序的事件的发生来触发。是一个不断产生消息和处理消息的过程。
也就是说程序一运行开始处于等待消息状态,取得消息以后,就对该消息做出相应的处理,完成处理以后又进入等待消息的状态。这种程序结构与Windows操作系统结合非常紧密,最明显一点就是消息的管理是由操作系统完成的。应用程序从操作系统获得消息有两种方式:一种就是应用程序调用Windows提供的消息获取函数;另外一种就是回调函数,由操作系统自己调用。
这种消息驱动机制,有点像银行的柜台业务:早上八点,银行开门(Windows应用程序开始运行),每个营业员(Windwows线程)回到自己的柜台开始办公。如果有顾客来办理相关业务(相当于Windows消息),那么对应的业务员就进行处理。顾客来办理业务的时间以及业务类型都是随机的,如果某一时刻没有顾客办理业务并且没有到下班时间(Windows应用程序退出)的话,那么相关的业务员进入等待状态。所有的业务员不断重复该过程,直到下班(Windows应用程序退出)。
2、应用程序、操作系统、IO设备之间的相互关系
3、窗口元素
窗口:是Windows操作系统最重要最基本的一个概念。它是一个正在运行的应用程序相对应的矩形区域,通过它用户可以和应用程序进行交互。
客户区:是窗口中最大的一块空白的矩形区域,是用户和系统进行交互的主要区域,一般用于显示应用程序的输出。
标题栏:位于窗口顶部,用于显示应用程序名称的。
菜单栏:位于标题栏下方,菜单栏列出了应用程序支持的大部分功能。
图标: 适用于提醒用户的一个小图像,代表一个应用程序。
光标:Windows光标显示在屏幕上的一个小位图。
工具栏:一般位于菜单栏下方,上面有一些位图按钮,代表一些常用功能。
状态栏:位于这个窗口底端,用于输出菜单提示信息和一些其他详细信息。
对话框:一种特殊的窗口,用于接受用户的输入输出。
控件:对话框上的许多小窗口都是控件。如按钮,编辑框等都是控件。
4、编程术语
窗口:是应用程序操作的基本单元,是用户可以通过它和应用程序进行交互的接口环境,也是系统管理应用程序的基本单位。从程序运行的内存组织结构看,窗口对应一个数据结构WNDCLASS。
实例:实际上实例就是一个可执行程序在内存中的拷贝。一个可执行程序运行多次,在内存中就有多个内存拷贝。系统是通过实例句柄来识别一个可执行程序的拷贝。
句柄:系统用来识别不同对象或者同类对象的不同实例的"编号"。它是一个无符号整数。几乎所有对对象的引用都是通过句柄来进行的。如使用HINSTANCE、HWND、HCURSOR、HICON、HDC、HBRUSH、HPEN等。
资源:构成应用程序的元素称为资源:菜单、工具条、位图、字符串等。
窗口函数:用户通过窗口和应用程序交互时产生的消息,送给一个函数进行处理。该函数体结构大致由一个Switch结构组成,是消息驱动机制的发动机。
图形设备接口:GDI(Graphic Device Interface)是Windows系统的重要组成部分。负责系统和用户或者绘图程序之间的信息交换,并控制输出设备上图形和文字的输出。最大的优点就是设备无关性:将程序员和设备相隔离,程序员不必关心物理设备的细节,直接调用相关的API函数就可以在输出设备上显示图形或者文字。
回调函数:写好了等系统进行调用的函数。只能由系统自动调用。前面所说的窗口函数就是一个典型的回调函数。
转载于:https://blog.51cto.com/itjob/863734