|
|
原文:http://www.cnblogs.com/cltsq/articles/api.html
9 y7 |* S. [# X; v* b7 q1. API之网络函数
$ E& j7 `3 R* Q. DWNetAddConnection 创建同一个网络资源的永久性连接 8 e$ E! G% f5 ^- q
WNetAddConnection2 创建同一个网络资源的连接 8 S: f# O9 [; V
WNetAddConnection3 创建同一个网络资源的连接
2 |' I+ B1 E- oWNetCancelConnection 结束一个网络连接 / y5 K1 _' {% |5 i4 u6 q+ j
WNetCancelConnection2 结束一个网络连接
! x. u1 @, U2 f( l1 ^: jWNetCloseEnum 结束一次枚举操作 ' L a& b0 k! D/ g% p. i
WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接
" G& k* n, s4 p' ^( g5 ~$ Q6 q9 Q' oWNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 & m# R- n2 c2 l8 ~# [2 I8 S
WNetEnumResource 枚举网络资源
7 q2 U9 Q8 |2 G' xWNetGetConnection 获取本地或已连接的一个资源的网络名称 / c/ t' A4 ^9 p7 e6 S
WNetGetLastError 获取网络错误的扩展错误信息 / Y: U3 v' z, r% K3 M6 V3 Y0 T
WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称
0 r6 S- p" s" T) ^( _& dWNetGetUser 获取一个网络资源用以连接的名字
$ {- t. Z3 E: ]" hWNetOpenEnum 启动对网络资源进行枚举的过程
6 y$ A* p3 Z( |" l7 J u8 r. \2. API之消息函数
. S4 x O' z QBroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口 / V2 O0 c" v' F7 X/ Z
GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置
! h3 _" K0 N* k8 W0 G l ?! mGetMessageTime 取得消息队列中上一条消息处理完毕时的时间 9 n7 H1 T0 ^; o+ Y1 @
PostMessage 将一条消息投递到指定窗口的消息队列
5 t; C: }7 y. A4 ?5 ~+ UPostThreadMessage 将一条消息投递给应用程序
" k7 M; `' D& Y4 d- W/ {9 X9 WRegisterWindowMessage 获取分配给一个字串标识符的消息编号
4 X# k$ i& L# y1 y$ Y1 Y; iReplyMessage 答复一个消息
7 ]. g. r# r! O* c5 kSendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口 - `' ^* O6 S8 [% j$ E5 R
SendMessageCallback 将一条消息发给窗口 ( m2 l; w4 w2 V$ h6 Q) F
SendMessageTimeout 向窗口发送一条消息 9 d- A5 k/ I* [9 i3 u
SendNotifyMessage 向窗口发送一条消息 , d5 c+ C7 k! l) F9 v& f( `6 j
3. API之文件处理函数 ) y B; G. I6 f1 s6 j
CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 & O) J, ]2 F9 t2 @
CompareFileTime 对比两个文件的时间 ) g$ n1 n9 E4 h4 k( c* ^+ f
CopyFile 复制文件
. T, [. I" w+ y! RCreateDirectory 创建一个新目录
8 K$ ~( q) F0 ]: SCreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台 + X& E* P4 c: v
CreateFileMapping 创建一个新的文件映射对象 ! Z8 {& _7 Y$ y& ^
DeleteFile 删除指定文件
- T$ v% `0 g6 [% z2 a7 K1 MDeviceIoControl 对设备执行指定的操作
g. `. B4 g: A$ W. U" d5 u/ FDosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值
! Q9 D( }' r1 Y4 H$ {8 {# W9 |FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值
- l8 s+ W% ~' v1 \. k2 L/ iFileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间
! R8 C! C5 L! J# \0 EFileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构 5 n; N& r5 t0 l7 a9 x/ g9 B
FindClose 关闭由FindFirstFile函数创建的一个搜索句柄 4 E7 F: m, o' w; G2 T
FindFirstFile 根据文件名查找文件
1 W; R# t8 ^& d1 m3 J; X2 f6 GFindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件 ) v# j5 a8 U$ ^0 s$ N- E% m0 D5 B3 t
FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区
) p/ p+ r/ F4 E+ |$ q ]: EFlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘 6 J6 u0 i/ a3 y8 F \
GetBinaryType 判断文件是否可以执行 ( | B) a1 B( O8 L$ i% t
GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数 : B! ~1 Y. ]% i5 j$ P5 n" B2 T4 H0 r) L
GetCurrentDirectory 在一个缓冲区中装载当前目录 0 a$ }! |$ H6 b9 A
DWORD GetCurrentDirectory(
. x9 u6 d) Y e9 C$ A. {; e DWORD nBufferLength, //缓冲区大小
: R3 e: w- ^8 m/ a! B" P( j* r LPSTR lpBuffer //缓冲区的首地址
7 q, R, H8 S4 g );7 I4 Z, E3 W3 c, d0 Z+ {2 `' {
GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量 ' `% f8 U6 ?2 F N% M
GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息 H$ v' x* _3 R) J
GetDriveType 判断一个磁盘驱动器的类型
. {4 P$ X1 [6 qGetExpandedName 取得一个压缩文件的全名 3 p* P/ K& G( E$ \% W9 a# C
GetFileAttributes 判断指定文件的属性 7 [! E% _$ X! M
GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制
9 b, S# e$ S3 S: B5 n$ tGetFileSize 判断文件长度
1 ]& x+ u5 b0 E; zGetFileTime 取得指定文件的时间信息 & ^' v: \$ r3 n
GetFileType 在给出文件句柄的前提下,判断文件类型 . m/ j* A( z5 V0 ^( n5 k4 |
GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息
8 {# k W/ X9 D9 h$ UGetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区 ; S- E1 `2 J/ z& ~9 `2 B, b' B
GetFullPathName 获取指定文件的完整路径名 7 i, C9 ~* U0 \5 P% O
GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母
: O8 c: m- Q2 r2 f& Y) CGetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径 2 Q- o m' h. h9 A6 r
GetOverlappedResult 判断一个重叠操作当前的状态 7 z& N. \9 o; c: ^: y/ U
GetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值 0 k; K) {/ ?- N! D( I
GetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表
0 q' G$ m# T* _2 ^1 \4 ~. c7 YGetPrivateProfileString 为初始化文件中指定的条目取得字串
; f# i" u: @5 k9 JGetProfileInt 取得win.ini初始化文件中指定条目的一个整数值
7 _, v5 t: V, T- r9 W. e" ZGetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表 1 Y/ Y( O# L8 M% n [( s3 ^0 ? ^
GetProfileString 为win.ini初始化文件中指定的条目取得字串
) f0 j$ n; T5 b9 U4 C5 {* B: MGetShortPathName 获取指定文件的短路径名 ! ^8 r; S7 ?) t$ u
GetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名
$ B3 C2 [$ t! f/ yGetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用
4 O b- d* n8 d1 A* DGetTempPath 获取为临时文件指定的路径
+ U) y9 K. m6 n" W5 X. u, o, EGetVolumeInformation 获取与一个磁盘卷有关的信息
" v. H M& u& |9 S1 M: f% aGetWindowsDirectory 获取Windows目录的完整路径名
. b2 \+ d2 w% T0 hhread 参考lread
) y& B% A4 Z# j/ A Z2 F. `1 Mhwrite 参考lwrite函数 2 |# ]! n+ V7 ?4 V: a8 z1 n' J! J* h
lclose 关闭指定的文件
# ` R* D) z' m* k( [lcreat 创建一个文件
" U6 c+ y. g. M6 z8 D$ V4 k$ allseek 设置文件中进行读写的当前位置
2 U. v+ g T0 K0 } b5 ?9 Z/ ]LockFile 锁定文件的某一部分,使其不与其他应用程序共享
5 ?4 J! C+ b& |, x0 R$ p4 i& p( k4 BLockFileEx 与LockFile相似,只是它提供了更多的功能 , K" R* ]# j. z. W3 U
lopen 以二进制模式打开指定的文件 1 f' m9 q) `% |: o- i5 q
lread 将文件中的数据读入内存缓冲区 9 r9 a$ v2 ?* O3 v
lwrite 将数据从内存缓冲区写入一个文件 ! A* o/ h7 f0 I8 {- P
LZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件 4 C- o+ q" p' m5 L; W0 S+ c
LZCopy 复制一个文件 : ^$ v% L8 D! `6 q6 N$ u! l
LZInit 这个函数用于初始化内部缓冲区 : ^) U6 Z) b8 [/ |# M; `3 @
LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件 " d) d3 f1 Y+ o2 m3 h9 z \- L
LZRead 将数据从文件读入内存缓冲区
9 [/ Z8 G# b3 v7 J. |" G) ?LZSeek 设置一个文件中进行读写的当前位置 + G+ u1 V, f4 b' D3 s
MapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间 ; l0 Z( _2 P: S* {( C
MoveFile 移动文件
# ?5 T( T( n0 P: A G; K3 vOpenFile 这个函数能执行大量不同的文件操作
. Q" S, i7 r ?( ]OpenFileMapping 打开一个现成的文件映射对象
9 f; L; L; \6 l4 T. ]3 ]QueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况 % e6 R' X& S' Y2 c
ReadFile 从文件中读出数据 & e. H, D H6 v7 a3 V" s
ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调
, F2 o3 x+ I& lRegCloseKey 关闭系统注册表中的一个项(或键)
k. [4 O- F. V$ g, zRegConnectRegistry 访问远程系统的部分注册表
$ V1 J) e* y4 a0 [, n* G' J" MRegCreateKey 在指定的项下创建或打开一个项 ( ~' y3 ~7 `4 t- h- S3 H- k! r
RegCreateKeyEx 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数 ' a/ B s P+ I8 e" g1 n
RegDeleteKey 删除现有项下方一个指定的子项
9 t( ~" `; l5 X% L3 |( v; [RegDeleteValue 删除指定项下方的一个值 3 r* V7 A) @2 c2 E
RegEnumKey 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx
2 H& Y/ u6 B' `7 n9 s* @, JRegEnumKeyEx 枚举指定项下方的子项
$ J, l& l! J9 {( R+ g7 `RegEnumValue 枚举指定项的值
& N0 T$ F( z9 ?RegFlushKey 将对项和它的子项作出的改动实际写入磁盘 6 D: M p& T9 |* e
RegGetKeySecurity 获取与一个注册表项有关的安全信息 * p. G9 {; {# S* W# Q
RegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息
% k3 O! Z! X) v g- R4 fRegNotifyChangeKeyValue 注册表项或它的任何一个子项发生变化时,用这个函数提供一种通知机制
+ u4 E. w! g$ e6 lRegOpenKey 打开一个现有的注册表项
p* j! N% F* x0 _RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数 9 x: A6 n5 U) b6 x6 q# g( E' u( `
RegQueryInfoKey 获取与一个项有关的信息
8 ~7 j7 K# C+ {RegQueryValue 取得指定项或子项的默认(未命名)值 8 T0 v) E; N' P5 P% ~% j7 p& v
RegQueryValueEx 获取一个项的设置值 2 H$ I( G8 g' p6 e" K8 j; w
RegReplaceKey 用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息 ) ~( @. P" U" _5 `- g: b
RegRestoreKey 从一个磁盘文件恢复注册表信息
$ ?7 K0 t' L0 cRegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件 / B2 N3 T$ W- D; C8 E( O: X
RegSetKeySecurity 设置指定项的安全特性
+ @, T* z2 z1 v3 ORegSetValue 设置指定项或子项的默认值 7 e, ]7 _; P- A& G/ K0 C8 `" M
RegSetValueEx 设置指定项的值 * X7 @8 E% E( O6 [7 d# F/ ~7 v
RegUnLoadKey 卸载指定的项以及它的所有子项
* P* s, ]0 V7 A6 C- a% g4 j5 V( sRemoveDirectory 删除指定目录 / U. ^! N5 j/ I
SearchPath 查找指定文件 # _9 ?0 d9 S" X1 h, N' g! N
SetCurrentDirectory 设置当前目录
7 q P A8 s4 {3 T& xSetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾 - o: Z$ Z7 P# L: d& f: k
SetFileAttributes 设置文件属性
5 Y x# x& \" N5 N; `$ gSetFilePointer 在一个文件中设置当前的读写位置
; |7 ?& @, L7 }0 V( r$ vSetFileTime 设置文件的创建、访问及上次修改时间 4 o Q6 U6 k- S3 J+ P
SetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果 6 `" @/ T6 r, `& D% r. l
SetVolumeLabel 设置一个磁盘的卷标(Label) 6 d+ f3 l/ B% e, K! y
SystemTimeToFileTime 根据一个FILETIME结构的内容,载入一个SYSTEMTIME结构
! x7 J9 F* a$ z) v0 iUnlockFile 解除对一个文件的锁定 ( C) X4 i2 C) k
UnlockFileEx 解除对一个文件的锁定
8 @7 h- H. l1 nUnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射 8 P% f% y9 J y: o- x
VerFindFile 用这个函数决定一个文件应安装到哪里 - e7 r/ W9 V) p/ J# X! I
VerInstallFile 用这个函数安装一个文件 . ~4 a1 m2 e0 L% H
VerLanguageName 这个函数能根据16位语言代码获取一种语言的名称 9 Z+ ?9 \; |+ A w( O9 S+ D( L0 l
VerQueryValue 这个函数用于从版本资源中获取信息
5 X- P o% D) u% g9 F7 u( k+ O6 `3 xWriteFile 将数据写入一个文件
6 E' u# K) v0 ?; k9 `! k0 ]WriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调 4 ^2 ]" W, _+ i+ _' i9 Y& C! Y. b
WritePrivateProfileSection 为一个初始化文件(.ini)中指定的小节设置所有项名和值
. x$ D* n ]8 A7 ?WritePrivateProfileString 在初始化文件指定小节内设置一个字串 2 `% l2 } h# Z1 T/ W
WriteProfileSection 为Win.ini初始化文件中一个指定的小节设置所有项名和值 ( {$ A+ P7 ^& @6 T+ Q' |, E
WriteProfileString 在Win.ini初始化文件指定小节内设置一个字串 & l! J8 M3 {- w& L% Z* x% G% U
4. API之打印函数
9 g2 G1 S2 B2 J3 k8 Y7 G; _AbortDoc 取消一份文档的打印 # @3 T9 a# Z/ Z$ a
AbortPrinter 删除与一台打印机关联在一起的缓冲文件 % z$ N, W0 p9 K7 H
AddForm 为打印机的表单列表添加一个新表单 6 d' E2 f# J6 B# c' I; K
AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号
# Q7 K' ^- {7 p4 s( UAddMonitor 为系统添加一个打印机监视器
2 k* E( v( z& @2 h zAddPort 启动"添加端口"对话框,允许用户在系统可用端口列表中加入一个新端口 6 J9 E# I5 x. h5 D, t
AddPrinter 在系统中添加一台新打印机
4 f+ |& J- @- ^# FAddPrinterConnection 连接指定的打印机
# B, N9 f& X7 ^% Q* }AddPrinterDriver 为指定的系统添加一个打印驱动程序
3 A9 c5 i& N2 M# K+ V3 ]7 }# Z# `6 ~AddPrintProcessor 为指定的系统添加一个打印处理器
% ?. c% D% N' _( R4 n0 KAddPrintProvidor 为系统添加一个打印供应商 8 Q% d9 d/ c0 e( B3 d- I5 [& j3 |4 s
AdvancedDocumentProperties 启动打印机文档设置对话框
- H5 M- t `0 [) d9 S5 PClosePrinter 关闭一个打开的打印机对象
" d6 t& G9 n! w8 kConfigurePort 针对指定的端口,启动一个端口配置对话框 & W# d" N" L2 Q7 G$ f
ConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 : g( @: D! |- ?0 ]% @3 g9 n
DeleteForm 从打印机可用表单列表中删除一个表单 + O* A. A8 `, A$ s
DeleteMonitor 删除指定的打印监视器
) L% n9 n8 a" h& U- \DeletePort 启动"删除端口"对话框,允许用户从当前系统删除一个端口 ! }# n3 e0 [4 D$ A) C% `$ o
DeletePrinter 将指定的打印机标志为从系统中删除
" y3 m4 c5 ] H0 i( U' w8 [DeletePrinterConnection 删除与指定打印机的连接
2 ^7 j0 E& P# \5 b% @) p8 u0 ODeletePrinterDriver 从系统删除一个打印机驱动程序 4 ~( w: q' r j2 y& I; M1 w5 }! h: W4 A
DeletePrintProcessor 从指定系统删除一个打印处理器
/ K; v3 Y) l) ?2 l3 H8 F* vDeletePrintProvidor 从系统中删除一个打印供应商 4 V* w8 q# m- [3 n* l' N
DeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 # P3 O: W& [+ q
DocumentProperties 打印机配置控制函数
7 K5 X7 p d. ` a$ T% X7 p' nEndDocAPI 结束一个成功的打印作业 , S2 H% t) I E$ \
EndDocPrinter 在后台打印程序的级别指定一个文档的结束
& E/ m3 n4 J+ [- l' l* X3 `EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页
( N# y! p0 V8 pEndPagePrinter 指定一个页在打印作业中的结尾 ; B4 A! ^& x1 b8 e
EnumForms 枚举一台打印机可用的表单
/ s( w' Z: e' @9 B& y \4 SEnumJobs 枚举打印队列中的作业
) B: {/ @. [' N! J. Y$ v% z! XEnumMonitors 枚举可用的打印监视器
& u3 {) u& \- H% |' NEnumPorts 枚举一个系统可用的端口 2 U8 q0 G' m' X0 ~1 p' ^- H6 L5 I4 p
EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 3 s( V6 C$ _# {% C5 l- N
EnumPrinters 枚举系统中安装的打印机
/ a! ~0 t2 H1 cEnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型
! C9 Z5 R. C: Z" C, j" F# [$ VEnumPrintProcessors 枚举系统中可用的打印处理器 6 ~) W) D, z1 H' S: g7 T
Escape 设备控制函数
- s) \+ j' J0 T3 U: ^/ yFindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象
, {& M0 k1 C- s( [3 ?' ]FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化
& k2 V; q- Z' V* y+ F1 B; E3 A! GFindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 0 Z9 s L0 |: T6 E
FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 7 B$ Z; \# z8 i" e* g4 C3 Z! V
GetForm 取得与指定表单有关的信息 - G+ T$ F7 s2 {' n3 j
GetJob 获取与指定作业有关的信息 ' ?& Y! d0 U" y' F; F7 ^; w
GetPrinter 取得与指定打印机有关的信息 # B; V4 e2 ^3 D0 u4 o$ }
GetPrinterData 为打印机设置注册表配置信息
k! z7 Z! Z4 E; m7 yGetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 ( M& N5 n" b$ n' P5 B6 z. c& f3 G/ I4 a
GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 : A F- V2 V0 J
GetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录
$ Y1 @4 u! c1 T7 G/ F. ROpenPrinter 打开指定的打印机,并获取打印机的句柄 0 a* h. V. _* D- ` r5 k8 W
PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 : S- s1 S1 n: X7 j$ [. a
PrinterProperties 启动打印机属性对话框,以便对打印机进行配置 ( \# ?/ c8 s" _& H
ReadPrinter 从打印机读入数据
' D+ S8 r5 @4 t* ZResetDC 重设一个设备场景 ! |& f2 i3 q) y; [0 j
ResetPrinter 改变指定打印机的默认数据类型及文档设置
' F7 ^4 k8 o8 w7 EScheduleJob 提交一个要打印的作业 ' v9 N: q, h6 d% r' H! `" t6 \3 r; ^
SetAbortProc 为Windows指定取消函数的地址 $ C s3 U `3 i% M
SetForm 为指定的表单设置信息 8 { _6 z0 I1 e& A
SetJob 对一个打印作业的状态进行控制 / _& K/ }' V3 f* `
SetPrinter 对一台打印机的状态进行控制
7 C) f3 S( ]6 \' b' h0 GSetPrinterData 设置打印机的注册表配置信息 4 G: Z+ z# ]0 ~" ]8 l5 T
StartDoc 开始一个打印作业 ! J9 n, x9 d, v l% H! r2 I
StartDocPrinter 在后台打印的级别启动一个新文档
) Z: r# f9 C/ R S% pStartPage 打印一个新页前要先调用这个函数
6 M2 V* }& V# z5 a" yStartPagePrinter 在打印作业中指定一个新页的开始
/ O$ Z& r& }/ ^4 u& B1 JWritePrinter 将发送目录中的数据写入打印机
* G' R v" f5 V+ S- ^4 f. m5. API之文本和字体函数
) @2 i% Q5 R, IAddFontResource 在Windows系统中添加一种字体资源 8 g+ @/ g& T5 h9 a
CreateFont 用指定的属性创建一种逻辑字体
3 w3 o5 b! I& T+ x6 NCreateFontIndirect 用指定的属性创建一种逻辑字体 0 x# U" F; \/ p8 z" f
CreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统
7 V+ _* ^* Z; F! R1 p! WDrawText 将文本描绘到指定的矩形中
* Z4 O8 b0 f6 b( x6 QDrawTextEx 与DrawText相似,只是加入了更多的功能 , l- A5 Z7 [/ ~2 G7 `+ A
EnumFontFamilies 列举指定设备可用的字体 & \. q% O L& @1 _# G6 S2 C6 P- k
EnumFontFamiliesEx 列举指定设备可用的字体
( b7 f- Z, G7 n4 k' K0 q# L; [EnumFonts 列举指定设备可用的字体 7 D" v5 g) s6 |) }8 }
ExtTextOut 经过扩展的文本描绘函数。也请参考SetTextAlign函数 " g7 K& T3 G% d P6 _
GetAspectRatioFilterEx 用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小
& [/ i0 }/ N$ b7 K: ?5 b! l, W" lGetCharABCWidths 判断TureType字体中一个或多个字符的A-B-C大小
5 d7 v$ S3 e7 \* oGetCharABCWidthsFloat 查询一种字体中一个或多个字符的A-B-C尺寸
4 \* s g; L$ X( W$ Y# @2 d3 o; S: pGetCharacterPlacement 该函数用于了解如何用一个给定的字符显示一个字串
! X& C0 b! \, G/ J" Z+ V8 m: bGetCharWidth 调查字体中一个或多个字符的宽度
* c! i) ]8 ^( D& \5 z& Y- Q! kGetFontData 接收一种可缩放字体文件的数据
- F# L2 {9 F( Y" FGetFontLanguageInfo 返回目前选入指定设备场景中的字体的信息 8 @$ F9 W: n6 ]) d# v3 P3 {4 G
GetGlyphOutline 取得TureType字体中构成一个字符的曲线信息
0 n6 _+ P. r# W* zGetKerningPairs 取得指定字体的字距信息
& a3 ^8 L( H$ v( \GetOutlineTextMetrics 接收与TureType字体内部特征有关的详细信息 0 h4 S% ^6 J5 T2 x% |
GetRasterizerCaps 了解系统是否有能力支持可缩放的字体
, D: g D A$ w6 ?& _* MGetTabbedTextExtent 判断一个字串占据的范围,同时考虑制表站扩充的因素
" Z6 e, U5 l v4 n* {/ EGetTextAlign 接收一个设备场景当前的文本对齐标志
8 O2 _, z# y) i5 C6 vGetTextCharacterExtra 判断额外字符间距的当前值 - p. \" ~% `+ K. @6 z* ^% {
GetTextCharset 接收当前选入指定设备场景的字体的字符集标识符
' {# n/ C- c+ e6 w6 N$ f1 dGetTextCharsetInfo 获取与当前选定字体的字符集有关的详细信息
$ E9 o" C) E# j7 pGetTextColor 判断当前字体颜色。通常也称为"前景色"
5 e3 [) F2 R P/ l0 QGetTextExtentExPoint 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息 ( j- ?: D+ F2 s9 F4 g9 D. d1 W N- u
GetTextExtentPoint 判断一个字串的大小(范围)
: E& N" @, ]5 ~6 l8 oGetTextFace 获取一种字体的字样名
! d! u V$ z" E$ T' ~GetTextMetrics 获取与选入一种设备场景的物理字体有关的信息
- S# c; q* a2 @" h% gGrayString 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态
+ Y. P6 c* M8 APolyTextOut 描绘一系列字串
' V) ^. z& r8 _RemoveFontResource 从Windows系统中删除一种字体资源
- Y6 u9 q1 c9 K% qSetMapperFlags Windows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体
$ H( e" X* t" QSetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置
0 M& n* `4 [# S9 MSetTextCharacterExtra 描绘文本的时候,指定要在字符间插入的额外间距
; I+ i5 P+ p8 F* j1 |* j- NSetTextColor 设置当前文本颜色。这种颜色也称为"前景色" % M$ j: H: u5 w
SetTextJustification 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理 3 H* |. g- t5 l: q( v
TabbedTextOut 支持制表站的一个文本描绘函数 0 }1 L! [8 I& V* C; s* v
TextOut 文本绘图函数 & E3 z' b/ G, @) J* _
WINGDIAPI BOOL WINAPI TextOut(9 e/ z! ]: s5 g+ R
HDC, //输出设备
' j% c& e/ V6 @) m$ o( o; Rint, //输出的横坐标1 Q m. {9 _4 w) B. k- |6 l! L; U$ a S
int, //纵坐标
x' C5 @6 \& m$ R/ bLPCSTR, //输出的文本str6 z+ Q+ l+ S+ C# s/ u
int); //文本的长度:lstrlen(str)) s# e1 j, o5 n+ O2 O: T
6. API之菜单函数
+ ~3 a V7 b+ Z U& i5 t! O# tAppendMenu 在指定的菜单里添加一个菜单项 % v% D: m8 Z1 S4 d# |, X+ P+ }% C
CheckMenuItem 复选或撤消复选指定的菜单条目
4 Y" I; N- C; g, [2 @! OCheckMenuRadioItem 指定一个菜单条目被复选成"单选"项目
2 w5 j; q/ T# m/ c; gCreateMenu 创建新菜单 ' ~( z: I5 @1 k* G
CreatePopupMenu 创建一个空的弹出式菜单
) {; I* B- Q' v6 f3 lDeleteMenu 删除指定的菜单条目
# W; M$ r$ z! O5 U, |" d) UDestroyMenu 删除指定的菜单 % @" r# I1 m7 S7 `! J$ N' s% l
DrawMenuBar 为指定的窗口重画菜单 / c& L3 e4 m( ~8 p& M& u- N- ^
EnableMenuItem 允许或禁止指定的菜单条目
7 j7 j- R1 l1 x% h* y$ U: H/ ?, i0 |7 PGetMenu 取得窗口中一个菜单的句柄
1 _1 }2 X6 l% m' _# Y- [GetMenuCheckMarkDimensions 返回一个菜单复选符的大小 ! H. M( Z& h/ n4 ?/ R w* G
GetMenuContextHelpId 取得一个菜单的帮助场景ID / i+ u# @- ]1 f4 |9 p$ p+ d- ]
GetMenuDefaultItem 判断菜单中的哪个条目是默认条目 0 N8 h5 Q9 k& _ H
GetMenuItemCount 返回菜单中条目(菜单项)的数量
. D1 l s7 f# V% ]9 JGetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID
# H! |7 A R5 V- h. XGetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息
. v. k j# s) y8 w2 x, oGetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息
( p, [- O6 B* M& j! V: d( }GetMenuState 取得与指定菜单条目状态有关的信息
* M( P+ K( E3 I! e9 XGetMenuString 取得指定菜单条目的字串 * z! a6 w2 x) v" {+ j) g
GetSubMenu 取得一个弹出式菜单的句柄,它位于菜单中指定的位置 0 ~! N, ?; D+ \6 k* I2 s
GetSystemMenu 取得指定窗口的系统菜单的句柄 4 e" x+ g4 K0 j5 K( z; O. }
HiliteMenuItem 控制顶级菜单条目的加亮显示状态 # u9 Q9 G1 N7 D& I
InsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动 0 |6 P0 Y q+ G1 R( a$ e
InsertMenuItem 插入一个新菜单条目 ! p) K3 ~% R+ i+ ?) T
IsMenu 判断指定的句柄是否为一个菜单的句柄 2 U. |$ D- m6 ^5 \) `
LoadMenu 从指定的模块或应用程序实例中载入一个菜单 Q2 N' g' Q) Y( X/ o" v7 G4 j
LoadMenuIndirect 载入一个菜单 : }1 a1 N+ } H% A/ f6 L5 j# m
MenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点
3 x3 M7 a; B5 u0 {3 eModifyMenu 改变菜单条目
, m, D& q% g$ a! Z7 W! pRemoveMenu 删除指定的菜单条目
: P+ G7 b3 l3 JSetMenu 设置窗口菜单
4 Y( m: @& H. Y! W/ U) R# ~SetMenuContextHelpId 设置一个菜单的帮助场景ID
* _. v1 {: m% R2 w5 S" ySetMenuDefaultItem 将一个菜单条目设为默认条目
Z9 X4 O( v7 t/ R7 n) tSetMenuItemBitmaps 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√) 1 C2 t: m$ z2 k( v/ [! H* _0 H
SetMenuItemInfo 为一个菜单条目设置指定的信息
( o2 t6 }! r1 l3 B$ q7 mTrackPopupMenu 在屏幕的任意地方显示一个弹出式菜单 * ]. @7 F2 z9 X7 x3 |9 v0 M6 j
TrackPopupMenuEx 与TrackPopupMenu相似,只是它提供了额外的功能 ' i8 b7 O/ Q1 z
7. API之位图、图标和光栅运算函数
1 q: V P# ?$ ABitBlt 将一幅位图从一个设备场景复制到另一个
, f/ p4 ?) w c! o2 t WINGDIAPI BOOL WINAPI BitBlt(
1 u! W- F' W/ \ b/ pHDC, //目标HDC% @( m: U" v! u1 X
int, //X1) ~* i. J& X/ A, c- _/ F
int, //Y1
6 R4 l8 C7 W$ [% [: q* q/ jint, //width
& S5 p; } c. U: R* uint, //height' `0 Z! ~- ]3 J
HDC, //源HDC/ {+ W2 |* n& t2 r4 E; ]
int, //右边的距离
7 o$ @$ w( N" D: d3 Hint, //??1 a1 |4 q2 U7 C; s6 `
DWORD); //拷贝方式:SRCCOPY|SRCPAINT|SRCAND|SRCINVERT|RCERASE|NOTSRCCOPY|NOTSRCERASE|MERGECOPY|MERGEPAINT|8 d; \1 k5 y+ x, n$ @
PATCOPY|PATPAINT|PATINVERT|DSTINVERT|BLACKNESS|WHITENESS
, }0 U9 T3 @: Y, t% x; \CopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序 9 j5 L! Q2 X2 y/ X/ d* f- {$ e$ e
CopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作 , ]6 Q. S+ ^; @7 A8 |
CreateBitmap 按照规定的格式创建一幅与设备有关位图
3 Z& r9 O( U4 Q/ ~/ o7 CCreateBitmapIndirect 创建一幅与设备有关位图 # K( @1 w8 z: P2 K+ g7 i) U
CreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容
b0 W5 `- G% @" {& vCreateCursor 创建一个鼠标指针 : w. y5 u$ C2 u# t' R6 p! c: U
CreateDIBitmap 根据一幅与设备无关的位图创建一幅与设备有关的位图 5 S! L5 H& J. ^
CreateDIBSection 创建一个DIBSection
/ m( S2 w7 c# E% t' Y# X" ICreateIcon 创建一个图标
' D" X/ i& r! O1 z, ~% ]0 x' [/ ZCreateIconIndirect 创建一个图标
R* j& ^/ P0 [/ j2 O! GDestroyCursor 清除指定的鼠标指针,并释放它占用的所有系统资源 $ A M* a) d- D# j c8 g3 U
DestroyIcon 清除图标
- S+ A! N7 w) |1 T) n- c2 jDrawIcon 在指定的位置画一个图标 $ F" l- q- C1 s# v/ ?3 |
DrawIconEx 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能
7 a, H/ x& O9 v+ I6 d3 QExtractAssociatedIcon 判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之
7 D% P7 c' V* dExtractIcon 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来 6 p2 b) D( C( j# i8 Y9 o
GetBitmapBits 将来自位图的二进制位复制到一个缓冲区
; N- x& J( f2 F& J& oGetBitmapDimensionEx 取得一幅位图的宽度和高度
$ V; y' j- ]2 ^! N3 \: D6 nGetDIBColorTable 从选入设备场景的DIBSection中取得颜色表信息
# `2 |: Z6 D; |+ d* gGetDIBits 将来自一幅位图的二进制位复制到一幅与设备无关的位图里 + q2 e/ l" T1 f, r4 u' ], y; K
GetIconInfo 取得与图标有关的信息
( ~; J# ~/ ~5 B0 D/ C/ j1 QGetStretchBltMode 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式 4 U4 m2 s! b \ a% O. r$ m! o
LoadBitmap 从指定的模块或应用程序实例中载入一幅位图 + U: T* G# }; b2 O: _6 T8 G
LoadCursor 从指定的模块或应用程序实例中载入一个鼠标指针
+ p& ^6 d" `5 K' Y/ MLoadCursorFromFile 在一个指针文件或一个动画指针文件的基础上创建一个指针 1 u" s/ u% m# b
LoadIcon 从指定的模块或应用程序实例中载入一个图标
' J/ `# C3 D; y9 D6 u- @LoadImage 载入一个位图、图标或指针
B" K: l# {- H9 a8 \HANDLE LoadImageA(& \% o# L% | T
HINSTANCE, //当前实例句柄:AfxGetInstanceHandle(), W9 @9 \' H& l( M9 Q
LPCSTR, //资源所在的目录:c:\help.bmp( h" ^0 b+ C8 j3 T* J) A% B
UINT, //类型:IMAGE_BITMAP|IMAGE_ICON|IMAGE_CURSOR|IMAGE_ENHMETAFILE
; i3 h/ s* h; s k+ `. ]4 f' ] int, //5 F& @' y8 m X9 |3 x, {& m
int, //
; s6 |1 @- ~1 m RUINT); //风格:LR_DEFAULTCOLOR|LR_MONOCHROME|LR_COLOR|LR_COPYRETURNORG|0 `$ x! a1 {. t& d6 e2 L
R_COPYDELETEORG|LR_LOADFROMFILE|LR_LOADTRANSPARENT|LR_DEFAULTSIZE|LR_VGACOLOR| Y8 R. Y. X& R* g- r+ I' S6 ^' u
LR_LOADMAP3DCOLORS|LR_CREATEDIBSECTION|LR_COPYFROMRESOURCE|LR_SHARED
( W' M6 Q3 s& }0 v2 DMaskBlt 执行复杂的图象传输,同时进行掩模(MASK)处理 . m, A1 a% S- F# y ?# V9 U* c
PatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景
, K) L* I- }" WPlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理
1 T: {* C, L: A/ d4 j4 |& gSetBitmapBits 将来自缓冲区的二进制位复制到一幅位图
3 V; K# o! M: @SetBitmapDimensionEx 设置一幅位图的宽度。以一毫米的十分之一为单位
" `+ H* \- R: t* b8 CSetDIBColorTable 设置选入设备场景的一个DIBSection的颜色表信息 ! t: F" n% H5 d( K- M( K: f0 H! W9 c
SetDIBits 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里
( n1 y7 [3 f% { w7 L$ k% kSetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备
: K2 T7 R, S( Y e: CSetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式 + W$ ^3 d2 r2 Y A% x/ x
StretchBlt 将一幅位图从一个设备场景复制到另一个
6 \; o0 u% e, o+ }StretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景
A( t% h8 [$ y! B- Q8. API之绘图函数 % ]9 K5 z' t! r/ X% U5 J2 i
AbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作 + l- E9 q" l) Q3 y% b% b
AngleArc 用一个连接弧画一条线 6 c I) o- H' c- o: s" R# J# Y
Arc 画一个圆弧
$ e# {6 l+ K) i6 g* d+ N7 c4 `BeginPath 启动一个路径分支
& a, o5 ]7 Z9 @, c! O; kCancelDC 取消另一个线程里的长时间绘图操作 X# o+ |( b0 O0 o# \
Chord 画一个弦 + M0 S$ X9 s- E4 V$ d' A
CloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄 8 n7 Q* `) x5 i! y* A
CloseFigure 描绘到一个路径时,关闭当前打开的图形
. i; b; u" w- O9 T/ j: T' oCloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄
2 ?9 E8 B3 [+ X0 l1 {CopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝)
) A- d: T/ k+ B% A" ]0 rCopyMetaFile 制作指定(标准)图元文件的一个副本
4 p" j2 k3 u. v) [/ a5 D$ QCreateBrushIndirect 在一个LOGBRUSH数据结构的基础上创建一个刷子
* d1 |) F9 L, l, b! G% G( y& RCreateDIBPatternBrush 用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案)
; J: ` I% b& m7 v, [CreateEnhMetaFile 创建一个增强型的图元文件设备场景 ! u/ Z% z v% Y, a8 Z
CreateHatchBrush 创建带有阴影图案的一个刷子
) [8 x. _7 h3 q9 y8 dCreateMetaFile 创建一个图元文件设备场景
" z( D) G: E3 K4 K/ P8 L2 _- w" y" kCreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子 ) x3 O* B1 p3 e1 a5 U& z; t1 K+ V& g
CreatePen 用指定的样式、宽度和颜色创建一个画笔 9 Y( q3 N" E5 G& X# `
CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔 , z* H% Z2 f) C5 O9 d
CreateSolidBrush 用纯色创建一个刷子 # D, c# E! S& J. T d$ Y" m
DeleteEnhMetaFile 删除指定的增强型图元文件
9 ?! e3 J# D6 e" F! g. kDeleteMetaFile 删除指定的图元文件 # R Y0 B# R: B- N2 @9 i
WINGDIAPI BOOL WINAPI DeleteObject(HGDIOBJ) 删除GDI对象,对象使用的所有系统资源都会被释放
$ o5 r& U0 S- c' z% T' v; x& q/ cDrawEdge 用指定的样式描绘一个矩形的边框 . f2 x! x M6 [% Y, V1 Z
DrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序 & Z% y7 X2 y5 p
DrawFocusRect 画一个焦点矩形 3 j7 E$ z( q: v
DrawFrameControl 描绘一个标准控件
& y- k9 Y) g7 A9 ~5 {DrawState 为一幅图象或绘图操作应用各式各样的效果 1 I& y# L% q9 ?$ h _# e1 _
Ellipse 描绘一个椭圆,由指定的矩形围绕
7 C3 i4 o9 K: j, J# pEndPath 停止定义一个路径
4 E8 g( k# M! r6 ?4 S+ P: Q9 PEnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录
, Z, p6 v3 M& N5 |/ v$ Z6 G6 uEnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录 0 d4 \& S T" Q, B# S/ H
EnumObjects 枚举可随同指定设备场景使用的画笔和刷子
( b& b, v2 V( k" e7 q9 }$ MExtCreatePen 创建一个扩展画笔(装饰或几何)
! b' f4 R- k W' q" {ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域 6 S. o! L+ ^ ^
FillPath 关闭路径中任何打开的图形,并用当前刷子填充
- h9 W) h, Y9 DFillRect 用指定的刷子填充一个矩形
9 i) w1 y' ]5 X8 R% aFlattenPath 将一个路径中的所有曲线都转换成线段
3 u: y j. d7 CFloodFill 用当前选定的刷子在指定的设备场景中填充一个区域 8 [2 c# S+ @7 R R) e: u, M+ t
FrameRect 用指定的刷子围绕一个矩形画一个边框 / x5 z8 A3 t7 M
GdiComment 为指定的增强型图元文件设备场景添加一条注释信息 ) t8 t' P; Z o* z
GdiFlush 执行任何未决的绘图操作 : T* G8 d0 x7 \9 F" s% h
GdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中
2 |. M; I q Q- h, P- t9 Q6 sGdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列
|- |' S7 v8 A7 H IGetArcDirection 画圆弧的时候,判断当前采用的绘图方向 ( L: h$ c* Q; G# i
GetBkColor 取得指定设备场景当前的背景颜色
t9 B& b7 ^: c; Q" @* w8 X% K+ qGetBkMode 针对指定的设备场景,取得当前的背景填充模式 / z4 [2 f& o0 {) T; B% S& K! |
GetBrushOrgEx 判断指定设备场景中当前选定刷子起点 . v/ h. U$ }) k# {8 t$ e" z
GetCurrentObject 获得指定类型的当前选定对象 ( @+ p$ P" y1 Y z" N/ n0 z0 n
GetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置 1 l1 p7 I) V/ T2 ?
GetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄
4 ]) N G/ k2 ?, Q! ]GetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里
: a& v; l/ e) K- LGetEnhMetaFileDescription 返回对一个增强型图元文件的说明 7 D0 Y! k7 f; V8 m& c' e
GetEnhMetaFileHeader 取得增强型图元文件的图元文件头
0 }, ?, o; a# q) ]GetEnhMetaFilePaletteEntries 取得增强型图元文件的全部或部分调色板 ( P8 h4 [; U; g U- P
GetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄
, V S, w& y. H8 v( cGetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区
. d% t. l/ C I7 e+ {GetMiterLimit 取得设备场景的斜率限制(Miter)设置
3 P) c- N# k2 rGetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色
- B, N. ]8 L1 q" T: G' |GetObjectAPI 取得对指定对象进行说明的一个结构
3 j- g! @# [8 _6 S* N' }0 g5 hGetObjectType 判断由指定句柄引用的GDI对象的类型
J* t3 {; ?$ a+ G2 iGetPath 取得对当前路径进行定义的一系列数据 " i( m% \& C+ k" y% V
GetPixel 在指定的设备场景中取得一个像素的RGB值 8 G* X, P2 |% v
GetPolyFillMode 针对指定的设备场景,获得多边形填充模式 $ `) }- d$ u! X& j- y: k
GetROP2 针对指定的设备场景,取得当前的绘图模式 8 h: B- e- M$ x" ^2 Q
GetStockObject 取得一个固有对象(Stock)
$ D. k5 c. O$ K! v1 P7 Z# L" sGetSysColorBrush 为任何一种标准系统颜色取得一个刷子 7 q( ^, N" r- J8 L
GetWinMetaFileBits 通过在一个缓冲区中填充用于标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件
$ ^; V9 d3 W# y4 R: XInvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形
& U* q& ?# F" p% JLineDDA 枚举指定线段中的所有点
5 q* o+ T$ k3 yLineTo 用当前画笔画一条线,从当前位置连到一个指定的点
" E# e3 q! l+ P$ I) z1 r) ~MoveToEx 为指定的设备场景指定一个新的当前画笔位置
4 ?9 q. y9 [" l! T: t1 XPaintDesk 在指定的设备场景中描绘桌面墙纸图案 ) S2 k" w ^# E: a% `/ z
PathToRegion 将当前选定的路径转换到一个区域里 & z" b, a9 M: r5 W* F
Pie 画一个饼图
. T: |/ p V) Z2 B8 t% ]PlayEnhMetaFile 在指定的设备场景中画一个增强型图元文件
* }3 R" N& P% G1 l IPlayEnhMetaFileRecord 回放单独一条增强型图元文件记录 1 p# |- k/ V# B8 T6 h% c" w; Z
PlayMetaFile 在指定的设备场景中回放一个图元文件
5 K. e1 }% x/ p% N, v* a8 V p, [- k4 PPlayMetaFileRecord 回放来自图元文件的单条记录
# c: c1 V* m5 n& U# H' nPolyBezier 描绘一条或多条贝塞尔(Bezier)曲线
4 |) w/ t# l: r% T% [/ rPolyDraw 描绘一条复杂的曲线,由线段及贝塞尔曲线组成
4 W9 r7 M, w; \# Z1 W! _1 i# KPolygon 描绘一个多边形
# S. H ^$ D: Y# T& iPolyline 用当前画笔描绘一系列线段 7 I# S8 d+ K* u" v2 H; [! b
PolyPolygon 用当前选定画笔描绘两个或多个多边形 / G$ n4 ?4 J# v- ^& b7 s
PolyPolyline 用当前选定画笔描绘两个或多个多边形
- z# O: t9 t! ?6 ~; G! ARectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充
: h" [0 q& ?+ q# B O t( N% h$ uRoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充 : }& b5 F. k( Z; K
SelectClipPath 将设备场景当前的路径合并到剪切区域里 ! b9 ^2 f( H5 k; S
SelectObject 为当前设备场景选择图形对象 2 M$ x/ _' l/ Y! h4 `8 Z+ ^
WINGDIAPI HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ);0 k) V3 ]+ X" s& z1 l# |
SetArcDirection 设置圆弧的描绘方向
5 L% A( v) m/ t9 c0 ASetBkColor 为指定的设备场景设置背景颜色
: n- _' r- i% x& ZSetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式
+ J9 u5 Y# M& |/ z) z9 j0 ESetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点
9 ]5 t+ k. w$ r# b- e$ W1 t' X" I4 KSetEnhMetaFileBits 用指定内存缓冲区内包含的数据创建一个增强型图元文件 5 t6 ?* V: Q/ c7 P: I
SetMetaFileBitsEx 用包含在指定内存缓冲区内的数据结构创建一个图元文件 9 V2 h5 A. Z" b2 R, c: o
SetMiterLimit 设置设备场景当前的斜率限制 4 h) K- j2 F- W
SetPixel 在指定的设备场景中设置一个像素的RGB值 , {4 J, J: Z( i- J
SetPixelV 在指定的设备场景中设置一个像素的RGB值 # A4 k- V g+ |9 W9 d0 c+ x
SetPolyFillMode 设置多边形的填充模式 & i" @* i9 \# Z% l# Z) Y# s, J
SetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致
& c: Z2 ~4 N1 j! n8 d2 fSetWinMetaFileBits 将一个标准Windows图元文件转换成增强型图元文件 $ y3 J: v+ }: k; q Z% ~
StrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域 7 A# W8 \" ~/ d2 i0 |+ p
StrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭
) Z* J. \' a9 Y& Y+ rUnrealizeObject 将一个刷子对象选入设备场景之前,如刷子的起点准备用SetBrushOrgEx修改,则必须先调用本函数
9 \4 ^; S( l4 g. z7 X9 XWidenPath 根据选定画笔的宽度,重新定义当前选定的路径 r. ?) p# r0 k* y, F4 I) H
9. API之设备场景函数
* x- h# L5 W$ Z7 _3 uCombineRgn 将两个区域组合为一个新区域 8 X8 m- S$ B# o% W
CombineTransform 驱动世界转换。它相当于依顺序进行两次转换 2 `+ |: R& z3 x/ {2 s! _1 h
CreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景
. g; [7 T& q+ m+ \- `" iCreateDC 为专门设备创建设备场景 - N* h' O: K$ P/ b
CreateEllipticRgn 创建一个椭圆
& h5 L \5 ^6 |) ~CreateEllipticRgnIndirect 创建一个内切于特定矩形的椭圆区域
# U! E+ `# I9 d5 `: s- v2 QCreateIC 为专用设备创建一个信息场景
3 O% S. ~+ h0 ]- W1 w6 t+ ~CreatePolygonRgn 创建一个由一系列点围成的区域 * k& v- [6 D( P# K4 T9 [1 U S
CreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的 5 p( O9 W0 p& {" d$ [1 Q
CreateRectRgn 创建一个矩形区域 * n* R% k" D! K# j, L+ A" K" G
CreateRectRgnIndirect 创建一个矩形区域
, n! Z4 ]5 S) D6 P eCreateRoundRectRgn 创建一个圆角矩形
% k* \0 r# c$ X/ V% Z4 nDeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源
2 K: [9 t3 s, M3 V3 \6 GDPtoLP 将点阵从设备坐标转换到专用设备场景逻辑坐标
$ U) r4 p8 j2 I! t+ AEqualRgn 确定两个区域是否相等 ( E1 {: [7 V# C) w7 }4 I
ExcludeClipRect 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图 & O- Z8 D* h" z' d! {; d
ExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域 ' ^) x( E/ J+ V3 w9 t! l, a0 n
ExtCreateRegion 根据世界转换修改区域 ' z x! k5 d- x0 N
ExtSelectClipRgn 将指定区域组合到设备场景的当前剪裁区 1 G: [( j" J g/ k
FillRgn 用指定刷子填充指定区域
+ R/ y& W) z: N% PFrameRgn 用指定刷子围绕指定区域画一个外框
]5 o% d6 U9 c2 RGetBoundsRect 获取指定设备场景的边界矩形 % E$ k/ ~" z6 l7 ^: z3 H9 U' E! N5 z
GetClipBox 获取完全包含指定设备场景剪裁区的最小矩形
( k) F& K! f" H- ~GetClipRgn 获取设备场景当前剪裁区
6 W/ ]% w4 a& s1 d6 P( `' }6 XGetDC 获取指定窗口的设备场景 5 u/ L6 ~" f$ q
GetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项
; b. U, z5 d8 `& MGetDCOrgEx 获取指定设备场景起点位置(以屏幕坐标表示)
. h6 i0 d# ~5 c: @( P: MGetDeviceCaps 根据指定设备场景代表的设备的功能返回信息 7 w$ ~6 A) l, N3 X
GetGraphicsMode 确定是否允许增强图形模式(世界转换)
/ p% E' k i0 C9 _ A" cGetMapMode 为特定设备场景调入映象模式
6 F7 ?" f" I. P' j) X. kGetRegionData 装入描述一个区域信息的RgnData结构或缓冲区
$ h1 ^: c% b# j3 C' V8 gGetRgnBox 获取完全包含指定区域的最小矩形
- S& t5 g+ f/ z4 P0 }, S. {GetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新
. s3 s( W$ O) QGetViewportExtEx 获取设备场景视口(viewport)范围
3 K( U7 e/ C$ Z: w4 g0 m/ DGetViewportOrgEx 获取设备场景视口起点 , O6 [8 f. D) v! N
GetWindowDC 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景 . y: T3 j. ]- e" D
GetWindowExtEx 获取指定设备场景的窗口范围
! q& }/ K1 Q7 N; v4 U, K/ ~# IGetWindowOrgEx 获取指定设备场景的逻辑窗口的起点 0 c' r' E" u6 q+ D/ n, p; i
GetWindowRgn 获取窗口区域 : p' L6 ^$ d' Y6 O0 r
GetWorldTransform 如果有世界转换,为设备场景获取当前世界转换
/ O( u$ N* g# `1 X2 g! o* ~IntersectClipRect 为指定设备定义一个新的剪裁区
P8 ] K2 _$ n7 K& HInvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画
! I9 L& {; A( B2 y/ AInvertRgn 通过颠倒每个像素值反转设备场景指定区域
8 D0 L/ h7 E! @! S) L+ s+ JLPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标
: x% z9 b% s* o, U& M- ]ModifyWorldTransform 根据指定的模式修改世界转换 + F+ M+ V% v# i8 ^
OffsetClipRgn 按指定量平移设备场景剪裁区 8 b. y8 _# {" Z) ^0 |
OffsetRgn 按指定偏移量平移指定区域 . Y$ ? @" G2 k
OffsetViewportOrgEx 平移设备场景视口区域 c" Z: p" a* L* O5 E
OffsetWindowOrgEx 平移指定设备场景窗口起点
. |% v5 |. M* kPaintRgn 用当前刷子背景色填充指定区域 * _$ e, u9 ?' s: `! @ D! v: x$ v' ^
PtInRegion 确定点是否在指定区域内
/ `' n% K5 ~% n0 a" B( bPtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内) % {) x7 u- _8 Z5 O! [+ a0 I/ s
RectInRegion 确定矩形是否有部分在指定区域内 3 r$ X3 A& z; V$ S8 Z- w! L/ s
RectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内) 4 V @; h$ [) g! W" i9 `: b% X
ReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景
5 X3 w1 K. l6 q/ p" n" S+ w% TRestoreDC 从设备场景堆栈恢复一个原先保存的设备场景 4 _3 D0 |& f& @
SaveDC 将指定设备场景状态保存到Windows设备场景堆栈 : C8 h& N4 S' z
ScaleViewportExtEx 缩放设备场景视口的范围 2 `1 w/ C2 [; u2 W/ N4 A
ScaleWindowExtEx 缩放指定设备场景窗口范围 ( s1 y. l+ H# f) D$ w! |5 ]3 c
ScrollDC 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形 + ?4 y* p' {" w" }, N: c% z! ^
SelectClipRgn 为指定设备场景选择新的剪裁区
5 Q3 x3 ]( _* T! P) c& a& {SetBoundsRect 设置指定设备场景的边界矩形
0 B! c" E: A+ h+ R( W+ _SetGraphicsMode 允许或禁止增强图形模式,以提供某些支持(包括世界转换)
- R6 U0 _2 }/ s6 I7 N q" m9 USetMapMode 设置指定设备场景的映射模式 1 b7 x: A* F5 ~4 d! E/ ~
SetRectRgn 设置区域为指定的矩形 " n( g3 g5 t# c' T4 M
SetViewportExtEx 设置设备场景视口范围 5 g3 c' s+ Z: }( U5 o4 t
SetViewportOrgEx 设置设备场景视口起点 ' O, B2 {8 D9 y$ w( [3 f
SetWindowExtEx 设置指定设备场景窗口范围 5 ?* k+ F8 Y8 z( U1 a* E
SetWindowOrgEx 设置指定设备场景窗口起点
2 E7 v: ?2 D, N6 \SetWindowRgn 设置窗口区域
2 h* X7 J0 R0 [) [: ~2 O( DSetWorldTransform 设置世界转换 , _, T- J8 Y' ~6 \
ValidateRgn 激活窗口中指定区域,把它从刷新区移走
" [& h+ N) E7 [: q Q, n# yWindowFromDC 取回与某一设备场景相关的窗口的句柄 + d% f* g5 A1 k+ O) p1 M* e
10. API之硬件与系统函数 4 r, V' Y4 o: r( q) s
ActivateKeyboardLayout 激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义
# }" z" {# i2 E Q3 `7 @Beep 用于生成简单的声音 ( l8 ~: p0 D# W ^
CharToOem 将一个字串从ANSI字符集转换到OEM字符集
( s9 q0 i5 x, w. G$ nClipCursor 将指针限制到指定区域 ( Z* _7 r$ m# U9 M) {* @9 z2 o
ConvertDefaultLocale 将一个特殊的地方标识符转换成真实的地方ID
9 l( \) D5 d" v" V8 j( F/ ?CreateCaret 根据指定的信息创建一个插入符(光标),并将它选定为指定窗口的默认插入符
U( T5 @5 P* lDestroyCaret 清除(破坏)一个插入符
y9 \* O4 A* E; ?% HEnumCalendarInfo 枚举在指定"地方"环境中可用的日历信息 6 k Q7 x$ @5 g4 ]. I1 K
EnumDateFormats 列举指定的"当地"设置中可用的长、短日期格式 : D' Q5 I5 x2 c
EnumSystemCodePages 枚举系统中已安装或支持的代码页 c3 c$ e G N4 a' X. x5 H
EnumSystemLocales 枚举系统已经安装或提供支持的"地方"设置 * j% N/ {8 ~2 S! z- D2 v( d5 |) ~
EnumTimeFormats 枚举一个指定的地方适用的时间格式 1 w, E8 X/ c- i& i+ L: u
ExitWindowsEx 退出windows,并用特定的选项重新启动 $ [# A% }' t( E. Y
WINUSERAPI BOOL WINAPI ExitWindowsEx(7 [9 H5 I" e$ i& G. S
UINT uFlags, //EWX_LOGOFF|EWX_REBOOT|EWX_FORCE|EWX_POWEROFF|EWX_FORCEIFHUNG2 B# t$ G4 [7 q8 b3 M6 B7 ]3 y+ u- a% D
DWORD dwReserved); //08 _* C$ s& u7 z1 V) r }; B
ExpandEnvironmentStrings 扩充环境字串
; V+ l3 m6 y: u$ k) K+ DFreeEnvironmentStrings 翻译指定的环境字串块
3 G) Q) p% @' o0 w( \( X2 g* TGetACP 判断目前正在生效的ANSI代码页 # P0 i( y: a; w0 c* y+ e4 ~* L
GetAsyncKeyState 判断函数调用时指定虚拟键的状态 - Z0 v- ~& \8 q' c( b. b) w S* [
GetCaretBlinkTime 判断插入符光标的闪烁频率
% Y4 P6 Z* F* |1 H! Y7 GGetCaretPos 判断插入符的当前位置 * o# [3 e) J' n* {
GetClipCursor 取得一个矩形,用于描述目前为鼠标指针规定的剪切区域 4 t+ F' B9 O2 k( m/ j
GetCommandLine 获得指向当前命令行缓冲区的一个指针
4 ?) m( W r! L- o) t, g' vGetComputerName 取得这台计算机的名称
1 Z& w1 ` x% R. I5 j9 D AGetCPInfo 取得与指定代码页有关的信息
0 d$ S- K. l! J/ jGetCurrencyFormat 针对指定的"地方"设置,根据货币格式格式化一个数字
9 a1 L9 \6 T+ CGetCursor 获取目前选择的鼠标指针的句柄 % F; d6 o; A z A. @# j
GetCursorPos 获取鼠标指针的当前位置 5 R/ K/ J: V. X+ ^, S5 V' w1 R
GetDateFormat 针对指定的"当地"格式,对一个系统日期进行格式化
( H/ {5 B) ]1 n8 F: k4 L" RGetDoubleClickTime 判断连续两次鼠标单击之间会被处理成双击事件的间隔时间 . F2 u9 _3 }4 [
GetEnvironmentStrings 为包含了当前环境字串设置的一个内存块分配和返回一个句柄
0 i. h: I0 c$ @& O o4 GGetEnvironmentVariable 取得一个环境变量的值
* I7 l4 M8 P* k- L$ nGetInputState 判断是否存在任何待决(等待处理)的鼠标或键盘事件 Q% r. |6 t1 J# J8 R2 h9 \: _
GetKBCodePage 由GetOEMCP取代,两者功能完全相同
# }& I4 _$ a. m4 \GetKeyboardLayout 取得一个句柄,描述指定应用程序的键盘布局
' ?5 x. h) `5 u$ @! M' V, l3 W3 NGetKeyboardLayoutList 获得系统适用的所有键盘布局的一个列表 @( K6 L* G9 s- j! N3 I
GetKeyboardLayoutName 取得当前活动键盘布局的名称 ; u# n" ^/ B- P$ v4 m9 q
GetKeyboardState 取得键盘上每个虚拟键当前的状态
# Z& r2 w' Z! p& L( Q! a8 MGetKeyboardType 了解与正在使用的键盘有关的信息 8 Q" `# c. [# g/ g& _
GetKeyNameText 在给出扫描码的前提下,判断键名 * I& ~* d$ s+ o& w D$ O$ Y
GetKeyState 针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态 * z$ R: h i* c2 M# c
GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息 ( O( I8 d6 ~4 D, F, n' ]. O/ I
GetLocaleInfo 取得与指定"地方"有关的信息 * H( f3 t. w0 e8 a) o/ Q, U, T4 @
GetLocalTime 取得本地日期和时间 5 J: [- p- C/ @) T# S# p. m& c
GetNumberFormat 针对指定的"地方",按特定的格式格式化一个数字 . N( X, ?( H* f+ h4 p2 h) H* z( I
GetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页 ! ~! H; j J& C w& B/ M, `
GetQueueStatus 判断应用程序消息队列中待决(等待处理)的消息类型 3 H- Q4 }4 t9 j" t4 e% r1 X
GetSysColor 判断指定windows显示对象的颜色
2 [# V9 N$ D2 ]5 f7 Q' O8 wGetSystemDefaultLangID 取得系统的默认语言ID + E5 ^' f, [6 C+ X
GetSystemDefaultLCID 取得当前的默认系统"地方"
2 M _" {* w& CGetSystemInfo 取得与底层硬件平台有关的信息
9 z$ `, I% c; U3 n+ [) nGetSystemMetrics 返回与windows环境有关的信息
! M0 h% f2 C: ?8 o+ }3 \GetSystemPowerStatus 获得与当前系统电源状态有关的信息 & [( g( t i% b" y, J
GetSystemTime 取得当前系统时间,这个时间采用的是"协同世界时间"(即UTC,也叫做GMT)格式
$ w& c- I$ r' X% x# @GetSystemTimeAdjustment 使内部系统时钟与一个外部的时钟信号源同步
& _/ a9 X$ C1 O1 fGetThreadLocale 取得当前线程的地方ID
# F: ~& ?$ q" E# YGetTickCount 用于获取自windows启动以来经历的时间长度(毫秒)
% L) A$ J- D+ ]9 V* L# `( F; SGetTimeFormat 针对当前指定的"地方",按特定的格式格式化一个系统时间
+ _6 Z9 Z& Y& m- l- d' D2 h2 MGetTimeZoneInformation 取得与系统时区设置有关的信息 0 r5 b3 |) l4 q+ m, X
GetUserDefaultLangID 为当前用户取得默认语言ID
: l! N& |' P9 {8 f7 [" q7 hGetUserDefaultLCID 取得当前用户的默认"地方"设置 7 W6 w; k! e# w, M9 U1 f9 _
GetUserName 取得当前用户的名字
- v- Z2 u9 p7 M" |GetVersion 判断当前运行的Windows和DOS版本
* E& q8 g% b6 ?$ H( I8 ^1 z/ z- fGetVersionEx 取得与平台和操作系统有关的版本信息 \2 A Z$ o5 c4 ^( v* y" Z/ Q
HideCaret 在指定的窗口隐藏插入符(光标)
4 M1 C8 H2 {! A9 L4 ?1 @IsValidCodePage 判断一个代码页是否有效 8 D! m3 _4 ]0 n f) J7 ~
IsValidLocale 判断地方标识符是否有效
# Q9 M1 o0 u0 L$ [keybd_event 这个函数模拟了键盘行动
: i* v& Z, g' _" \3 w7 `. M8 |; iLoadKeyboardLayout 载入一个键盘布局
8 y' P3 W$ \, t5 [4 jMapVirtualKey 根据指定的映射类型,执行不同的扫描码和字符转换
% e# A% Q- E: C& c% B" eMapVirtualKeyEx 根据指定的映射类型,执行不同的扫描码和字符转换 % t% Q6 C: w5 a3 m6 `( Q$ |
MessageBeep 播放一个系统声音。系统声音的分配方案是在控制面板里决定的
/ P3 a" t0 Q4 O2 }+ G1 Mmouse_event 模拟一次鼠标事件
1 i" y& g2 h* Z/ P. MOemKeyScan 判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态
4 Q, A. t) C* m$ ?OemToChar 将OEM字符集的一个字串转换到ANSI字符集
" ~8 F- |" c. C1 r7 h/ a: wSetCaretBlinkTime 指定插入符(光标)的闪烁频率
& l7 z9 e4 n/ ^ jSetCaretPos 指定插入符的位置 ( k) L0 a3 [+ k% O9 W
SetComputerName 设置新的计算机名
' n5 k0 U1 S' s6 o# h; \SetCursor 将指定的鼠标指针设为当前指针
7 m+ z- s; G/ n* x, m$ L0 fSetCursorPos 设置指针的位置
+ [: Z1 F' A! t- USetDoubleClickTime 设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间 5 ?7 p& U( a3 U5 B
SetEnvironmentVariable 将一个环境变量设为指定的值
: r" t! j# N& r; c! W3 V3 FSetKeyboardState 设置每个虚拟键当前在键盘上的状态 " _ r% B* e; c* M% _! x$ P
SetLocaleInfo 改变用户"地方"设置信息 6 B& n( Z1 o! V$ u. Z& H2 K( y! ]$ e
SetLocalTime 设置当前地方时间
# l# ?! I9 c3 g" T2 P* z! J' j6 ESetSysColors 设置指定窗口显示对象的颜色 " P: H1 U c6 C0 {- ?
SetSystemCursor 改变任何一个标准系统指针
& B. q1 T, e4 l& c; H6 DSetSystemTime 设置当前系统时间
* T2 n- K8 w, y8 lSetSystemTimeAdjustment 定时添加一个校准值使内部系统时钟与一个外部的时钟信号源同步 8 l! i6 n' k- h8 j7 e1 x
SetThreadLocale 为当前线程设置地方
: a. ]" }" r: H6 k' S: d9 s5 y$ G$ }SetTimeZoneInformation 设置系统时区信息
4 J2 d. Y# |' x; h* SShowCaret 在指定的窗口里显示插入符(光标) $ A$ O+ T; }1 H. H
ShowCursor 控制鼠标指针的可视性
9 E- b$ \2 j3 HSwapMouseButton 决定是否互换鼠标左右键的功能 - q. Y$ S4 `4 u( D$ L! G T, H
SystemParametersInfo 获取和设置数量众多的windows系统参数 & D$ u+ c8 [2 r9 j
SystemTimeToTzSpecificLocalTime 将系统时间转换成地方时间
$ {. E9 h8 ?! h" ^ToAscii 根据当前的扫描码和键盘信息,将一个虚拟键转换成ASCII字符 7 e: o8 S0 F! J
ToUnicode 根据当前的扫描码和键盘信息,将一个虚拟键转换成Unicode字符 3 L$ x; T/ M* i3 W1 u9 T
UnloadKeyboardLayout 卸载指定的键盘布局
% k4 p g; n0 q8 R, x! |VkKeyScan 针对Windows字符集中一个ASCII字符,判断虚拟键码和Shift键的状态 3 Z% l: a' y6 [! P0 H- {3 H
11. API之进程和线程函数
- `3 q5 L3 f+ B) r$ {: }CancelWaitableTimer 这个函数用于取消一个可以等待下去的计时器操作
5 v1 o9 X- ?% C3 s1 ], yCallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用 4 H% L9 t' ^# Z9 X" P
ConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个命名管道连接 1 V. G7 ~" P- G
CreateEvent 创建一个事件对象
/ b+ r* L5 J) N8 O7 c K6 dCreateMailslot 创建一个邮路。返回的句柄由邮路服务器使用(收件人) 3 ]! A/ F2 q Y
CreateMutex 创建一个互斥体(MUTEX) * G7 d. Q- o7 s u: a# c9 H9 z
CreateNamedPipe 创建一个命名管道。返回的句柄由管道的服务器端使用
7 p. U! Y, O) o/ Y; iCreatePipe 创建一个匿名管道
F3 d5 |7 L2 ~/ d% |$ m; i+ RCreateProcess 创建一个新进程(比如执行一个程序) 3 {, s2 ~3 r! l4 \; @
CreateSemaphore 创建一个新的信号机 8 g+ M2 S' W& v. B! d, p) G
CreateWaitableTimer 创建一个可等待的计时器对象 ; u' O' _2 k1 ~ H. a* M/ G8 a# a
DisconnectNamedPipe 断开一个客户与一个命名管道的连接
2 h0 w3 `: j9 L. u* N- s$ oDuplicateHandle 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄
' ~4 [9 H' q% ]3 N6 rExitProcess 中止一个进程
/ s( S7 d2 D& aFindCloseChangeNotification 关闭一个改动通知对象
; _' N) E/ L2 z; DFindExecutable 查找与一个指定文件关联在一起的程序的文件名
* Y: |" h- P FFindFirstChangeNotification 创建一个文件通知对象。该对象用于监视文件系统发生的变化 . U6 |, j1 F+ q& `/ j
FindNextChangeNotification 重设一个文件改变通知对象,令其继续监视下一次变化
% O3 \& J" _6 \% k0 E, eFreeLibrary 释放指定的动态链接库
: f* y3 ~% d2 t6 F1 o- T0 xGetCurrentProcess 获取当前进程的一个伪句柄
! }1 b k! ]% T" rGetCurrentProcessId 获取当前进程一个唯一的标识符
2 M2 P9 S3 q* N |! a! h$ cGetCurrentThread 获取当前线程的一个伪句柄 7 Y# t2 g" z c
GetCurrentThreadId 获取当前线程一个唯一的线程标识符 8 a' I r0 D+ I4 b9 @' s" s# }/ m
GetExitCodeProces 获取一个已中断进程的退出代码 5 x( j: j$ \" Q
GetExitCodeThread 获取一个已中止线程的退出代码 % b2 u$ I& s1 t% x
GetHandleInformation 获取与一个系统对象句柄有关的信息
- l3 P6 Z% o( u& ?, K# I# J& [GetMailslotInfo 获取与一个邮路有关的信息
Q5 B( I: R- CGetModuleFileName 获取一个已装载模板的完整路径名称 ! L2 ?" k) y& M2 f" a2 e
GetModuleHandle 获取一个应用程序或动态链接库的模块句柄 6 s: G0 I1 Q' |0 ^) @/ X
GetModuleHandleA(LPCSTR lpModuleName);9 u- }( F& p9 L* ^" f- W( f
GetPriorityClass 获取特定进程的优先级别 5 z5 w% ?* ?7 o
GetProcessShutdownParameters 调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况 , }6 P. w: d. X5 f) \. o
GetProcessTimes 获取与一个进程的经过时间有关的信息 9 g1 b. a: ?: |
GetProcessWorkingSetSize 了解一个应用程序在运行过程中实际向它交付了多大容量的内存 3 E/ C0 p- h A6 V x3 K0 d
GetSartupInfo 获取一个进程的启动信息 & K6 n4 J3 C- Y x. ?7 \
GetThreadPriority 获取特定线程的优先级别
; M" i- w# ^0 }. ~- bGetTheardTimes 获取与一个线程的经过时间有关的信息
7 j# I; s8 {8 S' YGetWindowThreadProcessId 获取与指定窗口关联在一起的一个进程和线程标识符 / G6 k. b V3 B1 x* [% o
LoadLibrary 载入指定的动态链接库,并将它映射到当前进程使用的地址空间
/ a# K4 f, z& Y* CLoadLibraryEx 装载指定的动态链接库,并为当前进程把它映射到地址空间
- q) c$ Z- `7 ^# R( gLoadModule 载入一个Windows应用程序,并在指定的环境中运行 - k% o& ?5 A) U+ v
MsgWaitForMultipleObjects 等侯单个对象或一系列对象发出信号。如返回条件已经满足,则立即返回 / u1 T% i% V+ _ a9 B8 G% Q! W
SetPriorityClass 设置一个进程的优先级别
2 T5 ?* p8 m! PSetProcessShutdownParameters 在系统关闭期间,为指定进程设置他相对于其它程序的关闭顺序 - B0 @* i( \% N% Y+ a
SetProcessWorkingSetSize 设置操作系统实际划分给进程使用的内存容量 2 }, x9 D8 q" H2 V' h
SetThreadPriority 设定线程的优先级别
; S/ b& z' T8 UShellExecute 查找与指定文件关联在一起的程序的文件名 * N3 \0 k) R0 a! ^1 u) R. H8 Z
TerminateProcess 结束一个进程
8 R6 V, b g/ j3 H. U2 X lWinExec 运行指定的程序
6 s% i; G- q* b$ D12. API之控件与消息函数 5 L9 J3 v* A1 y0 {! j
AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 7 D- a9 c. R) n2 G6 k0 v9 F: o% _+ `
AnyPopup 判断屏幕上是否存在任何弹出式窗口 ( ~/ f. v) ^+ Q
ArrangeIconicWindows 排列一个父窗口的最小化子窗口
8 n+ f' c0 c- D# d/ _AttachThreadInput 连接线程输入函数
; T W* t, j7 C6 |2 VBeginDeferWindowPos 启动构建一系列新窗口位置的过程
9 D# N" ^+ G7 l* g, L1 J# lBringWindowToTop 将指定的窗口带至窗口列表顶部 ) P# ?- r: E, U1 w9 ?' L
CascadeWindows 以层叠方式排列窗口 ) F9 r+ Y& U( r P& K
ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄
& }1 }. s/ F$ gClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标 , x% A7 R& l. p" R" @
CloseWindow 最小化指定的窗口
8 }9 A0 X/ \) X* U8 g3 V! ^1 pCopyRect 矩形内容复制
" [& S4 {; B0 Y5 g! `, a6 f/ SDeferWindowPos 该函数为特定的窗口指定一个新窗口位置
6 z3 f* i+ B" M' _3 K; G3 n! BDestroyWindow 清除指定的窗口以及它的所有子窗口 " F, X3 G6 w% k' T. O) j; r
DrawAnimatedRects 描绘一系列动态矩形 3 c& c. r, r" H% w
EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入
C0 O% z* b. x) q5 a6 [EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态 2 \$ R* \( \4 n" \5 {
EnumChildWindows 为指定的父窗口枚举子窗口 1 Z/ C6 k2 c( ~. c+ U
EnumThreadWindows 枚举与指定任务相关的窗口
8 H4 y& a4 N/ M. _* D* gEnumWindows 枚举窗口列表中的所有父窗口 ! p; A q' ]; Z& O7 \& Y
EqualRect 判断两个矩形结构是否相同
" e+ n4 S# L3 u5 D" MFindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口
2 ~8 l' I0 G2 Q! tFindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口
" K3 l" q% i3 r5 s: g! j, _FlashWindow 闪烁显示指定窗口 ! d, x- C& A% Q! _+ Z+ k9 {" R+ N5 |
GetActiveWindow 获得活动窗口的句柄 $ ^( _) Y# F- E. D `
GetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收)
) {9 G! a3 r* a. IGetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息 , A8 g2 u& o/ V4 q3 N( F0 Q, {
GetClassLong 取得窗口类的一个Long变量条目
" L- f& y" ]2 D7 kGetClassName 为指定的窗口取得类名
/ W4 @9 K2 a6 x2 DGetClassWord 为窗口类取得一个整数变量 1 r% h. y' F& \
GetClientRect 返回指定窗口客户区矩形的大小 2 G1 ]* o$ Q/ ]1 }& }% |. L
GetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄 , I- p" j6 J& O3 Y/ N
GetFocus 获得拥有输入焦点的窗口的句柄 , G1 M# \8 q' k) k: d
GetForegroundWindow 获得前台窗口的句柄
/ k% Q; u$ @0 e$ C$ YGetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄 ) ]* [! \) m; d% G6 Y7 h7 X
GetParent 判断指定窗口的父窗口 $ o) V7 h; R* D8 n. h0 {
GetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄
" B8 i* i7 | X/ B9 S, y8 G% V, Q% SGetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分
" _& L9 p( `# WGetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系 7 z Y" h1 p: `8 l' ~
GetWindowContextHelpId 取得与窗口关联在一起的帮助场景ID . o& e2 U# D& P8 o) m4 _ @
GetWindowLong 从指定窗口的结构中取得信息 ) x' l; j8 |1 o) i/ [
GetWindowPlacement 获得指定窗口的状态及位置信息 6 G: a, x, | y* E& T& q1 L+ I
GetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内 9 T" l- Q# w: i4 k, {3 \/ u
GetWindowText 取得一个窗体的标题(caption)文字,或者一个控件的内容 " C- @! S4 |( E
GetWindowTextLength 调查窗口标题文字或控件内容的长短
6 s. R% q1 r1 z5 q- [& ^8 GGetWindowWord 获得指定窗口结构的信息
& ~ O! j; c; ?1 v! }$ xInflateRect 增大或减小一个矩形的大小 # T2 h& k& s0 z9 f' D: @) Q
IntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集 $ H0 v7 S# Y+ q" p3 Z7 W$ E# v
InvalidateRect 屏蔽一个窗口客户区的全部或部分区域
2 x: t7 L' w7 u1 R/ b6 YIsChild 判断一个窗口是否为另一窗口的子或隶属窗口
- U9 [# u- B; c1 E5 NIsIconic 判断窗口是否已最小化
( D" } p/ K! XIsRectEmpty 判断一个矩形是否为空
: o- g6 z0 C# O7 c3 ?IsWindow 判断一个窗口句柄是否有效 : S+ m0 N2 G6 i$ z' @* r# h8 x- \ ?
IsWindowEnabled 判断窗口是否处于活动状态
F2 L. A0 }4 `1 p! pIsWindowUnicode 判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字 5 r# _; ]3 B" f l
IsWindowVisible 判断窗口是否可见
8 t; v {( ~1 p3 }IsZoomed 判断窗口是否最大化
( h6 N+ l+ L% s* [3 ^- {6 l$ oLockWindowUpdate 锁定指定窗口,禁止它更新 & a' H/ w5 N' I. m
MapWindowPoints 将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统
. g& I$ F9 H# n& ^& B ]2 N; kMoveWindow 改变指定窗口的位置和大小
" _8 k$ o) Y2 g$ c3 ?+ L, [OffsetRect 通过应用一个指定的偏移,从而让矩形移动起来
4 d X4 B9 m* d5 TOpenIcon 恢复一个最小化的程序,并将其激活
3 [3 f/ Z! z# L8 [( HPtInRect 判断指定的点是否位于矩形内部
' p8 G6 m# c( A! URedrawWindow 重画全部或部分窗口 ! K8 H& \7 H/ A5 E% b+ s z
ReleaseCapture 为当前的应用程序释放鼠标捕获
2 [4 }6 D1 v8 W' i, CScreenToClient 判断屏幕上一个指定点的客户区坐标 ! a9 P R) ~$ H( u
ScrollWindow 滚动窗口客户区的全部或一部分
* Z( h4 T4 Q6 \0 w* |! B2 OScrollWindowEx 根据附加的选项,滚动窗口客户区的全部或部分
3 Y9 A! p# w) `* `SetActiveWindow 激活指定的窗口 , j( p' y" F/ u2 C$ v5 [
SetCapture 将鼠标捕获设置到指定的窗口
- z8 c* ^9 ?# q" ?! P+ J2 L9 M3 G5 MSetClassLong 为窗口类设置一个Long变量条目 8 \1 \1 T x2 D$ {- f2 p; ]
SetClassWord 为窗口类设置一个条目
1 ?: I4 j" ^' USetFocusAPI 将输入焦点设到指定的窗口。如有必要,会激活窗口 6 L# l. P1 O- l0 s0 }+ [9 R
SetForegroundWindow 将窗口设为系统的前台窗口
/ P4 X5 Z; a6 V/ fSetParent 指定一个窗口的新父 & e4 o! C; D2 C7 w+ I
SetRect 设置指定矩形的内容 9 I. I9 f8 F$ F! z2 [
SetRectEmpty 将矩形设为一个空矩形 % _: q4 H) d% [+ V: z7 m& U/ B# Z9 V
SetWindowContextHelpId 为指定的窗口设置帮助场景(上下文)ID , {' Y) B( _! j2 W& A
SetWindowLong 在窗口结构中为指定的窗口设置信息
# y6 m7 m& M" v( P* u& SSetWindowPlacement 设置窗口状态和位置信息 , W8 c7 ]9 _) k) V/ d. G. S
SetWindowPos 为窗口指定一个新位置和状态
; F" o# p0 e7 w7 ISetWindowText 设置窗口的标题文字或控件的内容
D$ a& }. j7 h) a* |. O7 u( ~# wSetWindowWord 在窗口结构中为指定的窗口设置信息
0 ]% ~ |$ _/ w1 SShowOwnedPopups 显示或隐藏由指定窗口所有的全部弹出式窗口
) E/ X9 i% D& f2 M3 _8 Q# VShowWindow 控制窗口的可见性
$ y/ z, l2 w! }. ?$ c; [# AShowWindowAsync 与ShowWindow相似 / ^ S% s" e) J1 e) U8 Z
SubtractRect 装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果
+ E W+ ^0 f. a- WTileWindows 以平铺顺序排列窗口
% q& j" A: A" ]- s) A# T( y- PUnionRect 装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect联合起来的结果 7 {6 \6 f, p% G0 @7 l. O
UpdateWindow 强制立即更新窗口 , a& w; f1 w9 G- i& k8 H- a2 M
ValidateRect 校验窗口的全部或部分客户区 " @; j, O* j1 X0 O) @
WindowFromPoint 返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口3 r8 }. w& ^% @: g
高级音频函数—参看《VC++ 编程指南.chm》11.6
+ o( S* e1 ~5 B" j4 d5 F Windows提供了三个特殊的播放声音的高级音频函数:MessageBeep、PlaySound和sndPlaySound。这三个函数可以满足播放波形声音的一般需要,但它们播放的WAVE文件(波形声音文件)的大小不能超过100KB,如果要播放较大的WAVE文件,则应该使用MCI服务。/ O2 U$ E' s" T- C+ l
BOOL MessageBeep(UINT uType);
4 P2 i, q. b, K/ ~- c该函数主要用来播放系统报警声音。系统报警声音是由用户在控制面板中的声音(Sounds)程序中定义的,或者在WIN.INI的[sounds]段中指定。
, D- H! r7 v9 i" b1 v! i参数uType说明了告警级,如下表所示。若成功则函数返回TRUE。
8 H7 n* v' z! e l3 F/ _9 J级别 ! A" F9 X& E @/ k& P
| 描述
, L. e! f; g3 A2 d | -1 # s6 |) B# {4 k8 }
| 从机器的扬声器中发出蜂鸣声。 9 I) y8 f& z B' R: ~) q
| MB_ICONASTERISK * p V; r% q& {
| 播放由SystemAsterisk定义的声音。 8 J3 B. T. ]( Z: `2 N
| MB_ICONEXCLAMATION
* u, U1 \' l& i- f7 a8 {# e | 播放由SystemExclamation定义的声音。
" ^. Q$ \. X9 Y7 n- l1 j | MB_ICONHAND I1 i( b' s$ V: d" ~; ?% c
| 播放由SystemHand定义的声音。
" C' G, P/ i5 J# T( Z' M | MB_ICONQUESTION
0 b* D/ \8 L9 x | 播放由SystemQuestion定义的声音。
$ q) N$ z9 f5 K# X2 S. s" F | MB_OK
/ l0 h5 `- x1 L8 \; y S& c | 播放由SystemDefault定义的声音 ' V5 u: }7 N2 T+ c4 p' U
| BOOL PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
q1 H' b6 w4 U参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。
6 g# A* n0 }- Y3 y参数hmod是应用程序的实例句柄,当播放WAV资源时要用到该参数,否则它必须为NULL。5 J! d" ~4 F; G Z3 x
参数fdwSound是标志的组合,如下表所示。若成功则函数返回TRUE,否则返回FALSE。. ?7 A% E, }& y; s7 N- p6 X
标志 6 u$ {# o3 `2 K; f
| 含义 7 u3 P: F% Z5 a' K1 U1 \# v9 b
| SND_APPLICATION
% G3 K7 e. s/ ^& `+ H | 用应用程序指定的关联来播放声音。
8 [, O+ M% o1 g/ B | SND_ALIAS 2 v6 i: W# Z! z$ h$ S
| pszSound参数指定了注册表或WIN.INI中的系统事件的别名。
! D9 z5 h& q& d: V | SND_ALIAS_ID / |. j4 c. o$ i! p- N$ P
| pszSound参数指定了预定义的声音标识符。
0 N8 @: j, t( Z. { z/ B7 T' E+ x K | SND_ASYNC 1 D$ q# F% P5 V# G9 ^
| 用异步方式播放声音,PlaySound函数在开始播放后立即返回。 * A& c2 o7 M: @
| SND_FILENAME : P/ @. i/ j! q$ b+ m3 `
| pszSound参数指定了WAVE文件名。 5 v% {' O m$ n
| SND_LOOP 2 r' }) g) `' y0 @5 G
| 重复播放声音,必须与SND_ASYNC标志一块使用。
# X q8 D: J5 z8 }2 _. I" V/ N | SND_MEMORY 8 V0 W2 @2 ]3 \$ _
| 播放载入到内存中的声音,此时pszSound是指向声音数据的指针。 * O" W5 t, |( W$ j
| SND_NODEFAULT ; `4 K6 {: |+ d1 [: R0 n1 R$ j
| 不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。 w3 z# A% F: K r- j# R5 P; c3 }
| SND_NOSTOP : N, r- [, I7 A+ O$ M
| PlaySound不打断原来的声音播出并立即返回FALSE。 % y; f$ u3 k5 y, R
| SND_NOWAIT
2 w; z( p: l2 q4 l | 如果驱动程序正忙则函数就不播放声音并立即返回。 2 [* e8 M3 A$ I G; w0 t
| SND_PURGE
! x& [' p" U1 p4 ? | 停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。
- S7 x# s" B) `3 U. g | SND_RESOURCE
$ x2 k/ o3 [6 y( T" H | pszSound参数是WAVE资源的标识符,这时要用到hmod参数。 ) A; R( `3 f7 z( N! N& m; R$ a0 d
| SND_SYNC % F6 g2 m( I: n
| 同步播放声音,在播放完后PlaySound函数才返回。
3 w$ _# n2 f" j- f | BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound);7 M: i4 N' i* X* X4 x0 `
函数sndPlaySound的功能与PlaySound类似,但少了一个参数。除了不能指定资源名字外,参数lpszSound与PlaySound的是一样的。6 M+ N: X7 b2 H( x, r
MCI播放
" C. T4 }1 Y0 T9 P' D3 h所有的MCI命令字符串都是通过多媒体API函数mciSendString传递给MCI的,该函数的声明为:3 t% @) e. }: ]* K2 Z
MCIERROR mciSendString(
/ R9 J5 i: O3 g+ _+ [7 d0 I7 hLPCTSTR lpszCommand, //MCI命令字符串4 C8 t& l, I( g) L; L1 a; R6 t( K+ }, c
LPTSTR lpszReturnString, //存放反馈信息的缓冲区
3 Z; b! G5 l+ j2 H( u& O. vUINT cchReturn, //缓冲区的长度- K4 `7 {# Z7 H. i) @3 k2 {: p
HANDLE hwndCallback //回调窗口的句柄,一般为NULL
' |. G& h, ^) h5 z4 Z, R# A2 [); //若成功则返回0,否则返回错误码。
3 Q3 v3 M/ w" |* V0 ^# `该函数返回的错误码可以用mciGetErrorString函数进行分析,该函数的声明为:1 b4 p! D: |1 s5 a
BOOL mciGetErrorString(
7 M, X+ }# y1 L, O8 iDWORD fdwError, //函数mciSendString或mciSendCommand返回的错误码
. f2 C5 s" H/ mLPTSTR lpszErrorText, //接收描述错误的字符串的缓冲区
" V, E% o& A% ?$ cUINT cchErrorText //缓冲区的长度
& Z' S* b$ i7 F/ I) k9 C R( y9 k);8 K" I& H5 ^6 `6 i! a0 q
|
|