软件开发平台 应用系统开发


一个完整的Windows应用程序除了WinMain函数外,还包含用于处理用户动作和窗口消息的窗口函数 。这不同于一个C++的控制台应用程序,可以将整个程序包含在main函数中 。事实上,它们的区别还远不止这些,不久还会发现一个Windows应用程序还常常具有这样的一些特性:
消息驱动机制
图形设备接口(GDI)
基于资源的程序设计
动态链接库
进程和线程
在Windows操作环境中,无论是系统产生的动作或是用户运行应用程序产生的动作,都称为事件(Events)产生的消息(Message) 。例如,在Windows 桌面(传统风格)上,双击应用程序的快捷图标,系统就会执行该应用程序 。在Windows的应用程序中,也是通过接收消息、分发消息、处理消息来和用户进行交互的 。
这种消息驱动的机制是Windows编程的最大特点 。需要注意的是,许多Windows消息都经过了严格的定义,并且适用于所有的应用程序 。例如,当用户按下鼠标的左键时系统就会发送WM_LBUTTONDOWN消息,而当用户敲了一个字符键时系统就会发送WM_CHAR消息,若用户进行菜单选择或工具按钮单击等操作时,系统又会相应地发送WM_COMMAND消息给相应的窗口等等 。
在传统的DOS环境中,想要在打印机上打印一幅图形是一件非常复杂的事情,因为用户必须根据打印机类型和指令规则向打印机输送数据 。而Windows则提供了一个抽象的接口,称为图形设备接口(Graphical Device Interface,简称GDI),使得用户直接利用系统的GDI函数就能方便实现输入或输出,而不必关心与系统相连的外部设备的类型 。
Windows应用程序常常包含众多图形元素,例如光标、菜单、工具栏、位图、对话框等,在Windows环境下,每一个这样的元素都作为一种可以装入应用程序的资源来存放 。这些资源就像C++程序中的常量一样,可以被编辑、修改,也可以被其他应用程序所共享 。Visual C++ 6.0中就提供这样的编辑器,可“所见即所得”地对这些不同类型的资源进行设计、编辑等 。
动态链接库提供了一些特定结构的函数,能被应用程序在运行过程中装入和连接,且多个程序可以共享同一个动态链接库,这样就可以大大节省内存和磁盘空间 。从编程角度来说,动态链接库可以提高程序模块的灵活性,因为它本身是可以单独设计、编译和调试的 。
Windows提供了应用程序可利用的丰富的函数调用,大多数用于实现其用户界面和在显示器上显示的文本和图形,都是通过动态链接库来实现的 。这些动态链接库是一些具有.DLL扩展名或者有时是.EXE扩展名的文件 。
在Windows操作系统中,最主要的DLL有KERNEL32.DLL、GDI32.DLL和USER32.DLL三个模块 。其中,KERNEL32用来处理存储器低层功能、任务和资源管理等Windows核心服务; GDI32用来提供图形设备接口,管理用户界面和图形绘制,包括Windows元文件、位图、设备描述表和字体等;而USER32负责窗口的管理,包括消息、菜单、光标、计时器以及其它与控制窗口显示相关的一些功能 。
在32位Windows多任务操作系统中,采用了进程和线程的管理模式 。进程是装入内存中正在执行的应用程序 。进程包括私有的虚拟地址空间、代码、数据及其它操作系统资源,如文件、管道以及对该进程可见的同步对象等 。进程包括了一个或多个在进程上下文内运行的线程 。线程是操作系统分配CPU时间的基本实体 。线程可以执行应用程序代码的任何部分,包括当前正在被其它线程执行的那些部分 。同一进程的所有线程共享同样的虚拟地址空间、全局变量和操作系统资源 。在一个应用程序中,可以包括一个或多个进程,每个进程由一个或多个线程构成 。


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。