MFC windows应用程序设计(一)——Windows 应用程序的基本概念

  Windows 应用程序的基本概念

1、 Windows 应用程序的界面

图形界面是 Windows 应用程序与用户交换信息的一个“窗口”。

2、  Windows 应用程序与 API 函数

为了设计 Windows 应用程序, Windows 提供了大量预定义的用 C 语言编写的函数,这些函数叫做 API Application Programming Interface )函数。 API 函数几乎包含了 Windows 程序中的所有操作功能。

根据 Windows API 函数的功能,大体上可把他们分为三大类

ü  窗口管理函数:实现窗口的创建、移动和修改等功能。

ü  图形设备函数:实现图形的绘制及操作功能,这类函数的集合又叫做图形设备接口。

ü  系统服务函数:实现与操作系统有关的一些功能。

自从出现了面向对象程序设计方法以来,人们用类对 Windows API 函数进行了封装,从而使应用程序开发工具发生了巨大的变化,目前, 用来设计 Windows 应用程序的开发工具大多是“面向对象”的而且是“可视”的。

3、 Windows 的一个特殊数据类型——句柄

Windows 应用程序中,存在着很多诸如窗口、按钮、滚动条等复杂的对象和实例,为了在程序中区分和使用它们,必须对它们进行标识,为了区别于普通变量的标识, Windows 把这种复杂对象的标识叫做“句柄”,不同的 Windows 对象的句柄具有不同的类型。

4、  Windows 应用程序的数据类型

 

5、 消息与消息循环

1)  事件与消息

Windows 应用程序的另一个突出特点是在程序启动并创建了程序窗口之后,随即就进入了一个等待状态(利用一个 while 循环),直到接收了某种刺激(例如键盘键入,鼠标的单击或双击)之后,程序才会跳出等待状态对这个刺激进行处理,而处理完毕后又进入等待状态,这些可能触发计算机程序作出相应反应的刺激,叫做“事件 ”。

为了描述该事件中的各种信息(例如何时、何地发生了何种事情等), Windows 定义了一个结构,这个结构就叫做“消息( message ”。当发生某种事件时, Windows 系统就用消息来向应用程序发出通知。消息结构的定义如下:

2)  消息循环

系统为程序建立了叫做消息队列 的一个存储空间,在程序的运行过程中如果发生了一个事件, Windows 就会把这个时间所对应的消息送入消息队列等待使用。应用程序为了取得消息队列中的消息,需要调用 Windows 提供的一个 API 函数 GetMessage ,并利用这个函数的返回值(当获得消息时,该函数返回 TRUE ,否则返回 FALSE )组织一个循环来不断获取消息,一旦获取到消息,就把这个消息派送给系统,这个循环叫做消息循环

Windows 应用程序中,消息循环的代码如下:

while(GetMessage(&msg, NULL, NULL, NULL)

{

         TranslateMessage(&msg);

         DispatchMessage(&msg);                // 把消息派送给系统

}

6、  当消息循环把消息派送给系统后,系统会以消息作为参数来调用一个叫做“窗口函数”的函数,然后以消息中的 message 成员为依据在这个函数中查找并执行该消息所对应的程序段。在处理完与消息对应的程序段之后,只要该消息不是终止应用程序的消息,应用程序就会立即返回消息循环,以等待获取下一个消息, Windows 应用程序就这样周而复始进行循环,直至用户发出结束应用程序的消息。

         正是由于 Windows 应用程序必须接受到消息才会启动某种操作,因此人们常说: Windows 应用程序是消息驱动 的(或者说是事件驱动的),由于 Windows 程序的这种工作方式使应用程序的用户处于主导地位,因此 Windows 程序普遍受到人们的欢迎。

       至于消息循环中的 TranslateMessage 函数,它的作用是把键盘消息翻译成字符消息。

你可能感兴趣的:(MFC)