Win32 API概论Word文档下载推荐.docx
《Win32 API概论Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Win32 API概论Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
窗口管理
窗口通用控制
Shell特性
图形设备接口
系统服务
国际特性
网络服务
在下面各节中,我们分别介绍这7种类型的API函数。
1.2.1窗口管理函数
窗口管理函数向应用程序提供了一些创建和管理用户界面的方法。
你可以使用窗口管理函数创建和使用窗口来显示输出、提示用户进行输入以及完成其他一些与用户进行交互所需的工作。
大多数应用程序都至少要创建一个窗口。
应用程序通过创建窗口类及相应的窗口过程来定义它们所用窗日的外观和行为。
窗口类可标识窗口的缺省属性,比如窗口是否接受双击鼠标按钮的操作。
或是否带有菜单。
窗口过程中包含的代码用于定义窗口的行为,完成所需的任务,以及处理用户的输入。
应用程序可使用GDI函数来产生窗口的输出。
由于所有的窗口都共享显示屏幕,所以应用程序不接受对整个屏幕的访问。
系统管理所有的输出内容,并对它们进行排列和剪裁,使其能够适合相应的窗口。
应用程序可以在处理输入消息时,或为了响应系统的需求而在窗口中绘图。
当窗口的大小或位置发生变化时,系统通常会向应用程序发送一个消息,要求它对该窗口中原来未显露的区域进行重画。
应用程序以消息的形式接受鼠标和键盘输入。
系统将鼠标移动、鼠标按钮操作转换为输入消息,并将这些消息放入该应用程序的消息队列中。
系统为每个应用程序都自动提供一个消息队列。
应用程序使用消息函数从消息队列中获取消息,并将它们分派给适当的窗口过程进行处理。
应用程序可以直接处理鼠标和键盘输人,也可以让系统使用菜单和键盘加速健将这些低级输入转换成命令消息。
你可以使用菜单向用户展现一个命令列表。
系统对所有菜单操作所需的动作进行管理,包括让用户选择一个命令,然后再向窗日过程发送一个标识该选择的消息。
键盘加速键是应用程序定义的按键操作组合,系统可将其转换为消息。
加速键通常对应于菜单中的某个命令,并与该命令产生相同的消息。
应用程序通过在对话框中向用户提示附加信息来响应命令消息。
对话框实际是一个临时的窗口,用于显示信息或提示输入。
一个对话框通常由一些表示按钮和方框的控制组成,可供用户进行选择或输入信息。
对话框中可包括用于输入正文、滚动正文、从列表中选择列表项等操作的控制。
对话框管理和处理来自这些控制的输入,使应用程序可使用这些信息,来完成所要求的命令操作。
通过使用“资源”可以共享很多有用的数据,比如位图、图标、字体和字符串等,只需将这些数据作为“资源”添加到应用程序或DLL文件中。
应用程序通过使用资源函数,找到资源并将它们加载到内存来获取这些数据。
窗口管理函数还提供了其他一些与窗口有关的特性,比如插入标记(Caret)、剪贴板、光标、挂钩(Hook)、图标以及菜单等函数。
窗口管理函数包括以下几类:
易用特性函数(AccessibilityFeatures)
Win32API提供的一系列易用特性使得有残疾的人也能很容易的使用计算机,Win32API提供了一些函数和结构来控制这些特性。
按钮函数(Button)
Microsoft提供了对话框和控制来支持应用程序与用户之间的交互通讯。
按钮就是一种控制,用户可通过点击按钮来向应用程序提供输入信息。
插入标记函数(Caret)
一个插入标记是位于窗口绘图区中的一个闪动的直线、方块或图标。
插入标记通常用于指示文本或图形将插入的位置。
Win32应用程序可以使用插入标记函数来创建一个插入标记,改变它的闪动频率,显示、隐藏插入标记,或重新设置插入标记的位置。
组合框函数(ComboBox)
组合框是由COMBOBOX类定义的一种控制,综合了列表框和编辑控制的很多功能。
使用组合框函数可以在组合框中显示或获取不同类型的数据。
通用对话框函数(CommonDialogBox)
通用对话框是在通用对话框库中定义的,其功能是用来完成一些通用的任务,比如打开文件、打印文档等。
通用对话框为用户提供了一个统一的用户界面,使用户在不同的应用程序中完成通用任务时的操作都相同,不必每次都学习不同的操作过程。
光标函数(Cursor)
光标是显示屏幕上的一个小图形,其所在的位置由指点设备比如鼠标、光笔或轨迹球等控制。
当用户移动鼠标时,系统就会随之移动光标的位置。
应用程序使用Win32光标函数可以创建、加载、显示、移动、限制和删除光标。
对话框函数(DialogBox)
对话框是应用程序创建的一个临时窗口,用于获取用户的输入。
应用程序通常使用对话框向用户显示一些命令提示信息。
一个对话框一般由一个或多个控制(子窗口)组成,这些控制可用来输入文本、选择选项或执行命令动作。
编辑控制函数(EditControl)
编辑控制是一个矩形窗口,通常用在对话框中,用户可通过键盘向编辑控制中输入和编辑文本。
系统对Unicode文本(字符采用双字节编码)和ANSI(字符采用单字节编码)文本都支持。
图标函数(Icon)
图标是一个图片,由一个位图图像组成,并和一个掩码组合构成该图片的透明区域。
当提到图标时,可以是下列两种情况:
1)单个图标图像。
资源类型为RT_ICON。
2)一组图标图像,系统或应用程序可从中选择。
资源类型为RT_GROUP_JCON。
应用程序使用图标函数可以创建、显示、删除和复制图标。
键盘加速健函数(KeyboardAccelerator)
键盘加速键(或简称为加速键)是一个按键操作或多个按键操作的组合,可向应用程序发送WM_COMMAND或WM_SYSCOMMAND消息。
使用键盘加速键函数可以拷贝、创建、加载或删除加速键表,*图标是一个图片,由一个位图图像组成,并和一个掩码组合构成该图片的透明区域。
使用键盘加速键函数可以拷贝、创建、加载或删除加速键表,还可以将加速键消息转换为命令消息。
键盘输入函数(KeyboardInput)
键盘输入函数提供了接受和处理键盘输入的方法。
列表框函数(ListBox)
Microsoft的Win32API提供了对话框和控制来支持应用程序与用户之间的交互通讯。
列表框是一个控制窗口,其中包含一系列选项,可供用户进行选择。
使用列表框函数可以在列表框中显示或获取不同类型的数据。
菜单函数(Menu)
菜单函数向Win32应用程序提供了一系列创建、管理和使用菜单的方法,包括对菜单条、菜单项。
于菜单等的处理。
消息和消息队列函数(MessageandMessageQueue)
消息和消息队列函数向Win32应用程序提供了一系列使用消息和消息队列的方法,包括对消息进行
传播、发送、获取、转换等操作。
鼠标输入函数(MouseInput)
鼠标输入函数提供了接受和处理鼠标输入的方法。
多文档接口函数(MultipleDocumentInterface)
多文档接口(MDI)是应用程序定义用户界面的一种规范,在这种界面下,用户可以同时使用多个文档。
资源函数(Resource)
一个资源是一些二进制数据,可以添加到Win32应用程序的可执行文件中。
资源既可以是标准的,也可以是自己定义的。
标准资源中的数据包括图标、光标、菜单、对话框、位图、增强元文件、字体、加速键表、消息表入口、字符串表入口或版本。
应用程序定义的资源(也称为定制的资源)可以包含特
殊应用程序所需的任何数据。
使用资源函数可以添加、删除、拷贝、替换或加载各种资源数据。
滚动条函数(ScrollBar)
在Win32应用程序的窗口中,可以显示比该窗口的显示区更大的数据对象,比如文档或位图。
当窗口提供了滚动条时,用户就可以通过拖动滚动条来浏览该数据对象中位于显示区外面的部分。
滚动条包括水平滚动条和垂直滚动条。
使用滚动条函数可以创建和管理这两种滚动条。
窗口函数(Window)
在图形化的Win32应用程序中,窗口是屏幕上的一个矩形区域,应用程序可在该区域中显示输出结果,并接受用户输入。
因此,一个图形化的Win32应用程序的首要任务之一就是创建一个窗口。
一个窗口与其他窗口共享显示屏幕,也包括其他应用程序所创建的窗口。
一次只能有一个窗口接受用户的输入。
用户可以使用鼠标、键盘或其他输人设备与该窗口及拥有该窗口的应用程序进行交互。
使用窗口函数可以创建和管理窗口。
窗口类函数(WindowClass)
一个窗口类是一个属性的集合,系统将该属性集合用作创建窗口的模板。
每个窗口都是某个窗口类的一个成员。
使闲置或删除窗口属性。
1.2.2窗口通用控制
系统Shell提供了一些控制,使用这些控制可以使窗口具有与众不同的外观。
由于这些控制是由DLL支持的,是操作系统的一部分,所以它们对所有的应用程序都可用。
使用通用控制有助于使应用程序的用户界面与系统Shell及其他应用程序保持一致。
由于开发一个控制需要花费一定的时间,所以直接使用通用控制也可以节省大量的开发时间。
通用控制是由通用控制库COMCTL32.DLL支持的一个控制窗口集。
与其他控制一样,一个通用控制也是应用程序的一个子窗口,它与其他窗口联合使用,完成I/O操作。
通用控制DLL包括一个编程接口,应用程序可使用其中的函数创建和管理控制。
以及从控制中接受用户输入。
1.2.3Shell特性
Win32API中包含一些接口和函数,应用程序可使用它们来增强系统Shell的各方面功能。
一个名字空间是一个符号集合,比如文件和目录名字,或数据库关键字。
Shell使用一个单层结构的名字空间来组织用户关心的所有对象,包括文件、存储设备、打印机及网络资源。
名字空间类似于文件系统的目录结构,只不过名字空间中包含的是对象,而不是文件和目录。
快捷键(也称为一个Shell连接)是一个数据对象,它包含的信息可用于访问位于Shell名字空间的任何位置的其他对象。
使用快捷键时,应用程序不必知道对象的当前名字和位置就可以访问该对象。
可以通过快捷键访问的对象包括文件、文件夹、磁盘驱动器、打印机及网络资源。
有几种方法可以扩展Shell。
系统使用图标来表示Shell名字空间中的文件。
缺省情况下,系统对具有相同文件扩展名的所有文件都显示相同的图标。
可以用一个图标句柄来改变某特殊文件的缺省图标。
使用上下文相关菜单句柄可以修改一个上下文相关菜单的内容,这也是一种Shell扩展。
当用户用鼠标右键点击或拖动一个对象时,系统会显示一个上下文相关菜单。
该上下文相关菜单中所包含的命令只应用在被点击或拖动的对象上。
大多数上下文相关菜单都包含一个Properties命令,用于显示所选中项目的属性表。
一个属性表由一系列重叠的窗口组成(每个窗口称为一页),用于显示有关某个对象的信息。
属性表句柄是一种Shell扩展,使用它可以向系统定义的属性表中添加页,或替换控制面板的属性表的某些页。
一个拷贝挂钩(Hook)句柄是一种Shell扩展,可以允许或拒绝对一个文件对象的移动、拷贝、删除或重命名。
系统Shell包含一个快速查看(QuickView)命令,使用户可以直接查看一个文件的内容.而不必运行创建该文件的应用程序。
文件浏览器提供了一个用于查看文件的用户界面。
Shell使用文件扩展名来确定应运行哪个浏览器。
你可以为新的文件格式提供文件浏览器,或用具有更强功能的浏览器来替换原来的浏览器。
文件浏览器与文件分析器联合使用,后者的功能是对文件名进行分析,以便确定应生成哪种类型文件的QUckView。
你还可以提供其他的文件分析器来支持新的文件类型。
1.2.4图形设备接口
图形设备接口(GDI)提供了一系列的函数和相关的结构,应用程序可以使用它们在显示器、打印机或其他设备上生成图形化的输出结果。
使用GDI函数可以绘制直线、曲线、闭合图形、路径、文本以及位图图像。
所绘制的图形的颜色和风格依赖于所创建的绘图对象,即画笔、笔刷和字体。
你可以使用画笔来绘制直线和曲线,使用笔刷来填充闭合图形的内部,使用字体来书写文本。
应用程序通过创建设备环境(DC),可以直接向指定的设备进行输出。
设备环境是一个GDI管理的结构。
其中包含一些有关设备的信息,比如它的操作方式及当前的选择。
应用程序可使用设备环境函数来创建DC。
GDI将返回一个设备环境句柄,在随后的调用中,该句柄用于表示该设备。
例如,应用程序可以使用该句柄来获取有关该设备性能的一些信息,诸如它的类型(显示器、打印机或其他设备),它的显示界面的尺寸和分辨率等。
应用程序可以直接向一个物理设备进行输出,比如显示器或打印机;
也可以向一个“逻辑”设备进行输出,比如内存设备或元文件。
逻辑设备向应用程序所提供的保存输出结果的格式,可以很容易地将其发送到物理设备上。
一旦应用程序将输出结果记录到了一个元文件中,那么该元文件就可以被使用任意多次,并且该输出结果可以被发送到任意多个物理设备上。
应用程序可以使用属性函数来设置设备的操作方式和当前的选择。
操作方式包括文本和背景颜色,混色方式(也称为二元光栅操作,用于确定画笔或笔刷的颜色与绘图区域现有的颜色如何进行混色),映射方式(用于指定GDI如何将应用程序所用的坐标映射到设备坐标系统上)。
当前的选择是指绘图时使用哪个绘图对象。
图形设备接口函数包括以下几类:
位图函数(Bltmap)
位图是一个图形对象,可将图像作为文件进行创建、处理(比例缩放、滚动、旋转和绘制)和存储。
位图函数提供了一系列处理位图的方法。
笔刷函数(Brush)
笔刷是一种绘图工具,Win32应用程序可使用它绘制多边形、椭圆形和路径的内部。
绘图应用程序使用笔刷绘制图形;
字处理应用程序使用笔刷绘制水线;
计算机辅助设计(CAD)应用程序使用笔刷绘制截面视图的内部;
电子表格应用程序使用笔刷绘制饼图的扇形和直方图的方条。
笔刷函数提供了一系列创建和使用笔刷的方法。
剪裁函数(Clipping)
剪裁是一种处理过程,它将输出到某个区域或路径中的内容限制在应用程序窗口的显示区内。
剪裁函数提供了一系列处理剪裁区域的方法。
颜色函数(Color)
颜色是组成Win32应用程序所生成的图片和图像的一个重要元素。
Win32API提供了一系列管理和使用画笔、笔刷、文本和位图的颜色的函数。
坐标空间及映射函数(CoordinateSpaceandTransformation)
Win32应用程序使用坐标空间和映射函数对输出的图形进行比例缩放、旋转、转换、剪裁和反射。
坐标空间是基于笛卡尔坐标系统的一个平面空间。
该坐标系统要求有两个垂直相交的、长度相等的坐标轴。
共有4种坐标空间:
现实坐标、页面坐标、设备坐标、物理设备坐标(显示区,或桌面,或打印纸的页面)。
映射方式就是改变(“映射”)对象的大小、方向和形状的一种算法。
设备环境函数(DeviceContext)
设备环境是一个结构,它定义了一系列图形对象及其相关的属性,以及会影响输出结果的绘图方式。
这些图形对象包括:
画笔(用于画直线),笔刷(用于绘图和填充),位图(用于屏幕的拷贝或滚动),调色板(用于定义可用的颜色集),剪裁区(用于剪裁和其他操作),路径(用于绘图和画图操作)。
设备环境函数用于对设备环境进行创建、删除或获取信息。
填充图形函数(FilledShape)
填充图形是一些几何图形,其轮廓由当前的画笔绘制,内部由当前的笔刷填充。
共有5种填充图形:
椭圆,弦图,饼图,多边形,矩形。
填充图形函数用于对填充图形进行操作。
字体和文本函数(FontandText)
字体用于在视频显示器或其他输出设备上绘制文本。
Win32API提供了一系列用于安装、选择和查询各种字体的字体和文本函数。
ICM2.0函数
MicrosoftWindows98和WindowsNT5.0所使用的颜色管理方案称为ImageColorManagement版本2.0,或ICM2.0,由一系列函数组成。
直线和曲线函数(LineandCurve)
直线和曲线用于在光栅设备上绘制输出图形。
一条直线是光栅显示器上的一系列高亮像素点(或打印纸上的一系列点),由两个点进行标识:
起点和终点。
一条规则曲线也是光栅显示器上的一系列高亮像素点(或打印纸上的一系列点),符合某个二次曲线段的周界(或一部分)。
不规则曲线则是由不符合二次曲线段的一系列像素点组成。
元文件函数(Metafile)
元文件是一个结构的集合,这些结构是以与设备无关的格式存储图像。
设备无关是元文件与位图的差异之一。
与位图不同,元文件保证是与设备无关的。
不过,元文件有一个缺点:
它通常比位图的绘图速度慢。
因此,如果一个应用程序要求有较快的绘图速度,而不需要具有设备无关性,则应该用位图代替元文件。
元文件函数提供了一些对元文件进行操作的方法。
多显示器支持函数(MultpleDisplayMonltors)
每个Windows工作站所支持的显示器个数是不受限制的。
可以用创建邻接区域的方式安排多个显示器。
每个显示器的大小和颜色深浅都可以独立设置。
所有的显示器屏幕一起构成了一个虚拟屏幕。
桌面窗口覆盖整个虚拟屏幕,而不仅仅是某个显示屏幕。
由于现有的应用程序都要求显示器具有一个原点坐标(0,0),所以虚拟屏幕必须在某个显示器上包含原点坐标(0,0),这个显示器就被看作是主显示器。
每个物理显示设备都由一个HMONITOR类型的显示器句柄表示。
一个显示器在它的整个生存期间具有相同的HMONITOR值。
任何显示设备环境(DC)的Win32函数所返回的值都是主显示器的DC。
要想获取其他显示器的DC,可使用EnumDisplayMonitors函数。
系统对每个显示器调用回调函数,为该显示器传入一个DC值。
用户可以使用该DC在该显示器上绘图。
绘图和画图函数(PaintingandDrawing)
绘图和画图函数为应用程序提供了一系列在窗口中绘图的方法,以及如何创建和使用显示设备环境(DC)的方法。
路径函数(Path)
一个路径是指一个或多个被填充、被绘制轮廓或既被填充又被绘制轮廓的图形(或形状)。
Win32应用程序将路径用作很多用途,在绘图和画图应用程序中使用路径。
计算机辅助设计(CAD)应用程序用路径来创建唯一剪裁区,绘制不规则形状的轮廓,以及填充不规则形状的内部。
路径函数用于创建、改变和绘制路径。
画笔函数(Pen)
画笔是Win32应用程序用于绘制直线和曲线的图形工具。
画图应用程序使用画笔来画手画线、直线以及曲线。
计算机辅助设计(CAD)应用程序用画笔来画可见线、隐藏线、截面线、中心线等等。
字处理和桌面出版应用程序用画笔来画边界和水线。
电子表格应用程序用画笔来指明图表的趋向,以及勾勒直方图和饼图的轮廓。
画笔函数提供了一系列使用画笔的方法。
打印和打印假脱机函数(PrintingandPrintSpooler)
MicrosoftWindows和WindowsNT提供了一套完整的函数,使应用程序可以在不同的设备上进行打印,如激光打印机,向量绘图仪,光栅打印机,以及传真机等。
矩形函数(Rectangle)
Win32应用程序使用矩形来指定显示屏幕上或窗口中的一个矩形区域。
矩形函数用于对矩形进行操作。
区域函数(Region)
区域是指一个可被填充、着色、转换和加外框的形状,包括矩形、多边形或椭圆(或这几种形状的组合),用于完成击键测试(测试光标位置)。
区域函数用于对区域进行操作。
1.2.5系统服务
系统服务函数为应用程序提供了访问计算机资源以及底层操作系统特性的手段,比如访问内存、文件系统、设备、进程和线程。
应用程序使用系统服务函数来管理和监视它所需要的资源。
例如,应用程序可使用内存管理函数来分配和释放内存,使用进程管理和同步函数来启动和调整多个应用程序或在一个应用程序中运行的多个线程的操作。
系统服务函数提供了访问文件、目录以及输入输出(I/O)设备的手段。
应用程序使用文件I/O函数可以访问保存在指定计算机以及网络计算机上的磁盘和其他存储设备上的文件和目录。
这些函数支持各种文件系统,从FAT文件系统,CD-ROM文件系统(CDFS),到NTFS。
系统访问函数为应用程序提供了一些可以与其他应用程序共享代码或信息的方法。
例如,可以将一些有用的过程放到DLL中,使它们对所有的应用程序都可用。
应用程序只需使用DLL函数将动态链接库加载进来并获取各过程的地址,就可