您的位置:首页 > 其它

Windows句柄和API函数介绍以及常用的API函数

2011-07-14 21:58 363 查看
windows操作系统中所谓句柄是惟一标识某个Windows对象(例如程序实例、窗口、光标、图标、画刷和菜单等)的一个32位无符号整数,句柄是Windows对象的唯一标识符,只有有了句柄,程序才能使用与其对应的Widows对象。Windows程序通常通过调用win32API函数来获取某个Windows对象的句柄。
Windows操作系统的很多功能模块是有C语言写的。句柄的数据类型在winn.h中是这样说明的:typedef void* HANDLE;所以句柄是一个泛型(无类型)指针,从物理上看它是一个指针。但从逻辑上看他又不是一个指针,他不是指向一个Windows对象存储单元的首地址,而是指向包含了使用该对象有关信息的一块存储单元,这里面有对象的地址还有其他有关的信息。所以从逻辑上说他是一个对象的唯一标识。
既然是唯一标识,句柄所指向的内容是不能由句柄操作来改变的,只能由系统来改变。这类似于不能给指针随意赋一个地址值。所以处理句柄时,允许做的唯一操作时检查他是否是一个有效句柄。不等于0时就认为是一个有效句柄,等于0时就是无效句柄。有了句柄,只要给出一个句柄的命令,操作系统就会进行相关的操作,使操作变得简单。
Windows是一个很全面的操作系统,除了协调应用程序的执行、分配内存、管理系统资源之外,他同时也是也是一个很大的服务中心。调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮助应用程序达到开启视窗,描绘图形,使用周边设备等目的。由于这些函数服务的对象是应用程序,所以称之为应用程序编程接口,简称API。
API函数是开发Windows应用程序最底层的东西,就连Windows本身的许多应用程序都应用API函数来实现的。随着Windows系统的不断升级,与系统相关的API函数也在不断的变化,最明显的变化是有原来的16位变成了32位。有的API函数可以在每个版本的Windows系统中运行,有的则不可以,例如实现窗体半透明效果的SetLayeredWindowsAttributes函数,他只能在Windows2000及以后的系统下运行。
API函数都封装在动态链接库中,对API函数的调用都需要加载动态链接库,常用的API函数大都封装在KDRNEL.dll、GDL.dll、USER.dll等几个动态链接库中,但在Microsoft Visual C++中调用API函数并不需要额外加载动态链接库的代码,因为Visual C++会自动与常用的动态链接库相连。
API函数是开发Win32应用程序的基础,即使使用MFC库来开发Win32应用程序,也要对API函数有一定的了解。因为虽然MFC对API函数进行了封装,但并没有封装所有的API函数,例如发送消息函数SHBrowersForFolder,在开发MFC应用程序过程中经常调用到这个函数。在Microsoft Visual C++中直接使用API函数需要再前面加上::符号,这个符号用来调用全局函数而不是对象函数。在MFC中有许多和API函数同名的函数,在使用API函数的过程中直接按API函数的参数去写,编译器能自动识别这个API函数。
API函数有许多,分为窗口管理,国际特性,图形设备接口,系统服务,网络服务等几个部分,经常用到的就只有窗口管理和图形设备接口两个部分。下面就对这两部分进行
窗口管理函数主要用来创建和管理用户界面,包括了按钮、对话框、光标、编辑框等对象的创建以及处理鼠标、键盘输入和处理消息等。窗口管理常用的函数参照表如下:
函数描述
CreateWindow创建一个窗体
CreateWindowEx创建一个窗体
CreateDialog通过资源创建对话框
CreateIcon按指定的大小、颜色、位、创建图标
DrawIcon在限定的设备上下文窗口的客户区域绘制图标
GetIconInfo获取图标或光标的信息
CreateCursor创建一个指定大小、位模式和热点的光标
GetCusor获取当前光标的句柄
SetCusor确定光标的形状
ShowCursor显示或隐藏光标
CreateMenu创建一个菜单
DeleteMenu从指定菜单里删除一个菜单项
EnableMenuItem使指定的菜单项有效、无效或变灰
GetMenu取得分配给指定窗口的菜单的句柄
LoadMenu从与应用程序实例相联系的可执行文件中加载指定的菜单资源
TrackPopupMenu从指定的位置显示菜单
DlgDirList显示指定文件夹的内容
RegisterClass注册窗口类
图形设备接口类函数提供对设备上下文中各个对象的操作,主要有位图对象,颜色对象,画刷对象,画笔对象等。
图形设备接口藏用的函数如下表所示
函数描述
BitBlt源设备环境区域中的像素通目标设备环境转换
CreateCompatibleBitmap创建于指定的设备环境相的设备兼容的位图
CreateDIBitmap创建与设备有关的位图
GetDiBits获取指定位图的信息
GetPixel检索指定坐标点的像素的RGB颜色值
LoadBitmap从模板的可执行文件中加载指定的位图资源
CreateBrushIndirect创建具有指定风格、颜色和模式的画刷
CreateSolidBrush创建一个具有指定颜色的画刷
CreatePalette创建一个逻辑的调色板
ResizePalette增大或减小基于指定值的逻辑调色板的大小
SelectPalette选择指定的逻辑调色板到指定的设备环境中
CreateCompatibleDC创建一个与指定设备兼容的内存设备上下文环境
GetDeviceCaps获取指定设备的设备指定信息
GetStockObject检索预定义的备用笔、刷子、字体或者调色板的句柄
Chord画一段圆弧
FillRect用指定的画刷填充矩形
Polygon画一个由相连的两个以上顶点的多边形
Rectangle画一个矩形
DrawText在指定的矩形里写入格式化文本
GetTextColor获得指定设备环境的当前文字颜色
GetTextFace获得被选进指定设备环境中的姿态字样名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: