VB 版 (精华区)
发信人: bloom (小石头长大了), 信区: VB
标 题: 内存、字符串、结构及资源函数(2)
发信站: 哈工大紫丁香 (2000年07月23日17:48:56 星期天), 转信
目录
FindAtom 调查一个字串的原子数量,查找时不区分大小写
FindResource 在一个可执行模块中查找指定的资源,并返回一个资源句柄,以便由实际
装载资源的其他函数使用
FoldString 用于进行各种字串转换工作
FreeResource 用于释放通过 LoadResource 函数分配的资源
GetAtomName 获取与一个原子关联在一起的字串
GetProcessHeap 获取进程当前的默认堆
GetProcessHeaps 获取目前由一个进程使用的所有堆的一个列表
GetProp 为指定的属性获取整数数据句柄
GetStringTypeEx 允许我们获取与字串中每个字符有关的信息
GlobalAddAtom 为全局原子表添加一个原子
GlobalAlloc 分配一个全局内存块
GlobalDeleteAtom 删除指定的全局原子
GlobalFindAtom 取得一个字串的全局原子数量
GlobalFlags 为一个内存块获取全局内存标志
GlobalFree 释放指定的全局内存块
GlobalGetAtomName 获取与一个全局原子相关联的字串
________________________________________________________
FindAtom
VB声明
Declare Function FindAtom% Lib "kernel32" Alias "FindAtomA" (ByVal lpString
As String)
说明
调查一个字串的原子数量,查找时不区分大小写
返回值
Integer,返回字串的原子数量。如指定的字串中没有原子,则返回零。会设置GetLast
Error
参数表
参数 类型及说明
lpString String,指定要查找的字串
Top
_________________________________________________
FindResource, FindResourceEx
VB声明
Declare Function FindResource& Lib "kernel32" Alias "FindResourceA" (ByVal h
Instance As Long, ByVal lpName As String, ByVal lpType As String)
Declare Function FindResourceEx& Lib "kernel32" Alias "FindResourceExA" (ByV
al hModule As Long, ByVal lpType As String, ByVal lpName As String, ByVal wL
anguage As Integer)
说明
在一个可执行模块中查找指定的资源,并返回一个资源句柄,以便由实际装载资源的其
他函数使用
返回值
Long,返回可由其他资源函数(比如 LoadResource )使用的句柄,以便对特定的资源
进行访问。零表示出错。会设置GetLastError
参数表
参数 类型及说明
hInstance Long,指定一个已经装载的可执行模块的句柄,其中包含了想查找的资源
lpName String 或 Long,需要查找的目标资源的标识符。既可用一个名字(包含在一个
字串中)标识资源,也可用一个整数标识。如使用的是字串,而且第一个字符是 #,那
么这个字串指定的就是一个整数 ID(只不过采用字串格式);例如 #56 表示查找编号
为 56 的资源
lpType String 或 Long,指定资源类型。参考资源类型表
wLanguage Long,(仅适用于 FindResourceEx),这是一个语言标识符
注解
利用 LoadCursor,LoadIcon 和 LoadString 函数来装载鼠标指针、图标和字串。建议
用 LoadBitmap 函数装载位图,不要用这个函数以及 LoadResource 函数进行人工装载
注意这两个函数中 lpType 和 lpName 参数的顺序是颠倒的
Top
___________________________________________________
FoldString
VB声明
Declare Function FoldString Lib "kernel32" Alias "FoldStringA" (ByVal dwMapF
lags As Long, ByVal lpSrcStr As String, ByVal cchSrc As Long, ByVal lpDestSt
r As String, ByVal cchDest As Long) As Long
说明
用于进行各种字串转换工作
返回值
Long,返回目标缓冲区的字节长度。零意味着出错。会设置GetLastError
参数表
参数 类型及说明
dwMapFlags Long,下列常数的一个或多个
MAP_FOLDZONE 将 &F900 和 &FFEF 之间的字符转换成标准 Unicode 字符
MAP_FOLDDIGITS 将所有数位字符转换成标准的 Unicode 0-9 数位
MAP_PRECOMPOSED 将由两个字符构成的任何字符(比如由一个重音字符和一个字符构成
的字符)转换成单个字符
MAP_COMPOSED 如有可能,将能由两个字符构成的任何字符(比如由一个重音字符和一个
字符构成的字符)从单个字符转换成两个字符
lpSrcStr String,指定源字串
cchSrc Long,指定字串的字节数量;如设为-1,表示自动计算(以NULL中止字符为准)
lpDestStr String,指定一个输出缓冲区,用于保存转换过后的字串
cchDest Long,指定 lpDestStr 缓冲区的大小。如果为零,则函数会返回必要的缓冲区
长度
在VB里使用
由于这里进行的大多数转换都采用 Unicode 格式,所以这个函数的主要用途应当是使用
FoldStringW 条目,而不是使用 ANSI 格式的 FoldStringA 常数。同时传递包含了一
个 Unicode 字串的字节缓冲区,将其作为 lpSrcStr 参数使用(把它声明成 As Byte,
并传递包含了 Unicode 字串的一个数组的首字节)。也要用一个字节缓冲区进行输出
适用平台
Windows NT
Top
__________________________________________
FreeResource
VB声明
Declare Function FreeResource Lib "kernel32" Alias "FreeResource" (ByVal hRe
sData As Long) As Long
说明
用于释放通过 LoadResource 函数分配的资源
返回值
Long,零表示成功,非零表示失败。
参数表
参数 类型及说明
hResData Long,指定由 LoadResource 返回的句柄
注解
在Windows NT 下无须调用此函数
Top
______________________________________________________
GetAtomName
VB声明
Declare Function GetAtomName& Lib "kernel32" Alias "GetAtomNameA" (ByVal nAt
om As Integer, ByVal lpBuffer As String, ByVal nSize As Long)
说明
获取与一个原子关联在一起的字串
返回值
Long,装载到 lpBuffer 字串的字符数量。零表示失败。会设置GetLastError
参数表
参数 类型及说明
nAtom Integer,指定一个原子编号
lpBuffer String,指定一个字串缓冲区,用于装载同一个原子关联在一起的字串。这个
缓冲区应预初始化成至少nSize+1个字符的长度
nSize Long,要装载到缓冲区的最大字符数量
Top
___________________________________________
GetProcessHeap
VB声明
Declare Function GetProcessHeap Lib "kernel32" Alias "GetProcessHeap" () As
Long
说明
获取进程当前的默认堆
返回值
Long,当前进程堆的句柄
Top
___________________________________
GetProcessHeaps
VB声明
Declare Function GetProcessHeaps Lib "kernel32" Alias "GetProcessHeaps" (ByV
al NumberOfHeaps As Long, ProcessHeaps As Long) As Long
说明
获取目前由一个进程使用的所有堆的一个列表
返回值
Long,当前进程可用堆的总数量
参数表
参数 类型及说明
NumberOfHeaps Long,ProcessHeaps 数组的长度
ProcessHeaps Long,指定一个数组的头一个条目。这个数组将载入为这个进程定义的堆
的句柄
Top
________________________________________
GetProp
VB声明
Declare Function GetProp Lib "user32" Alias "GetPropA" (ByVal hwnd As Long,
ByVal lpString As String) As Long
说明
为指定的属性获取整数数据句柄
返回值
Long,用 SetProp 函数为属性保存下来的32位值或句柄
参数表
参数 类型及说明
hwnd Long,一个窗口的句柄
lpString String,指定属性名,或指定作为属性名使用的一个原子。如果是一个原子,
那么必须是一个全局原子,而且参数的高字必须是0
Top
_______________________________________________
GetStringTypeEx
VB声明
Declare Function GetStringTypeEx Lib "kernel32" Alias "GetStringTypeExA" (By
Val Locale As Long, ByVal dwInfoType As Long, ByVal lpSrcStr As String, ByVa
l cchSrc As Long, lpCharType As Integer) As Long
说明
允许我们获取与字串中每个字符有关的信息
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
Locale Long,判断类型时采用的地方设置
dwInfoType Long,下述一个或多个常数:
CT_TYPE1 为每个字符设置 C1_??? 类型标志
CT_TYPE2 为每个字符设置 C2_??? 类型标志
CT_TYPE3 为每个字符设置 C3_??? 类型标志
lpSrcStr String,要分析的字串
cchSrc Long,指定 lpSrcStr 参数中的字串的长度。-1表示自动计算这个值(注意字串
必须用 NULL 字符中止)
lpCharType Integer,指定一个整数数组,为 lpSrcStr 字串中的每个字符都设置一个
数组条目。该数组会为每个字符都装载一个值,其中包括了对字符进行描述的标志
注解
C1_??? 类型允许我们决定一个字符采用大写还是小写形式;是一个字符、数字还是标点
符号;等等
C2_??? 类型允许我们判断一个字符的标准间距以及类型方向
C3_??? 类型标志允许我们决定字符特征,以便用标准的 C 函数库进行字串处理,这些
处理不可由 VB 直接完成
Top
_________________________________________
GlobalAddAtom
VB声明
Declare Function GlobalAddAtom Lib "kernel32" Alias "GlobalAddAtomA" (ByVal
lpString As String) As Integer
说明
为全局原子表添加一个原子
返回值
Long,如执行成功,返回原子值(&C000 到 &FFFF);零表示出错。会设置GetLastErr
or
参数表
参数 类型及说明
lpString String,指定与原子关联在一起的字串,也称为原子的名称
注解
无论如何都要检查结果,确定原子已成功分配。同时要注意原子是不区分大小写的
Top
_________________________________________________________
GlobalAlloc
VB声明
Declare Function GlobalAlloc Lib "kernel32" Alias "GlobalAlloc" (ByVal wFlag
s As Long, ByVal dwBytes As Long) As Long
说明
分配一个全局内存块
返回值
Long,返回全局内存句柄。零表示失败。会设置GetLastError
参数表
参数 类型及说明
wFlags Long,对分配的内存类型进行定义的常数标志,如下所示:
GMEM_FIXED 分配一个固定内存块
GMEM_MOVEABLE 分配一个可移动内存块
GMEM_DISCARDABLE 分配一个可丢弃内存块
GMEM_NOCOMPACT 堆在这个函数调用期间不进行累积
GMEM_NODISCARD 函数调用期间不丢弃任何内存块
GMEM_ZEROINIT 新分配的内存块全部初始化成零
dwBytes Long,要分配的字符数
注解
如指定了 GMEM_FIXED,那么返回值就是要使用的实际内存地址(GlobalLock 会返回同
样的值)——所以在使用固定内存块的时候不需要执行一个 GlobalLock/GlobalUnlock
操作
由于 Win32 采用了高级的内存管理方案,所以使用可移动的内存块并没有什么好处
用这个函数分配的内存块允许在8位边界以内
Top
___________________________________________
GlobalDeleteAtom
VB声明
Declare Function GlobalDeleteAtom Lib "kernel32" Alias "GlobalDeleteAtom" (B
yVal nAtom As Integer) As Integer
说明
删除指定的全局原子
返回值
Integer,零表示成功;如执行失败,则返回原子编号。会设置GetLastError
参数表
参数 类型及说明
nAtom Integer,要删除的原子编号
注解
如原子已被分配多次,那么除非这个函数也调用了同样多的次数,否则原子不会被实际
删除。 Windows 为每个原子都维护着一个索引计数
Top
_____________________________________________
GlobalFindAtom
VB声明
Declare Function GlobalFindAtom Lib "kernel32" Alias "GlobalFindAtomA" (ByVa
l lpString As String) As Integer
说明
取得一个字串的全局原子数量
返回值
Long,字串的全局原子数量。如指定的字串没有原子,则返回零。会设置GetLastError
参数表
参数 类型及说明
lpString String,要查找的字串
Top
______________________________________________
GlobalFlags
VB声明
Declare Function GlobalFlags Lib "kernel32" Alias "GlobalFlags" (ByVal hMem
As Long) As Long
说明
为一个内存块获取全局内存标志
返回值
Long,整数的低8位包含了内存块当前的锁定计数。标志位是根据下述常数设置的:
GMEM_DISCARDABLE:内存块可以丢弃
GMEM_DISCARDED:内存块已经丢弃
参数表
参数 类型及说明
hMem Long,全局内存块的句柄
Top
___________________
GlobalFree
VB声明
Declare Function GlobalFree Lib "kernel32" Alias "GlobalFree" (ByVal hMem As
Long) As Long
说明
释放指定的全局内存块。在调用了这个函数以后,hMem 句柄就不再有效。注意调用这个
函数的时候,内存块不会进入锁定状态
返回值
Long,零表示成功;如出错,返回 hMem
参数表
参数 类型及说明
hMem Long,要释放的一个全局内存块的句柄
注解
内存释放后,向那个内存块写入数据的任何企图都可能造成进程堆的崩溃,导致严重的
异常错误
Top
__________________________________________
GlobalGetAtomName
VB声明
Declare Function GlobalGetAtomName Lib "kernel32" Alias "GlobalGetAtomNameA"
(ByVal nAtom As Integer, ByVal lpBuffer As String, ByVal nSize As Long) As
Long
说明
获取与一个全局原子相关联的字串
返回值
Long,装载到 lpBuffer 字串的字符数量。会设置GetLastError
参数表
参数 类型及说明
nAtom Integer,指定一个原子编号
lpBuffer String,指定一个字串缓冲区,用于装载与全局原子相关联的字串。该缓冲区
事先至少应初始化成 nSize+1 个字符的长度
nSize Long,能装载到缓冲区的最大字符数量
Top
_______________________________________
又臭,又硬。
小石头
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.233.140]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.314毫秒