|
|
原文:http://www.cnblogs.com/cltsq/articles/api.html
. I4 {) c( f* ^4 |1. API之网络函数
" B0 S% Y3 m4 ]( Y# q) |WNetAddConnection 创建同一个网络资源的永久性连接
: f+ z$ _8 Z" n/ x' e' w, |0 \WNetAddConnection2 创建同一个网络资源的连接
; i9 [+ ~- s) Z) u0 n( f5 MWNetAddConnection3 创建同一个网络资源的连接
0 @8 t+ k8 ~" e" a# I4 |WNetCancelConnection 结束一个网络连接 3 V9 |+ t7 ?. Z8 s& A' `$ c: N8 H
WNetCancelConnection2 结束一个网络连接
. t% N( \# }9 A1 c$ mWNetCloseEnum 结束一次枚举操作
1 x8 C7 ]# S& t( WWNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接
& q, T( Q( T6 W9 M3 F, LWNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 % w: ?5 Y R; @) s) k p/ m
WNetEnumResource 枚举网络资源 / E8 Z( `7 J% k6 \/ i
WNetGetConnection 获取本地或已连接的一个资源的网络名称 ( S6 L/ g2 b: ?6 b
WNetGetLastError 获取网络错误的扩展错误信息
6 {3 l9 G! A3 ]% p% b' b1 bWNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称 + r/ Z& ?$ g" M
WNetGetUser 获取一个网络资源用以连接的名字 " N8 |8 u4 p; N1 \3 R
WNetOpenEnum 启动对网络资源进行枚举的过程
2 @' `4 ^5 v% a* V* S7 U- _% l2. API之消息函数 ' A8 {( O: q) M9 w0 S* d* _' J. Q
BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口
6 E. {3 a- @9 lGetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 . }! A& C* x* o& T; X
GetMessageTime 取得消息队列中上一条消息处理完毕时的时间
4 J0 {; r Z3 V* E9 IPostMessage 将一条消息投递到指定窗口的消息队列
# \5 `2 L' O) P( zPostThreadMessage 将一条消息投递给应用程序
) H; C: @% H: h! SRegisterWindowMessage 获取分配给一个字串标识符的消息编号 3 ?* x8 K/ m( N" r, s. ~4 \
ReplyMessage 答复一个消息
- [- ]+ X5 C! b: xSendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口
/ f @$ h* M2 v5 B C3 NSendMessageCallback 将一条消息发给窗口
, @6 r* M0 \/ u) s( x( I1 s8 x5 qSendMessageTimeout 向窗口发送一条消息 ( `3 N9 b: n( L7 I7 N2 r
SendNotifyMessage 向窗口发送一条消息
$ j& g. i3 ~9 A3. API之文件处理函数
) X# ^- O0 K2 Y( `3 UCloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 ' b9 P6 u3 B$ i4 f9 k
CompareFileTime 对比两个文件的时间 5 n; F) K3 X S/ G! _
CopyFile 复制文件
/ z0 [* a: b0 b% VCreateDirectory 创建一个新目录 3 F: ]4 u: q! ?: b. [' G
CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台 . ^& \1 b1 e6 s3 a# s' V
CreateFileMapping 创建一个新的文件映射对象
- M9 R4 ]% p5 [; L. d& k1 KDeleteFile 删除指定文件
. o( Z8 U2 r# w9 B! JDeviceIoControl 对设备执行指定的操作
9 V. G. i/ g' o/ {4 C% `. N# nDosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值 ' h$ g, q8 L; P- q; l( B
FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值 6 r# P5 u& f. x4 {. }) E- g7 G0 ]- E5 k
FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间
% Y$ ]- w* @8 j& }FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构
( o. r! |0 m6 n+ @FindClose 关闭由FindFirstFile函数创建的一个搜索句柄
5 t! v3 ^+ [6 ]- S! v- @8 t8 v- zFindFirstFile 根据文件名查找文件
8 J6 T9 A8 s6 w7 X1 pFindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件
$ }. G' L( w. Y9 S' d; r0 FFlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区
* `! f8 I; C$ SFlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘
+ j! K9 t& y. R$ S3 V: _GetBinaryType 判断文件是否可以执行 # N' {. o6 }: A
GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数
6 Q7 g. s5 ?; T8 Z9 ?. OGetCurrentDirectory 在一个缓冲区中装载当前目录
% y" C$ b H7 R7 o9 ]- FDWORD GetCurrentDirectory(4 _4 {2 G- X& K$ w0 ^
DWORD nBufferLength, //缓冲区大小5 v3 ]3 Y$ V+ y% p
LPSTR lpBuffer //缓冲区的首地址1 a5 b. r# y3 I& f3 @2 D7 s
);! I r/ `% f' p" s' n( W
GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量
+ [3 T5 E0 [& `- }/ CGetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息
1 _9 z8 { b4 x9 t5 H: s5 WGetDriveType 判断一个磁盘驱动器的类型 4 o0 J3 j1 o" b: k+ k
GetExpandedName 取得一个压缩文件的全名
5 I5 {& n. t8 L2 f4 U* l' |! dGetFileAttributes 判断指定文件的属性
$ E: I, e7 p: Y Z+ KGetFileInformationByHandle 这个函数提供了获取文件信息的一种机制
, c' i- A; D. C" r: CGetFileSize 判断文件长度
+ x/ \. ]5 y5 k: t# {GetFileTime 取得指定文件的时间信息 9 ` o6 d; C5 t+ K) s& Z
GetFileType 在给出文件句柄的前提下,判断文件类型
$ R# [& k9 c- r4 }1 X( O* tGetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息
, J$ c. d! P! l: o P0 h& }) zGetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区
4 R: Y- c& G, T; KGetFullPathName 获取指定文件的完整路径名 ; h4 s7 |; S/ J& w
GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母 7 E0 k* q8 m- v6 n5 Y& S0 h# |
GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径
! O0 e8 U/ }" b& I: q4 u' PGetOverlappedResult 判断一个重叠操作当前的状态
& u/ J4 Q: N+ j4 R4 |0 g& O# nGetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值
$ L Z9 I4 V- r- U1 j5 y WGetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表
8 f; L% n0 f8 w2 X" \) c2 eGetPrivateProfileString 为初始化文件中指定的条目取得字串
/ K# I. N9 T3 x) ]0 [/ ^$ p( n; ^GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值
% ~0 K4 [, y$ p5 o+ Y* FGetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表
. _1 {: x) z' F4 u8 jGetProfileString 为win.ini初始化文件中指定的条目取得字串
7 X$ H+ J% T6 O+ \2 Z8 a* fGetShortPathName 获取指定文件的短路径名 & b, q' k8 p2 e! g7 Q* ^- h
GetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名 # M0 w) I! v, {) {( m9 _
GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用 + W& ~0 Z4 [6 t" W7 |2 L& H
GetTempPath 获取为临时文件指定的路径 % \- `+ ~$ z! i/ T! n; { ^
GetVolumeInformation 获取与一个磁盘卷有关的信息
6 N) g5 z7 L1 n; e- a4 V. p+ ?GetWindowsDirectory 获取Windows目录的完整路径名
- s1 V7 q- G0 q0 y! phread 参考lread
5 n8 V/ G0 D) f2 a. Bhwrite 参考lwrite函数
! k) B$ L0 ]+ A, w6 `lclose 关闭指定的文件 " C* Q6 k6 x0 p! p8 M
lcreat 创建一个文件
1 t: x5 v$ o8 \/ a2 Hllseek 设置文件中进行读写的当前位置 & y& P/ y8 f: D/ q! M5 g5 G
LockFile 锁定文件的某一部分,使其不与其他应用程序共享
( p# Z6 R7 P" Z: b+ y6 O( iLockFileEx 与LockFile相似,只是它提供了更多的功能 . m J/ u. c7 s$ B1 M
lopen 以二进制模式打开指定的文件
|5 v$ K' y: z `3 Y0 l* `lread 将文件中的数据读入内存缓冲区
7 v) |: d" F9 c8 Qlwrite 将数据从内存缓冲区写入一个文件
0 g8 _. {$ t( y5 o" s7 E& VLZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件 ! r+ y' @( d) C* F5 c: v
LZCopy 复制一个文件
/ J' s, d- g: }- {+ w: h. S) B TLZInit 这个函数用于初始化内部缓冲区 2 S& v: c4 |! N5 B% J$ l
LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件 + L! ~" `# ~) W4 A+ E9 G: b; U
LZRead 将数据从文件读入内存缓冲区
/ s& G3 }& o2 P$ t* n& C4 tLZSeek 设置一个文件中进行读写的当前位置
9 [( r5 j4 B+ @, t* z/ S+ hMapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间
# O) L( Q3 W' xMoveFile 移动文件
4 I. @. j( v! [ X9 `OpenFile 这个函数能执行大量不同的文件操作 : T% D G/ p6 l/ p: b6 U' }
OpenFileMapping 打开一个现成的文件映射对象
6 P1 K- F9 u: N0 v9 N+ k4 GQueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况 ) q1 M1 B1 c9 \9 h3 \4 f
ReadFile 从文件中读出数据 K0 ]7 C9 W0 V& h, S% \; C
ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调
6 t8 Z* ~" R: L* ], QRegCloseKey 关闭系统注册表中的一个项(或键) $ t: Q" `9 _9 v* y) y% f
RegConnectRegistry 访问远程系统的部分注册表
& s6 h. U) ` Q. i5 j. pRegCreateKey 在指定的项下创建或打开一个项 0 x! \0 s4 y4 q3 x+ t* g/ V7 {3 D4 Q0 R
RegCreateKeyEx 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数
9 g; a) V$ R! oRegDeleteKey 删除现有项下方一个指定的子项
: L. q1 ]2 p7 G1 O) CRegDeleteValue 删除指定项下方的一个值
: j" W4 u/ r {) }" J! p6 lRegEnumKey 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx # a+ ?. e; }4 E6 P
RegEnumKeyEx 枚举指定项下方的子项 $ }7 v6 M- S* g* n4 M0 h4 ]
RegEnumValue 枚举指定项的值 m3 |$ z% m- [/ d) r6 i: o# n$ p
RegFlushKey 将对项和它的子项作出的改动实际写入磁盘 ! g0 n% \. _; L/ J7 }
RegGetKeySecurity 获取与一个注册表项有关的安全信息
" _5 J6 M& ?* ^/ _2 mRegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息
, M1 z. y1 l6 N3 }RegNotifyChangeKeyValue 注册表项或它的任何一个子项发生变化时,用这个函数提供一种通知机制 , Y4 Z% j' Y: Q9 T- @5 \
RegOpenKey 打开一个现有的注册表项
" n; w3 E4 k& M. ?RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数
6 ?; {$ Q2 ?- ~0 KRegQueryInfoKey 获取与一个项有关的信息 / ~1 P! ^# p, W! |3 `) j
RegQueryValue 取得指定项或子项的默认(未命名)值 1 b6 d! \. [0 d, L
RegQueryValueEx 获取一个项的设置值
& M. E3 u; {& }RegReplaceKey 用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息 ' h# R5 `. t" H7 c' ^, k+ ^
RegRestoreKey 从一个磁盘文件恢复注册表信息 , w) f7 @0 p3 d: x: f
RegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件 ) w. ~2 J8 o' F- h) b
RegSetKeySecurity 设置指定项的安全特性 0 _5 \0 ?" ~% n
RegSetValue 设置指定项或子项的默认值
* g' ?) L1 l; f6 q0 \4 _; p rRegSetValueEx 设置指定项的值
" _& u9 r2 S0 C `) Z; zRegUnLoadKey 卸载指定的项以及它的所有子项 - T1 k) b* }+ P& J: ^$ V
RemoveDirectory 删除指定目录
4 \2 ~7 b5 }! g" l4 p2 u ^SearchPath 查找指定文件 ' j5 |: v7 O9 M/ J2 Q
SetCurrentDirectory 设置当前目录
2 m {$ K% ], ASetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾 % {. O! O% X4 S' ?
SetFileAttributes 设置文件属性
# C* k- L6 h6 d9 T+ NSetFilePointer 在一个文件中设置当前的读写位置 - N- s+ m1 B0 N _/ V
SetFileTime 设置文件的创建、访问及上次修改时间 ; W, I" Z( c9 p8 K/ t& R4 P& H/ i
SetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果
- Q7 N+ E5 C# ]1 X; T8 fSetVolumeLabel 设置一个磁盘的卷标(Label)
( P; h( ^/ g0 x9 nSystemTimeToFileTime 根据一个FILETIME结构的内容,载入一个SYSTEMTIME结构
; x4 w7 f# R' V3 D# C% cUnlockFile 解除对一个文件的锁定
7 ~. a+ w% i! [# NUnlockFileEx 解除对一个文件的锁定 8 L6 H# {* y5 y- P1 U
UnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射 ! r' r7 U; O+ C& g: ^2 I. w
VerFindFile 用这个函数决定一个文件应安装到哪里
3 u& i$ u7 }; V- }/ W" WVerInstallFile 用这个函数安装一个文件 U* }) o* B; x3 v
VerLanguageName 这个函数能根据16位语言代码获取一种语言的名称 % a/ v8 a$ A$ j6 Q& N- _
VerQueryValue 这个函数用于从版本资源中获取信息 $ f1 I# e4 y' Y0 |9 W
WriteFile 将数据写入一个文件 : D' E! I' W/ Q7 W
WriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调
. `$ i# }3 w% e9 \$ t( Q: B6 cWritePrivateProfileSection 为一个初始化文件(.ini)中指定的小节设置所有项名和值
- v& T' ^3 ^0 W2 e( \2 hWritePrivateProfileString 在初始化文件指定小节内设置一个字串
8 g ^# M% @+ N; eWriteProfileSection 为Win.ini初始化文件中一个指定的小节设置所有项名和值
* n9 t9 }9 E7 [! m$ `, L+ mWriteProfileString 在Win.ini初始化文件指定小节内设置一个字串
" G! b# J2 h% j' x/ D5 y3 Y4. API之打印函数
0 |! p+ T2 j/ r' @AbortDoc 取消一份文档的打印 0 ?; R# D# U! I, ~) Y. |+ S
AbortPrinter 删除与一台打印机关联在一起的缓冲文件
; Q9 n) T, v# D' n2 ]( BAddForm 为打印机的表单列表添加一个新表单
" S: M! B) r8 xAddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 . f! S; p2 o, F, E
AddMonitor 为系统添加一个打印机监视器
- {: v4 ~* ~ s% R, ` P( ^AddPort 启动"添加端口"对话框,允许用户在系统可用端口列表中加入一个新端口
1 ^* a+ l3 @6 Y- H! v3 jAddPrinter 在系统中添加一台新打印机 ( u) j! N2 U e* \0 R- ~) C
AddPrinterConnection 连接指定的打印机
: {- o8 b- ~/ D" y* S8 c. Y6 ]AddPrinterDriver 为指定的系统添加一个打印驱动程序 1 {3 a/ n! T: T; a. r6 H* }2 O
AddPrintProcessor 为指定的系统添加一个打印处理器
6 [4 D# F, {3 Z5 U. m* Y3 v! uAddPrintProvidor 为系统添加一个打印供应商
* M# d0 }1 ?9 p5 G% Q3 A, JAdvancedDocumentProperties 启动打印机文档设置对话框 - H" w% O! i; n2 F1 J. D% |
ClosePrinter 关闭一个打开的打印机对象
4 R3 L) f3 f" C' SConfigurePort 针对指定的端口,启动一个端口配置对话框
3 T' ]" L. s1 F( BConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接
/ L6 u9 B6 T- \6 v( H! }* _DeleteForm 从打印机可用表单列表中删除一个表单
9 ]* U% _) g5 {/ k9 a" rDeleteMonitor 删除指定的打印监视器 + o5 J& c( P7 U& U( S
DeletePort 启动"删除端口"对话框,允许用户从当前系统删除一个端口
, L9 \' v7 }: zDeletePrinter 将指定的打印机标志为从系统中删除 ! X4 Q5 w0 [! C2 s! I& a7 Y
DeletePrinterConnection 删除与指定打印机的连接
5 O; t" n; ~, {+ R% J% t* F) f6 |1 A2 JDeletePrinterDriver 从系统删除一个打印机驱动程序
( ^& T8 I' D' }; U5 C! \DeletePrintProcessor 从指定系统删除一个打印处理器
6 r' @+ R* U3 Z" o; {1 U7 {: aDeletePrintProvidor 从系统中删除一个打印供应商
8 C& g% |1 j1 U7 Q" J# @% \DeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 % ` A4 A1 e- t b! N
DocumentProperties 打印机配置控制函数
3 |, N% s" M. SEndDocAPI 结束一个成功的打印作业
; U/ d- U0 O; fEndDocPrinter 在后台打印程序的级别指定一个文档的结束 ; {& t g" ~, Q' ?' w% J
EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 ' ], n* L6 x& j
EndPagePrinter 指定一个页在打印作业中的结尾 * V9 ?# U' b# E( V# c2 B0 \; E
EnumForms 枚举一台打印机可用的表单
( J# q+ u: k( |4 }% T. O, iEnumJobs 枚举打印队列中的作业
1 k4 J% A- M7 Y) EEnumMonitors 枚举可用的打印监视器 & z) R6 O# P3 i- |
EnumPorts 枚举一个系统可用的端口
$ k- f% l \3 @5 W! rEnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 $ Z1 G. M, g" S
EnumPrinters 枚举系统中安装的打印机
5 d2 R9 u/ T2 k' d9 W% T' KEnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 - t3 j; O: M5 v( i+ @0 B
EnumPrintProcessors 枚举系统中可用的打印处理器
+ V7 r' `3 h% v0 l. _6 NEscape 设备控制函数 ) r! ^4 C0 E; d' j3 `) a
FindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象
# C. ?2 [5 X- c4 OFindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 * ]1 c7 ?0 P. y( X+ _/ M4 p
FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因
3 J; \9 g( ]6 I8 Q4 N% o2 _- T) KFreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 1 k! c/ c: ~5 a' [2 I
GetForm 取得与指定表单有关的信息
% a9 M4 B; R ZGetJob 获取与指定作业有关的信息 . r) i/ K Z2 ]4 p: A: k) [: z
GetPrinter 取得与指定打印机有关的信息 * [, U2 c5 L7 w; H, |* \
GetPrinterData 为打印机设置注册表配置信息 ( P& w$ |$ y: _/ a7 ^8 V- L
GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 C) j7 x) {5 `# n. [/ G( y# [
GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 ; L. W) X) u" B. b" l% g
GetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 8 a A2 X& ]6 [# \- z
OpenPrinter 打开指定的打印机,并获取打印机的句柄 7 L- l0 e1 B' X# P2 R
PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 : A9 m! P5 o; n5 d& @
PrinterProperties 启动打印机属性对话框,以便对打印机进行配置
. |2 \4 L* n0 R& {ReadPrinter 从打印机读入数据 6 \8 j5 s( v0 ?. o' u/ t
ResetDC 重设一个设备场景
8 m4 R1 o% W9 K: I, r5 LResetPrinter 改变指定打印机的默认数据类型及文档设置 7 d. N& f6 c( G
ScheduleJob 提交一个要打印的作业 ! Q/ S0 w/ n1 E) P7 \
SetAbortProc 为Windows指定取消函数的地址
$ x6 I! Q$ Q6 a ~6 X: B9 B) a; L) WSetForm 为指定的表单设置信息
S" E* b: h$ C4 | `SetJob 对一个打印作业的状态进行控制
4 o- C% ^5 C9 D6 x' u: C8 cSetPrinter 对一台打印机的状态进行控制 % |3 l; W! ]7 y% Y$ y5 L
SetPrinterData 设置打印机的注册表配置信息
+ D' N' r! ]0 |StartDoc 开始一个打印作业 9 J) }: t+ z. r: Q
StartDocPrinter 在后台打印的级别启动一个新文档 ( l5 ?2 X5 V4 T. M# f8 y) \5 d
StartPage 打印一个新页前要先调用这个函数 % G5 c% `/ f% U! z; w2 W) l
StartPagePrinter 在打印作业中指定一个新页的开始
2 z3 s5 Q. N) ~% H9 M4 aWritePrinter 将发送目录中的数据写入打印机 5 R7 |4 K5 J" x8 N( H% N) J* H8 \
5. API之文本和字体函数
5 U( K( [3 [7 k+ U6 q# Y- a3 t/ HAddFontResource 在Windows系统中添加一种字体资源
8 D! D: `/ ^5 t$ D4 ?) d2 KCreateFont 用指定的属性创建一种逻辑字体
, }' w3 S- c* V: qCreateFontIndirect 用指定的属性创建一种逻辑字体
! J7 l, I$ r# T1 r3 W* ]CreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统 / V) u* h9 v" ]
DrawText 将文本描绘到指定的矩形中
, ^5 H! i6 j' Q% f2 j: b, @/ [DrawTextEx 与DrawText相似,只是加入了更多的功能
& G2 Z G. A* g ^EnumFontFamilies 列举指定设备可用的字体 , |* ` o" c' g) f: \ L
EnumFontFamiliesEx 列举指定设备可用的字体
- \; w- j" a: o$ oEnumFonts 列举指定设备可用的字体
- m/ A% s, \ R. EExtTextOut 经过扩展的文本描绘函数。也请参考SetTextAlign函数 ! l$ W7 O; W. h1 r) c7 y, E$ r$ v
GetAspectRatioFilterEx 用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小
l3 N2 q9 m9 |GetCharABCWidths 判断TureType字体中一个或多个字符的A-B-C大小
5 \1 u, x/ j: Z( OGetCharABCWidthsFloat 查询一种字体中一个或多个字符的A-B-C尺寸 3 V- w$ l2 d- _7 Z
GetCharacterPlacement 该函数用于了解如何用一个给定的字符显示一个字串 + F! K5 W# w1 `2 u) Y1 f
GetCharWidth 调查字体中一个或多个字符的宽度 / @( G! y" G7 O& O
GetFontData 接收一种可缩放字体文件的数据 # r0 h& `1 b6 f! T. S& O% v. m& k# x
GetFontLanguageInfo 返回目前选入指定设备场景中的字体的信息
5 q" {/ I5 S: r# b7 CGetGlyphOutline 取得TureType字体中构成一个字符的曲线信息
8 s0 H# Y% c4 IGetKerningPairs 取得指定字体的字距信息
6 o0 K% z. T7 R" kGetOutlineTextMetrics 接收与TureType字体内部特征有关的详细信息
8 E6 S' Q( {1 t2 }/ \) Y+ LGetRasterizerCaps 了解系统是否有能力支持可缩放的字体
- b. v0 v' x5 E3 w: O0 y1 G5 C8 UGetTabbedTextExtent 判断一个字串占据的范围,同时考虑制表站扩充的因素
1 ~0 `# I+ u, _2 O# A* @GetTextAlign 接收一个设备场景当前的文本对齐标志
9 e0 p3 @! J, U5 m/ aGetTextCharacterExtra 判断额外字符间距的当前值
1 o4 q1 @: B1 Y6 GGetTextCharset 接收当前选入指定设备场景的字体的字符集标识符
# r3 m6 r' k4 ~) qGetTextCharsetInfo 获取与当前选定字体的字符集有关的详细信息
5 h3 X" ~& B5 L+ gGetTextColor 判断当前字体颜色。通常也称为"前景色" * W' ^9 F; Q- D& B/ `1 T
GetTextExtentExPoint 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息 ' N1 W0 }+ Q }! f4 F
GetTextExtentPoint 判断一个字串的大小(范围) $ {" e9 I1 t: Z
GetTextFace 获取一种字体的字样名 7 \- b: J+ N; F6 @7 V4 a
GetTextMetrics 获取与选入一种设备场景的物理字体有关的信息
/ F- f# I4 y/ D& b$ RGrayString 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态 " a! t8 p9 @' f
PolyTextOut 描绘一系列字串
+ I2 E3 z! r3 Z- Y R g5 }RemoveFontResource 从Windows系统中删除一种字体资源
$ m8 ?6 {' M! I JSetMapperFlags Windows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体
1 Q: \# C6 [; U p: kSetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置
2 D& f) j- z* HSetTextCharacterExtra 描绘文本的时候,指定要在字符间插入的额外间距 4 g1 w/ V' _ g8 `5 e8 Z. o3 p% S
SetTextColor 设置当前文本颜色。这种颜色也称为"前景色" 8 P9 X1 Z# S2 Y
SetTextJustification 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理
2 `& H. a" G2 ] `$ TTabbedTextOut 支持制表站的一个文本描绘函数 . z" A5 z. D* K) e% E; v' j) ]# e
TextOut 文本绘图函数 " ~+ A* u% {+ t# {2 V2 t
WINGDIAPI BOOL WINAPI TextOut(% e" s5 t( f$ I2 ]" @: R/ c
HDC, //输出设备& w. W: t& j" f# P3 C# e+ t- Q! U
int, //输出的横坐标! C" N1 }: `( Q0 C
int, //纵坐标
. h' ~. `: d6 J: @" K! c2 \LPCSTR, //输出的文本str, f( E0 ^8 G! y: r& c& I! V
int); //文本的长度:lstrlen(str)
- I2 [2 k/ ~7 ~6. API之菜单函数 $ N( ~% M- ]1 \
AppendMenu 在指定的菜单里添加一个菜单项
W; K" E. Z( T4 T, r1 c5 nCheckMenuItem 复选或撤消复选指定的菜单条目
8 ~2 Z7 t$ W$ n3 ]0 K0 nCheckMenuRadioItem 指定一个菜单条目被复选成"单选"项目 & P: M) Y7 E. K% g' g! f
CreateMenu 创建新菜单 + A) @" O% G, k; `6 a
CreatePopupMenu 创建一个空的弹出式菜单
0 `3 V( ?% t! C; d/ P3 FDeleteMenu 删除指定的菜单条目
$ F! g3 s* z; O& A) h2 x) ~. yDestroyMenu 删除指定的菜单
( O2 c% e" ^( h6 c6 |8 ~" z$ EDrawMenuBar 为指定的窗口重画菜单
1 S/ {' I' \, O. R# D k) rEnableMenuItem 允许或禁止指定的菜单条目 2 c8 N8 r0 A; Q7 `" R' l# g
GetMenu 取得窗口中一个菜单的句柄 9 j2 S1 g3 r* K v/ Q- F
GetMenuCheckMarkDimensions 返回一个菜单复选符的大小
0 J8 Y4 s1 d3 l/ F k/ dGetMenuContextHelpId 取得一个菜单的帮助场景ID ' F: J& D" y5 k! r* D3 U: @2 X
GetMenuDefaultItem 判断菜单中的哪个条目是默认条目 4 B4 e5 Q `8 E* I. ^' z. Z1 {& S- O+ ~
GetMenuItemCount 返回菜单中条目(菜单项)的数量 & c3 `% B9 J' `- J5 q1 @7 \- N
GetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID
3 Z/ s, G$ i! \' y% _; XGetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息
1 i0 x6 |5 G8 BGetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息
% _; O# z' A' c3 w& C# VGetMenuState 取得与指定菜单条目状态有关的信息
( V6 C/ E P" q6 E6 \( ]GetMenuString 取得指定菜单条目的字串 . S5 g3 J7 C8 y" p3 P
GetSubMenu 取得一个弹出式菜单的句柄,它位于菜单中指定的位置 1 C* L+ p K V/ k- W' ]
GetSystemMenu 取得指定窗口的系统菜单的句柄 0 W) q3 R M( h9 v5 g. e" u
HiliteMenuItem 控制顶级菜单条目的加亮显示状态
' @, M3 }! y! OInsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动
3 @/ \ c2 }1 K4 Z% m7 q; UInsertMenuItem 插入一个新菜单条目 7 O7 v2 E d) V1 S! @, _
IsMenu 判断指定的句柄是否为一个菜单的句柄 / |+ h' S- L! V4 }
LoadMenu 从指定的模块或应用程序实例中载入一个菜单 C. I. S& U( f: H
LoadMenuIndirect 载入一个菜单 / _7 a3 u- W- l, }" z5 o0 e/ s
MenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点 " M) c) k, Z' f
ModifyMenu 改变菜单条目
" x5 u1 N# B" w$ ~$ h1 hRemoveMenu 删除指定的菜单条目
9 `4 Y- P- F5 USetMenu 设置窗口菜单
9 P( R% p4 ?" ^( |$ ZSetMenuContextHelpId 设置一个菜单的帮助场景ID 5 y2 j" H5 X. J }
SetMenuDefaultItem 将一个菜单条目设为默认条目 2 I0 u7 e6 A X4 X) F
SetMenuItemBitmaps 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√) ( L4 b% f. ^6 A; B4 P* K9 Z
SetMenuItemInfo 为一个菜单条目设置指定的信息
$ `& W) f" c* w1 D( x' oTrackPopupMenu 在屏幕的任意地方显示一个弹出式菜单
" X) k7 s0 q& t/ j7 S/ J1 ^" }TrackPopupMenuEx 与TrackPopupMenu相似,只是它提供了额外的功能 1 D5 J: R: c' V4 B; _
7. API之位图、图标和光栅运算函数 % j* J' e/ B L2 \0 b- u, R+ i
BitBlt 将一幅位图从一个设备场景复制到另一个0 a; L# x' c8 E
WINGDIAPI BOOL WINAPI BitBlt(: S7 ~) P' N2 y
HDC, //目标HDC
1 i3 S9 k0 s3 uint, //X1+ a* `1 E6 O l, ]
int, //Y1" s# u; J; C r0 V# O1 N4 |' c
int, //width: I5 L) l/ p( \( ~8 u' g; o: ]6 J
int, //height
& q2 O& l9 z7 N/ r$ h5 f) H2 u6 PHDC, //源HDC0 ]7 r; S" i5 Q2 a
int, //右边的距离
% R! T6 B( Y/ d+ a& D% y! @+ aint, //??
7 ]" \. c' I- b9 b3 F* f3 fDWORD); //拷贝方式:SRCCOPY|SRCPAINT|SRCAND|SRCINVERT|RCERASE|NOTSRCCOPY|NOTSRCERASE|MERGECOPY|MERGEPAINT|
: t& i: D6 O4 m& S" l# ]/ JPATCOPY|PATPAINT|PATINVERT|DSTINVERT|BLACKNESS|WHITENESS; w, L& ^3 f9 R) g1 N. H, ^ t x
CopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序
4 E5 x. l" |& n! zCopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作
, {: z3 o3 Y+ r. |2 N9 U7 N$ VCreateBitmap 按照规定的格式创建一幅与设备有关位图
- s$ g$ g/ D, n& f2 J& {CreateBitmapIndirect 创建一幅与设备有关位图 ! r6 M6 C4 |- _; m' l2 i( b/ ^
CreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容 B* `9 c9 d" Q4 S
CreateCursor 创建一个鼠标指针
5 a" Q" x& `% D6 W: X4 E: \ R' LCreateDIBitmap 根据一幅与设备无关的位图创建一幅与设备有关的位图 6 L4 O: K; K8 E9 Y: \# { O$ G
CreateDIBSection 创建一个DIBSection
- _2 h3 A$ ]2 S8 ]! C; qCreateIcon 创建一个图标
& [$ u* A( h/ y: HCreateIconIndirect 创建一个图标 # g; F) i% G4 _, K* d+ b
DestroyCursor 清除指定的鼠标指针,并释放它占用的所有系统资源
0 t. S9 C# |9 m: J0 Q3 @4 M7 ^DestroyIcon 清除图标
8 c: E/ l5 T5 @, [; ?( aDrawIcon 在指定的位置画一个图标 4 f( G3 K! R' t0 V5 T& N
DrawIconEx 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能
1 R4 [7 {% q0 M$ P$ y9 g$ gExtractAssociatedIcon 判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之 4 `6 |# y- _/ O, X3 @
ExtractIcon 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来 3 R& R9 v- x! ^% b& r
GetBitmapBits 将来自位图的二进制位复制到一个缓冲区 ( V# A2 l0 r( E* e, r% W( R' w! k
GetBitmapDimensionEx 取得一幅位图的宽度和高度
6 m# m' E9 C+ W" y4 ?, WGetDIBColorTable 从选入设备场景的DIBSection中取得颜色表信息
! E% T5 }; q x2 \8 GGetDIBits 将来自一幅位图的二进制位复制到一幅与设备无关的位图里 , |6 t* f9 m/ x" k3 @! j! @" }
GetIconInfo 取得与图标有关的信息
$ N- X+ n- S- ~9 }) c' ?( M& zGetStretchBltMode 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式 h$ x8 q, i, h6 r! M! b S: S
LoadBitmap 从指定的模块或应用程序实例中载入一幅位图 ! l2 s9 B$ h1 `/ B% A+ v) G
LoadCursor 从指定的模块或应用程序实例中载入一个鼠标指针
8 t; V& `* o+ dLoadCursorFromFile 在一个指针文件或一个动画指针文件的基础上创建一个指针 + q2 b! q% g, Y$ K" U+ u
LoadIcon 从指定的模块或应用程序实例中载入一个图标 8 `: o& O. |3 l6 p5 F) ^* |* U3 m
LoadImage 载入一个位图、图标或指针
9 n2 S% `' {* ~5 S3 ~) b' n9 hHANDLE LoadImageA(( O! o/ s/ Q9 Y1 ]: w( U
HINSTANCE, //当前实例句柄:AfxGetInstanceHandle()
2 ]1 T- l: y+ w/ f( v LPCSTR, //资源所在的目录:c:\help.bmp" l4 [3 A" L, n" ?
UINT, //类型:IMAGE_BITMAP|IMAGE_ICON|IMAGE_CURSOR|IMAGE_ENHMETAFILE9 M$ n4 U1 m8 x3 y) }, g
int, //* z6 _" F+ f- t; c
int, //
7 W. n$ Y" ^9 f3 [! BUINT); //风格:LR_DEFAULTCOLOR|LR_MONOCHROME|LR_COLOR|LR_COPYRETURNORG|9 Q7 U& Z- k8 K; u
R_COPYDELETEORG|LR_LOADFROMFILE|LR_LOADTRANSPARENT|LR_DEFAULTSIZE|LR_VGACOLOR|
: L) B0 ~+ f6 \) MLR_LOADMAP3DCOLORS|LR_CREATEDIBSECTION|LR_COPYFROMRESOURCE|LR_SHARED
: V: c: F% _9 r8 e8 zMaskBlt 执行复杂的图象传输,同时进行掩模(MASK)处理
+ w0 x( ?( F3 u! [- Y) {. j* J) s3 {PatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景
. n. i+ q6 p3 M- L2 B) UPlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理
0 o9 @0 |! a1 L4 S; p2 vSetBitmapBits 将来自缓冲区的二进制位复制到一幅位图
3 w* q: ^# T1 \: b1 }SetBitmapDimensionEx 设置一幅位图的宽度。以一毫米的十分之一为单位 ( p# }# ]9 U4 r; h
SetDIBColorTable 设置选入设备场景的一个DIBSection的颜色表信息 ' s% e) N/ Z% |. n" }
SetDIBits 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里 7 E* |% J! b; S: u, Q4 @# ~4 A
SetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备
" t) `) ?0 s2 I( }. I1 \! ySetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式 + m. b& \4 B5 E; a: |# K
StretchBlt 将一幅位图从一个设备场景复制到另一个
* x/ Q( b/ }( i1 iStretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景
6 l0 o7 w, m# x8. API之绘图函数 , ?! x' @ ]3 [, i
AbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作
' ~6 |! n5 J& ]5 ^% X5 |/ cAngleArc 用一个连接弧画一条线
# W& [# A3 u: l* c& qArc 画一个圆弧
6 h6 D3 R( L6 |+ Z' M3 ?BeginPath 启动一个路径分支 % O4 ^* E( z f( \) V" N6 X
CancelDC 取消另一个线程里的长时间绘图操作
- o, `) O8 C, C" KChord 画一个弦
4 R6 o' a0 X! S7 HCloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄 1 X3 e. e' I/ o. K# M3 ]
CloseFigure 描绘到一个路径时,关闭当前打开的图形 D3 [2 ~1 O& d- x$ h) ]
CloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄 2 t* [* ^ [. X; y( o
CopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝)
( C7 p( ?& |; U% I ]CopyMetaFile 制作指定(标准)图元文件的一个副本
9 }- N! r0 d F( ~" v- ]' [/ _8 BCreateBrushIndirect 在一个LOGBRUSH数据结构的基础上创建一个刷子 $ i4 H7 E: V7 x. @1 z
CreateDIBPatternBrush 用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案)
( A- _6 h M3 _" A: ~" w" X& h. ^$ rCreateEnhMetaFile 创建一个增强型的图元文件设备场景 4 L( K" V1 D6 L2 o; q
CreateHatchBrush 创建带有阴影图案的一个刷子 % ^3 q1 ]& M$ D$ U% n
CreateMetaFile 创建一个图元文件设备场景 # }; Q! b c) l- }8 I! u
CreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子 ' ?6 e' u* V. b% c& V5 a
CreatePen 用指定的样式、宽度和颜色创建一个画笔 7 W/ m- u: ]% ]
CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔 ' Q; O4 {/ w( ]& z9 m! ]
CreateSolidBrush 用纯色创建一个刷子
4 p* |- G& w, }8 V8 ^DeleteEnhMetaFile 删除指定的增强型图元文件
% E$ K$ {+ n) n2 t2 Q7 x2 HDeleteMetaFile 删除指定的图元文件 / j. ~6 s1 T" U9 R; e
WINGDIAPI BOOL WINAPI DeleteObject(HGDIOBJ) 删除GDI对象,对象使用的所有系统资源都会被释放 l5 A8 L, m" b3 Z+ E5 s
DrawEdge 用指定的样式描绘一个矩形的边框
0 c6 Y" u: r& f9 Y0 p- g5 uDrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序
5 w$ ^/ e- E! cDrawFocusRect 画一个焦点矩形 ' B. E! _" O5 a8 d$ J5 O
DrawFrameControl 描绘一个标准控件
3 X2 q* o) ^, o: y. RDrawState 为一幅图象或绘图操作应用各式各样的效果
* @9 I! J6 V4 v3 B P& x& O( [& `Ellipse 描绘一个椭圆,由指定的矩形围绕 ) e% o0 V7 V; B A: v
EndPath 停止定义一个路径
9 p$ H) \" [4 B( [- w( IEnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录 0 V4 c# `) Z# h! ~
EnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录
7 q7 `7 k y1 n4 z1 X5 wEnumObjects 枚举可随同指定设备场景使用的画笔和刷子
, ~3 S+ W* {( T; J2 P( h, HExtCreatePen 创建一个扩展画笔(装饰或几何) & e6 k Y' m3 v$ l
ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域
# q5 |6 v, T8 R7 b* K# [, n% iFillPath 关闭路径中任何打开的图形,并用当前刷子填充 1 P; Q9 r. C1 B, k% Q; e; z
FillRect 用指定的刷子填充一个矩形
5 ]% F3 Z/ B7 Q: ~3 DFlattenPath 将一个路径中的所有曲线都转换成线段
/ F6 h! R" p. aFloodFill 用当前选定的刷子在指定的设备场景中填充一个区域 C: k+ A& p' d% V) I$ b1 t/ P
FrameRect 用指定的刷子围绕一个矩形画一个边框 - y- @" H' N1 O& G! `+ P' [8 f
GdiComment 为指定的增强型图元文件设备场景添加一条注释信息
# _& v; E6 W. H7 @% m* P% iGdiFlush 执行任何未决的绘图操作
$ g# B" f5 n3 KGdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中 " M; n1 w$ M* T2 O4 p, F9 P
GdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列
: r1 i: } M# ^4 c* aGetArcDirection 画圆弧的时候,判断当前采用的绘图方向
: A, c h. ^! t# ]* e4 X2 ?GetBkColor 取得指定设备场景当前的背景颜色 . X8 Z8 U* n9 d) e4 E
GetBkMode 针对指定的设备场景,取得当前的背景填充模式
- \/ |4 V5 b) {+ v( v8 mGetBrushOrgEx 判断指定设备场景中当前选定刷子起点 v L9 \. ?" C9 F' O; z/ |/ ?
GetCurrentObject 获得指定类型的当前选定对象 1 M3 @1 X' z1 e+ Z! i
GetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置 $ F C( W" n8 [9 D% j0 _2 ~6 Q/ c
GetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄
9 J& l& o* u* \4 n. t5 kGetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里
: [4 s s+ j* E. a7 lGetEnhMetaFileDescription 返回对一个增强型图元文件的说明
' A" S" @9 H ^5 C, uGetEnhMetaFileHeader 取得增强型图元文件的图元文件头 & r3 K S; Q& Z: S
GetEnhMetaFilePaletteEntries 取得增强型图元文件的全部或部分调色板 ) z* S- v) w8 ?1 K4 {
GetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄
5 B7 r" j2 u4 q' K. K& H' R4 sGetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区 4 w$ [6 R2 I9 y4 v9 {4 }2 U8 N
GetMiterLimit 取得设备场景的斜率限制(Miter)设置 9 ?$ q9 J$ h* V, `3 ] ]
GetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色
! h1 k* C8 h2 k. r9 N: X8 {8 e0 lGetObjectAPI 取得对指定对象进行说明的一个结构
; a8 E& e8 O- s, ]GetObjectType 判断由指定句柄引用的GDI对象的类型 3 I3 }+ p$ ^# C, G6 j; D
GetPath 取得对当前路径进行定义的一系列数据
1 K* u) ?2 }3 O" N! N0 `" t+ [GetPixel 在指定的设备场景中取得一个像素的RGB值 c* {8 O5 o6 q0 {( _# }0 Q6 V
GetPolyFillMode 针对指定的设备场景,获得多边形填充模式 " J. k5 _$ a% Q! y/ {
GetROP2 针对指定的设备场景,取得当前的绘图模式 8 o: Z2 E% U! _( o8 h0 y
GetStockObject 取得一个固有对象(Stock)
* C# M ~; v4 O _, TGetSysColorBrush 为任何一种标准系统颜色取得一个刷子
4 u. j0 j: K* G$ L* q% WGetWinMetaFileBits 通过在一个缓冲区中填充用于标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件
: e) [ R7 j: z* G% RInvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形 2 }2 q, J2 K4 ^, M3 v9 O
LineDDA 枚举指定线段中的所有点 + O- \2 K, w: e; b7 l
LineTo 用当前画笔画一条线,从当前位置连到一个指定的点 $ B4 t, S Y+ H6 h& V
MoveToEx 为指定的设备场景指定一个新的当前画笔位置 6 K8 l5 i5 ?, g+ w
PaintDesk 在指定的设备场景中描绘桌面墙纸图案
- z3 l2 r4 j0 K% s9 ^PathToRegion 将当前选定的路径转换到一个区域里 * i. g; p) {% O
Pie 画一个饼图 3 ~0 [* ~) ]# x0 ?8 G. H, r* }
PlayEnhMetaFile 在指定的设备场景中画一个增强型图元文件
0 n0 d, \8 M8 p: z7 X# f" APlayEnhMetaFileRecord 回放单独一条增强型图元文件记录 4 h' j- H4 E4 G4 W5 p, b
PlayMetaFile 在指定的设备场景中回放一个图元文件 4 V0 A, W" w A8 s/ @9 Q( P: @. S$ `
PlayMetaFileRecord 回放来自图元文件的单条记录 . [- h& W( d/ y( Q6 B; J7 V
PolyBezier 描绘一条或多条贝塞尔(Bezier)曲线
, s9 A2 s! L! A W& E3 n$ S% jPolyDraw 描绘一条复杂的曲线,由线段及贝塞尔曲线组成
- Q% A0 }0 c1 ]+ _0 T( qPolygon 描绘一个多边形
, j2 m+ M+ \% x6 s8 C3 nPolyline 用当前画笔描绘一系列线段
; L: G+ u, N2 B5 g& sPolyPolygon 用当前选定画笔描绘两个或多个多边形
0 y/ z' ~$ d0 o& G! q+ m/ `PolyPolyline 用当前选定画笔描绘两个或多个多边形
% N7 y" g2 O% f9 k. V" j! k! x# I+ }- NRectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充 ( g! M( p, J9 k* `" i: w% X
RoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充 ; p) B' ^' a, A: X) Z6 S$ N* K
SelectClipPath 将设备场景当前的路径合并到剪切区域里
) ]4 c3 \( V* I7 C$ |: ^% ZSelectObject 为当前设备场景选择图形对象 : x9 |) _3 f; q
WINGDIAPI HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ);
# b6 O. ]8 B/ L$ wSetArcDirection 设置圆弧的描绘方向 ! q7 K. |3 L! G/ N+ g
SetBkColor 为指定的设备场景设置背景颜色 0 d3 r1 d& f% T# x1 n) [6 J
SetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式 X( d* V0 K( @, U# v1 ?# _
SetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点
7 R3 O: q3 K- t9 x+ o1 r6 E( iSetEnhMetaFileBits 用指定内存缓冲区内包含的数据创建一个增强型图元文件 6 U- A0 D2 _8 J( D/ j" I
SetMetaFileBitsEx 用包含在指定内存缓冲区内的数据结构创建一个图元文件 5 e; ?( k( U9 B& @$ d6 m
SetMiterLimit 设置设备场景当前的斜率限制 + `6 S N: y3 Q
SetPixel 在指定的设备场景中设置一个像素的RGB值
5 ^- N* ~0 D7 V5 U/ C# r9 j3 e: ZSetPixelV 在指定的设备场景中设置一个像素的RGB值
! ?: D4 a$ w# U, ~SetPolyFillMode 设置多边形的填充模式 2 G% a' B! g- d( | x' n
SetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致
$ E' m# i( D; \" h& h9 x) c% xSetWinMetaFileBits 将一个标准Windows图元文件转换成增强型图元文件
N1 J Y+ Z: K$ J2 k- `( OStrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域 # x$ v! V1 m; p0 G7 A+ x1 R2 C
StrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭
+ Q) D, t' z$ Y# n. X& ?/ sUnrealizeObject 将一个刷子对象选入设备场景之前,如刷子的起点准备用SetBrushOrgEx修改,则必须先调用本函数 9 l, q4 f6 g/ \8 {
WidenPath 根据选定画笔的宽度,重新定义当前选定的路径
- |8 [; T; s2 ?% i2 M) U9. API之设备场景函数
; X" g' s3 U4 J5 k$ ^; MCombineRgn 将两个区域组合为一个新区域 ! T4 X4 `* c( Q1 q
CombineTransform 驱动世界转换。它相当于依顺序进行两次转换
2 H4 F" Q3 o( k: b3 L4 ICreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景 : W" b) s* B! K( G7 T7 @4 w- H. q
CreateDC 为专门设备创建设备场景 0 ~5 d0 O# Y* `
CreateEllipticRgn 创建一个椭圆 , U% Q) P4 L9 V( x/ R! v0 i5 j
CreateEllipticRgnIndirect 创建一个内切于特定矩形的椭圆区域 & `( |" _5 V4 N% _5 ]/ z
CreateIC 为专用设备创建一个信息场景
8 P# h3 j3 M3 TCreatePolygonRgn 创建一个由一系列点围成的区域
+ m' J" d% _) W) ^CreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的 ) T: T( x e) D+ i- E) ]* z- ?+ }
CreateRectRgn 创建一个矩形区域
1 W0 _# k) W7 P. _& V% n' [( c$ UCreateRectRgnIndirect 创建一个矩形区域 - r" R- T# v, J/ Q
CreateRoundRectRgn 创建一个圆角矩形 5 [; P }) Q5 i4 s" h, X
DeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源 2 z; T7 F: ^! \8 U/ Q2 F
DPtoLP 将点阵从设备坐标转换到专用设备场景逻辑坐标
7 l, }/ t' o0 G) e' nEqualRgn 确定两个区域是否相等 ' s% `$ E8 G2 H( ^
ExcludeClipRect 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图 3 o6 C: M) H) |, Y2 F; j, r+ k' @! f
ExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域 % I: H4 j. d1 L* b
ExtCreateRegion 根据世界转换修改区域 . Y. W4 P. f3 W
ExtSelectClipRgn 将指定区域组合到设备场景的当前剪裁区 $ V4 d$ G! l8 f1 Z- o9 q3 Q( Z8 N
FillRgn 用指定刷子填充指定区域
- G E \0 Y/ LFrameRgn 用指定刷子围绕指定区域画一个外框
( I3 |" b9 C. t4 t+ A3 nGetBoundsRect 获取指定设备场景的边界矩形
2 {# u, B# X) Y; L) u& n+ rGetClipBox 获取完全包含指定设备场景剪裁区的最小矩形
7 M: C# M8 [! q" TGetClipRgn 获取设备场景当前剪裁区 ) v8 |& k+ j6 L: v7 J' d' r, D. U1 x
GetDC 获取指定窗口的设备场景 : x+ S% u, E9 Q, _3 h; S
GetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项 : e) q( b2 M, N& q) i v" `
GetDCOrgEx 获取指定设备场景起点位置(以屏幕坐标表示)
5 V! r/ a2 T; u/ v9 @! {GetDeviceCaps 根据指定设备场景代表的设备的功能返回信息 7 l1 }. C* N- B% ^7 h! k
GetGraphicsMode 确定是否允许增强图形模式(世界转换) 8 c7 B3 z1 g( l- Q( G
GetMapMode 为特定设备场景调入映象模式 * _7 _. R$ i- Q1 t5 f7 `/ E
GetRegionData 装入描述一个区域信息的RgnData结构或缓冲区 1 o- J. B4 Z t) x+ n
GetRgnBox 获取完全包含指定区域的最小矩形
6 i( j. U$ a- k3 d" u) XGetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新 & E( U P1 |9 L/ M/ L, H& s
GetViewportExtEx 获取设备场景视口(viewport)范围 6 w1 f$ p0 N$ K |& z1 p; H
GetViewportOrgEx 获取设备场景视口起点 " L- k# S$ s) j1 s
GetWindowDC 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景
/ t1 y4 `6 n" I/ G3 l0 D1 QGetWindowExtEx 获取指定设备场景的窗口范围
1 f5 t! z8 l, O' Z% B( fGetWindowOrgEx 获取指定设备场景的逻辑窗口的起点 6 k: X# u8 W8 n
GetWindowRgn 获取窗口区域
: \6 B) x) @* w5 O5 i# E- v, J6 N$ @. sGetWorldTransform 如果有世界转换,为设备场景获取当前世界转换 ) m4 i; ^2 V0 T) V% B
IntersectClipRect 为指定设备定义一个新的剪裁区
( D, @0 e0 A' [# N4 ~% KInvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画 * y. C1 Y- _# g7 z
InvertRgn 通过颠倒每个像素值反转设备场景指定区域
6 C, ^/ C, n' Q# V3 n% JLPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标
& @. B& P' @, Z8 Y; N2 P; C7 E8 `ModifyWorldTransform 根据指定的模式修改世界转换 1 o8 q3 B$ _9 {# u4 R
OffsetClipRgn 按指定量平移设备场景剪裁区 3 k2 {0 b& S% l% j5 v
OffsetRgn 按指定偏移量平移指定区域 ) z0 e, S. c$ f9 s' u2 I
OffsetViewportOrgEx 平移设备场景视口区域 - a$ {1 ^0 M! k" f2 I9 ]: V
OffsetWindowOrgEx 平移指定设备场景窗口起点
, q# Y1 |1 n6 PPaintRgn 用当前刷子背景色填充指定区域 ; W4 E) j, ^# {
PtInRegion 确定点是否在指定区域内 - k% q& w v& T9 m
PtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内) ) L7 |! `7 v! v$ V4 n( u$ K0 Z/ j
RectInRegion 确定矩形是否有部分在指定区域内
$ k% G; v9 a3 v) @6 jRectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内)
2 P+ u! [! R7 jReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景 - Y$ D- l% _# U2 b
RestoreDC 从设备场景堆栈恢复一个原先保存的设备场景
) A. C2 u2 a4 k: TSaveDC 将指定设备场景状态保存到Windows设备场景堆栈
1 L W5 R8 m: l+ SScaleViewportExtEx 缩放设备场景视口的范围
3 |2 f% C# l" W+ a! `* ~% ?ScaleWindowExtEx 缩放指定设备场景窗口范围
' j4 N; D; D( i1 }6 ]8 MScrollDC 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形
- B$ N0 ^2 n0 y7 Q! E% _SelectClipRgn 为指定设备场景选择新的剪裁区
2 N+ d; k; F+ h" g. U3 r) bSetBoundsRect 设置指定设备场景的边界矩形
. \+ Y' A- ]3 K% z3 `/ W% S- xSetGraphicsMode 允许或禁止增强图形模式,以提供某些支持(包括世界转换) $ x0 V+ p: w" r+ h
SetMapMode 设置指定设备场景的映射模式 5 S3 u7 d. U4 M0 a0 }
SetRectRgn 设置区域为指定的矩形 # J0 }4 M/ Z2 \. ]; R
SetViewportExtEx 设置设备场景视口范围 8 k; C; W- ^# K/ P: H
SetViewportOrgEx 设置设备场景视口起点 " X! u# t1 Q4 m( e
SetWindowExtEx 设置指定设备场景窗口范围
2 ?7 B; Y- y7 B" Z: lSetWindowOrgEx 设置指定设备场景窗口起点
. \5 ~$ [2 _% Q. w0 @8 \SetWindowRgn 设置窗口区域 5 }; f- z K+ N6 [1 r$ h
SetWorldTransform 设置世界转换 2 M. b$ b. W0 H0 S U3 W" j* Y/ F; n
ValidateRgn 激活窗口中指定区域,把它从刷新区移走 7 M( Q/ N& y" r( U& X
WindowFromDC 取回与某一设备场景相关的窗口的句柄 & n- f" }" }7 z+ `3 U5 Q& z
10. API之硬件与系统函数 ' T- B" s8 V( q$ l G
ActivateKeyboardLayout 激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义 3 k/ N. d0 z( r# }
Beep 用于生成简单的声音 ( A9 C0 l5 w. R, U( M6 l) _% i
CharToOem 将一个字串从ANSI字符集转换到OEM字符集
' X& w! v. H8 n) BClipCursor 将指针限制到指定区域
% Z- X3 c' S: |ConvertDefaultLocale 将一个特殊的地方标识符转换成真实的地方ID
8 e3 c( [0 W' }$ aCreateCaret 根据指定的信息创建一个插入符(光标),并将它选定为指定窗口的默认插入符 & V P, _2 {/ |: R2 ~4 u
DestroyCaret 清除(破坏)一个插入符
! ]) a2 o. l+ K+ {: A+ O S" EEnumCalendarInfo 枚举在指定"地方"环境中可用的日历信息 ) c2 ~. H% l/ L* a0 a4 @. A) U/ D
EnumDateFormats 列举指定的"当地"设置中可用的长、短日期格式
?$ u( e0 @, r( z, DEnumSystemCodePages 枚举系统中已安装或支持的代码页 + m6 ~% _# k1 T7 M
EnumSystemLocales 枚举系统已经安装或提供支持的"地方"设置
0 @4 ~. T) _+ K9 b C# x; jEnumTimeFormats 枚举一个指定的地方适用的时间格式 4 B# i& O5 W5 }
ExitWindowsEx 退出windows,并用特定的选项重新启动 ! h! {- z" x- O0 @
WINUSERAPI BOOL WINAPI ExitWindowsEx(
( H3 q2 \. i$ t0 D. m& B$ a7 jUINT uFlags, //EWX_LOGOFF|EWX_REBOOT|EWX_FORCE|EWX_POWEROFF|EWX_FORCEIFHUNG
5 f6 n/ d9 C2 ]- `6 x) g DWORD dwReserved); //0
9 {* b' c x* P( v% ~8 t( {+ d- c7 QExpandEnvironmentStrings 扩充环境字串 2 b7 v3 d2 I% o8 P
FreeEnvironmentStrings 翻译指定的环境字串块 J F8 J9 P( P+ R
GetACP 判断目前正在生效的ANSI代码页
4 S7 v8 ? w+ K jGetAsyncKeyState 判断函数调用时指定虚拟键的状态 & ~; J- Y: C2 ?0 x3 Q. Q) \4 G7 H3 G" s- l
GetCaretBlinkTime 判断插入符光标的闪烁频率
) E. k) N2 X9 j" x( Q; r. M& IGetCaretPos 判断插入符的当前位置 + O+ R3 K1 y6 j; Q' t
GetClipCursor 取得一个矩形,用于描述目前为鼠标指针规定的剪切区域 8 B2 M8 d* I6 ` x! X
GetCommandLine 获得指向当前命令行缓冲区的一个指针 e, y# |+ d5 g8 ?! T
GetComputerName 取得这台计算机的名称 . U$ u9 U5 b/ H+ k% G
GetCPInfo 取得与指定代码页有关的信息 # j1 U2 h; k( r& S
GetCurrencyFormat 针对指定的"地方"设置,根据货币格式格式化一个数字 # A7 J; \: ^# w; k3 z8 L8 O
GetCursor 获取目前选择的鼠标指针的句柄 $ v+ r0 W; ~# g2 ^2 R* y
GetCursorPos 获取鼠标指针的当前位置
0 X" K$ p4 p7 |GetDateFormat 针对指定的"当地"格式,对一个系统日期进行格式化 " B% i" L: _' C* R
GetDoubleClickTime 判断连续两次鼠标单击之间会被处理成双击事件的间隔时间
& u! B+ t0 N% B/ d4 H& OGetEnvironmentStrings 为包含了当前环境字串设置的一个内存块分配和返回一个句柄 ( g; x' z* i0 `8 B) u
GetEnvironmentVariable 取得一个环境变量的值 % N& w2 w2 f) ~) q0 |
GetInputState 判断是否存在任何待决(等待处理)的鼠标或键盘事件 ; @" S- c1 e/ k/ X5 I$ F. }) m
GetKBCodePage 由GetOEMCP取代,两者功能完全相同
+ c/ p4 Y0 F7 u6 u( A# e& vGetKeyboardLayout 取得一个句柄,描述指定应用程序的键盘布局 " p ?; ^. N- U' e6 L9 W
GetKeyboardLayoutList 获得系统适用的所有键盘布局的一个列表 2 Y, y8 }& @1 n$ u5 K% a
GetKeyboardLayoutName 取得当前活动键盘布局的名称
% b' B1 y% F/ }: z9 s6 g5 j& qGetKeyboardState 取得键盘上每个虚拟键当前的状态
4 T& i) @/ r3 a+ z ~; Q! H+ iGetKeyboardType 了解与正在使用的键盘有关的信息
$ n x6 Z0 J9 M) A) W, a( kGetKeyNameText 在给出扫描码的前提下,判断键名
9 l% }' N" s- t, Z% q, RGetKeyState 针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态 + r) j$ d+ v0 W" f5 E
GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息
$ Y* i) L% l* B: ?' E3 O/ oGetLocaleInfo 取得与指定"地方"有关的信息 - c& i% D* P4 L; x4 z4 U
GetLocalTime 取得本地日期和时间 3 P, g! R6 l$ e: _) v: S
GetNumberFormat 针对指定的"地方",按特定的格式格式化一个数字 * O' L" }3 ?. k7 l: m# u5 _
GetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页 3 `7 y8 e3 G8 v% h% Y
GetQueueStatus 判断应用程序消息队列中待决(等待处理)的消息类型
' ?) c; V1 \4 q0 G4 S* FGetSysColor 判断指定windows显示对象的颜色
% c2 p4 }: z, P; FGetSystemDefaultLangID 取得系统的默认语言ID
: W; @; C' x: V* hGetSystemDefaultLCID 取得当前的默认系统"地方"
6 z- J: O- Q' V. u8 n/ L J' rGetSystemInfo 取得与底层硬件平台有关的信息
s# I# t- [ n# C5 j3 P! qGetSystemMetrics 返回与windows环境有关的信息 . H1 g5 n$ f4 X7 ~. S9 n+ p+ E
GetSystemPowerStatus 获得与当前系统电源状态有关的信息 * }6 U2 u* @/ _2 v
GetSystemTime 取得当前系统时间,这个时间采用的是"协同世界时间"(即UTC,也叫做GMT)格式 4 \# Q' C0 t$ ]
GetSystemTimeAdjustment 使内部系统时钟与一个外部的时钟信号源同步
# N/ m0 k* T, k+ {8 P- `# TGetThreadLocale 取得当前线程的地方ID ! [* s0 _. ~( r c( b
GetTickCount 用于获取自windows启动以来经历的时间长度(毫秒)
. \8 U) j: ^; A) _1 ^GetTimeFormat 针对当前指定的"地方",按特定的格式格式化一个系统时间 f+ m2 c5 ]6 @1 D- Q' E; b
GetTimeZoneInformation 取得与系统时区设置有关的信息 4 B/ C# W) \7 u8 I, }9 Y6 C
GetUserDefaultLangID 为当前用户取得默认语言ID , W2 ?3 z& m% W3 }
GetUserDefaultLCID 取得当前用户的默认"地方"设置
( y" p0 \2 Q: `$ R$ A8 ]3 i2 JGetUserName 取得当前用户的名字 f* u0 ~ V# y W$ d" e0 u
GetVersion 判断当前运行的Windows和DOS版本 5 B( b4 L( Z* n5 c
GetVersionEx 取得与平台和操作系统有关的版本信息
: _6 f# n3 c9 A! [1 DHideCaret 在指定的窗口隐藏插入符(光标) - K% e& K* ?* h
IsValidCodePage 判断一个代码页是否有效 q: g# U+ _9 v& o7 F, f
IsValidLocale 判断地方标识符是否有效 7 X7 i) w; z$ l8 w3 ]! ^
keybd_event 这个函数模拟了键盘行动
* D3 |6 P" v- C: GLoadKeyboardLayout 载入一个键盘布局 6 r5 S* z% V6 J5 ^
MapVirtualKey 根据指定的映射类型,执行不同的扫描码和字符转换 - u( w4 {% q5 v" l+ r, V9 b
MapVirtualKeyEx 根据指定的映射类型,执行不同的扫描码和字符转换
) E: x2 J. E6 P) T$ c% G* A9 PMessageBeep 播放一个系统声音。系统声音的分配方案是在控制面板里决定的
9 f+ q) S! R+ l( ^8 Lmouse_event 模拟一次鼠标事件
1 k+ {" h, U; I, P% @3 YOemKeyScan 判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态 ) p0 _8 ?5 f; |0 A0 ?
OemToChar 将OEM字符集的一个字串转换到ANSI字符集
* C2 Y, A. Y* L$ q7 Y8 b0 }5 b9 iSetCaretBlinkTime 指定插入符(光标)的闪烁频率 / @6 C$ ^, o6 K2 Z
SetCaretPos 指定插入符的位置
" [6 o" ` i2 }% s1 d' C+ ySetComputerName 设置新的计算机名 . Q, g2 ]" {9 b& C8 S
SetCursor 将指定的鼠标指针设为当前指针 % `8 d9 l6 P/ L& R6 B# l
SetCursorPos 设置指针的位置
7 h% [: A& T% ?3 I0 l' HSetDoubleClickTime 设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间
. B/ ~' h0 R4 `SetEnvironmentVariable 将一个环境变量设为指定的值
6 F6 U% b* x! I2 n3 ]SetKeyboardState 设置每个虚拟键当前在键盘上的状态 0 a% B3 y5 G8 n- N
SetLocaleInfo 改变用户"地方"设置信息
- _2 t' F5 u m3 [: S; r) ZSetLocalTime 设置当前地方时间
& K& h9 z4 c! m7 v# ySetSysColors 设置指定窗口显示对象的颜色
. O u) k- `/ [; e% j3 aSetSystemCursor 改变任何一个标准系统指针
5 F( E$ y5 k h, i6 T" m; |SetSystemTime 设置当前系统时间
0 O% P" Z3 f6 {2 i. dSetSystemTimeAdjustment 定时添加一个校准值使内部系统时钟与一个外部的时钟信号源同步 8 R5 i# }7 e) x
SetThreadLocale 为当前线程设置地方 " c% o7 I4 q/ t
SetTimeZoneInformation 设置系统时区信息 % ]3 J y5 K5 m7 v3 X A; ^
ShowCaret 在指定的窗口里显示插入符(光标) % a# P% t. A: c2 _
ShowCursor 控制鼠标指针的可视性 2 P& c8 l5 \1 O2 i% \
SwapMouseButton 决定是否互换鼠标左右键的功能 E) k! H) A% k+ g+ l
SystemParametersInfo 获取和设置数量众多的windows系统参数 . a8 N) Y% Q# C
SystemTimeToTzSpecificLocalTime 将系统时间转换成地方时间
' |7 a2 o* n1 S/ R& f+ aToAscii 根据当前的扫描码和键盘信息,将一个虚拟键转换成ASCII字符
- i. X& U5 j5 T$ P' ?$ g) i$ rToUnicode 根据当前的扫描码和键盘信息,将一个虚拟键转换成Unicode字符 " H R& I- Q1 Z1 a# ~/ ?* K4 W
UnloadKeyboardLayout 卸载指定的键盘布局 6 G. z3 f' h7 q/ }9 |
VkKeyScan 针对Windows字符集中一个ASCII字符,判断虚拟键码和Shift键的状态 , a4 v: Y2 b( Y8 @+ o l
11. API之进程和线程函数
" [. [1 j( o, U) j( r ~CancelWaitableTimer 这个函数用于取消一个可以等待下去的计时器操作
5 V# s, ~% k" h. j7 c8 bCallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用 # G6 Z6 ^) m/ Y
ConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个命名管道连接
t0 `: V/ l) X$ ^CreateEvent 创建一个事件对象
; A4 \! [+ ?! r, w8 A7 r ~CreateMailslot 创建一个邮路。返回的句柄由邮路服务器使用(收件人)
5 l6 x* y) J: O; yCreateMutex 创建一个互斥体(MUTEX) 0 C! y5 {" W9 Z R8 {7 l
CreateNamedPipe 创建一个命名管道。返回的句柄由管道的服务器端使用 : A! W9 e' L2 Q' W- |
CreatePipe 创建一个匿名管道 F+ v. a' m. h4 ]
CreateProcess 创建一个新进程(比如执行一个程序)
9 U; Q9 f( t( L$ R" A( nCreateSemaphore 创建一个新的信号机 ; ^6 b' X$ }2 m3 X
CreateWaitableTimer 创建一个可等待的计时器对象 , P8 Y" s3 ] s! d; d( D& ?
DisconnectNamedPipe 断开一个客户与一个命名管道的连接 ; \* \# Q% d6 {( ~
DuplicateHandle 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄 5 g5 Z/ j( V+ G6 o! `
ExitProcess 中止一个进程
: L, s* E3 U- m& O, X" PFindCloseChangeNotification 关闭一个改动通知对象
' ?/ c. D% v5 t8 ?# V* H+ m1 W, zFindExecutable 查找与一个指定文件关联在一起的程序的文件名 2 K8 F+ I" e# u7 k; c9 B
FindFirstChangeNotification 创建一个文件通知对象。该对象用于监视文件系统发生的变化
9 b+ |3 t9 _( @9 @. gFindNextChangeNotification 重设一个文件改变通知对象,令其继续监视下一次变化 5 Y) i7 t* j0 h7 L8 Y! R+ j" q$ d0 K$ m( q
FreeLibrary 释放指定的动态链接库 8 u! S6 V: _) }% I
GetCurrentProcess 获取当前进程的一个伪句柄
6 {/ Q! ?: P6 A9 i, aGetCurrentProcessId 获取当前进程一个唯一的标识符 4 ^; O, w0 K" ?; W: [" n$ x
GetCurrentThread 获取当前线程的一个伪句柄 / F4 g# B% P1 W( E
GetCurrentThreadId 获取当前线程一个唯一的线程标识符 5 M5 s1 O& z# P% e5 h2 C
GetExitCodeProces 获取一个已中断进程的退出代码 1 ~5 S& o6 w, T; _* L# h7 ?+ w
GetExitCodeThread 获取一个已中止线程的退出代码
6 F: ^" a- A4 xGetHandleInformation 获取与一个系统对象句柄有关的信息 3 b+ Z$ F" t' r( Y% I3 D
GetMailslotInfo 获取与一个邮路有关的信息
- [) N1 Q8 q. Z* g9 z, C' RGetModuleFileName 获取一个已装载模板的完整路径名称 3 V7 |2 O9 ^! s0 t% |9 `7 R: ?: A: s
GetModuleHandle 获取一个应用程序或动态链接库的模块句柄 h" v, ]4 g. S" R3 D; T
GetModuleHandleA(LPCSTR lpModuleName);
" |' W' w4 k- I( }' I$ u' ?GetPriorityClass 获取特定进程的优先级别
- T; W7 g0 L: ^GetProcessShutdownParameters 调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况
6 D) a% t" F4 F; U; T; @4 eGetProcessTimes 获取与一个进程的经过时间有关的信息 ! ~- O( _! |1 P# ~8 S+ j4 n
GetProcessWorkingSetSize 了解一个应用程序在运行过程中实际向它交付了多大容量的内存
6 W: X0 v' N1 p* Z/ L; EGetSartupInfo 获取一个进程的启动信息
4 h2 e# C; `- \( g& O3 E. ^! ZGetThreadPriority 获取特定线程的优先级别 ' s$ B; \! U) E6 Q, D
GetTheardTimes 获取与一个线程的经过时间有关的信息
1 U8 ^4 n. W* N* u/ SGetWindowThreadProcessId 获取与指定窗口关联在一起的一个进程和线程标识符
/ j) }% A" T9 E9 WLoadLibrary 载入指定的动态链接库,并将它映射到当前进程使用的地址空间
7 c- g; X/ {$ z% [LoadLibraryEx 装载指定的动态链接库,并为当前进程把它映射到地址空间
# L. j V, m B& X3 X( z2 y% WLoadModule 载入一个Windows应用程序,并在指定的环境中运行
" w4 v- f6 t8 X. I$ z8 QMsgWaitForMultipleObjects 等侯单个对象或一系列对象发出信号。如返回条件已经满足,则立即返回
2 Q' b# D# i# J& H+ Q+ F9 G$ ZSetPriorityClass 设置一个进程的优先级别 7 R/ y8 Q9 I3 k r5 h$ ?. l. y
SetProcessShutdownParameters 在系统关闭期间,为指定进程设置他相对于其它程序的关闭顺序 + a4 B, l2 c* J; r3 Z' T
SetProcessWorkingSetSize 设置操作系统实际划分给进程使用的内存容量 1 L6 k4 a1 X3 ~( n7 [
SetThreadPriority 设定线程的优先级别
9 V# J3 T# v- `4 J8 F. o4 e l; wShellExecute 查找与指定文件关联在一起的程序的文件名 4 s6 F# M& j/ H% a+ C) r
TerminateProcess 结束一个进程
0 d" B# W2 b v6 b5 R0 j/ }WinExec 运行指定的程序
/ d* I$ Y2 L2 W12. API之控件与消息函数
) O! T- z- A, U/ i7 }' g1 }; E6 e& |* sAdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小
5 d! M* T a6 h( m1 t! D6 PAnyPopup 判断屏幕上是否存在任何弹出式窗口
3 ~; g. |5 o: v r N% _ArrangeIconicWindows 排列一个父窗口的最小化子窗口 . n' a( R1 ~% F9 U5 j
AttachThreadInput 连接线程输入函数
4 V2 I" V: v! JBeginDeferWindowPos 启动构建一系列新窗口位置的过程
5 t/ Z- I& Z- ], R& k- cBringWindowToTop 将指定的窗口带至窗口列表顶部 / A% W9 B# Q- T; {5 q0 c' v4 t
CascadeWindows 以层叠方式排列窗口
- w- ~6 ^( d' d; f' B HChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄
- i7 R6 V& m+ s3 o+ u. y* n% U# ZClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标
+ @; P" X; e0 E: I) e* V* `8 SCloseWindow 最小化指定的窗口 ' J; \' K; _! n
CopyRect 矩形内容复制
2 p$ U8 z) A& e% Z( g9 ]8 |DeferWindowPos 该函数为特定的窗口指定一个新窗口位置
3 _" L$ E& Y9 s# o3 c. p& ^DestroyWindow 清除指定的窗口以及它的所有子窗口
3 z# _1 J2 S# @& q R: e' v- IDrawAnimatedRects 描绘一系列动态矩形 0 [/ P, } T+ ^! m
EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入 8 N' L M5 f1 ]0 m {
EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态 5 h4 |2 |0 g5 k+ [8 ?+ u' H7 W! G( U
EnumChildWindows 为指定的父窗口枚举子窗口 0 _/ O- e: j; U( D3 a% Y7 k
EnumThreadWindows 枚举与指定任务相关的窗口 ' X" @) F2 K- _$ k: X" A. Z! L
EnumWindows 枚举窗口列表中的所有父窗口
* ~ j1 C: ]. h* j, vEqualRect 判断两个矩形结构是否相同
9 k1 c- Z* D) b( k7 yFindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口 * z; \- g9 s$ N" d. q! y9 L3 O
FindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口 ' A% ]+ ^& u/ U. B P+ d
FlashWindow 闪烁显示指定窗口 $ H: E& J( t7 h! G: y
GetActiveWindow 获得活动窗口的句柄 * ^6 B* Y7 J) ]
GetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收) ; a6 }) U& J+ a; a T" C# k
GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息 " a" C6 ~( t6 ?' ]7 k0 v) p
GetClassLong 取得窗口类的一个Long变量条目
2 A8 k+ ]$ g2 L: NGetClassName 为指定的窗口取得类名 7 [# z4 a" k) n2 K3 a' T8 k
GetClassWord 为窗口类取得一个整数变量 " H0 C0 _& b: b# T! ?+ u
GetClientRect 返回指定窗口客户区矩形的大小 , z! z/ Y3 j C1 q6 E W
GetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄 , k2 B: y, \3 B/ m( O
GetFocus 获得拥有输入焦点的窗口的句柄 + B9 b1 W- F' O8 g w
GetForegroundWindow 获得前台窗口的句柄 0 Q v! K( ]! w6 H) y5 ?# v
GetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄 / K7 Y ]6 W% N8 M. y
GetParent 判断指定窗口的父窗口 6 z1 v$ ^/ W: e8 x# ~ l. e( C- g
GetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄 / C) H$ v4 Z' z, G8 G. S) n
GetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分
/ B- h5 i1 T5 _& ]$ dGetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系
1 u+ e& z; ~" fGetWindowContextHelpId 取得与窗口关联在一起的帮助场景ID 7 S) ?, {- X! T9 S( j8 V
GetWindowLong 从指定窗口的结构中取得信息
w8 C+ x% Y, Z! i# R6 zGetWindowPlacement 获得指定窗口的状态及位置信息
$ P* d1 i) E3 D1 {GetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内 $ }8 E i- H2 k4 ?
GetWindowText 取得一个窗体的标题(caption)文字,或者一个控件的内容
% G0 l3 j: R: Z+ D+ F6 lGetWindowTextLength 调查窗口标题文字或控件内容的长短 9 S: m& l5 U! j2 y' U6 B5 h
GetWindowWord 获得指定窗口结构的信息 6 s7 r: ~; }0 ?+ }3 K7 X
InflateRect 增大或减小一个矩形的大小
+ e" B& B* n; o2 u) OIntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集
L2 o, J. w! H Y+ ^3 I3 B i- | U) BInvalidateRect 屏蔽一个窗口客户区的全部或部分区域 # G" v3 a, k: [+ l
IsChild 判断一个窗口是否为另一窗口的子或隶属窗口
% B2 }9 s, w* B' T( L" `4 KIsIconic 判断窗口是否已最小化
/ Q4 \( }" v U- Y( d2 H7 b; g4 |IsRectEmpty 判断一个矩形是否为空 9 X. J z+ B0 {" x
IsWindow 判断一个窗口句柄是否有效
R# @4 J3 d" ^* ? VIsWindowEnabled 判断窗口是否处于活动状态 ' U( Z. N& a. z
IsWindowUnicode 判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字
8 |' j* P6 _5 [' Y9 S. KIsWindowVisible 判断窗口是否可见
$ d- q7 G* r S+ g, `9 vIsZoomed 判断窗口是否最大化 " Z3 `( M) U/ X" K
LockWindowUpdate 锁定指定窗口,禁止它更新
# C" N P* G! D/ l# T6 ZMapWindowPoints 将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统 # I' S* ~: m) x6 k
MoveWindow 改变指定窗口的位置和大小 * k! J9 [) J9 v
OffsetRect 通过应用一个指定的偏移,从而让矩形移动起来 ) Q: X( @/ L! Q: F) B7 r4 p
OpenIcon 恢复一个最小化的程序,并将其激活 & j/ y; C2 O8 g! S: q; b2 O
PtInRect 判断指定的点是否位于矩形内部 . c1 o: A- F, z! D: z
RedrawWindow 重画全部或部分窗口
; T# J9 O& v: h+ _; A3 vReleaseCapture 为当前的应用程序释放鼠标捕获
% j, Q+ c& ?+ J$ qScreenToClient 判断屏幕上一个指定点的客户区坐标 : ~5 Z, N7 K) ~# T/ J* A
ScrollWindow 滚动窗口客户区的全部或一部分 $ A# r2 G B' ^* y7 j
ScrollWindowEx 根据附加的选项,滚动窗口客户区的全部或部分 j( H! x% S+ I
SetActiveWindow 激活指定的窗口 . V3 v6 A8 W$ j$ O
SetCapture 将鼠标捕获设置到指定的窗口 {# A+ I' D1 v* z9 w
SetClassLong 为窗口类设置一个Long变量条目
# H$ k. Z1 b9 x SSetClassWord 为窗口类设置一个条目
0 k. L0 L: W7 F2 oSetFocusAPI 将输入焦点设到指定的窗口。如有必要,会激活窗口 ! m4 M) H% ~/ c8 N7 d
SetForegroundWindow 将窗口设为系统的前台窗口 - X: a# w$ m* ]
SetParent 指定一个窗口的新父
8 {9 T- {/ b; m% a! y. HSetRect 设置指定矩形的内容
: K* e3 D6 \8 i% J$ `" l0 b" ySetRectEmpty 将矩形设为一个空矩形 * ~! N# m" a4 o9 a5 H
SetWindowContextHelpId 为指定的窗口设置帮助场景(上下文)ID
: M2 r5 f! J: qSetWindowLong 在窗口结构中为指定的窗口设置信息 , ^' Q# c) }& k- \6 C
SetWindowPlacement 设置窗口状态和位置信息
* b7 i6 K3 y& C L" _SetWindowPos 为窗口指定一个新位置和状态 0 A0 i& a z0 q9 F
SetWindowText 设置窗口的标题文字或控件的内容
0 U' g3 j# N2 J1 wSetWindowWord 在窗口结构中为指定的窗口设置信息 " F) d: Y; F1 R- B
ShowOwnedPopups 显示或隐藏由指定窗口所有的全部弹出式窗口 3 @; C: k! N4 |4 a5 r
ShowWindow 控制窗口的可见性
( g/ S9 i6 ]2 ?& c! x. ~ShowWindowAsync 与ShowWindow相似 0 k( _4 C) D8 r9 c' F
SubtractRect 装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果
5 P# y( T6 }$ ~4 I- v) @2 ^/ F5 [TileWindows 以平铺顺序排列窗口
- v' o9 v8 I! L! ^, HUnionRect 装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect联合起来的结果
- H8 D/ C9 L* w7 y! C. S# DUpdateWindow 强制立即更新窗口
/ V9 d2 D0 \, ^) T! _ValidateRect 校验窗口的全部或部分客户区 6 @; v+ W" T! Z$ J% u* b7 {
WindowFromPoint 返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口
: D+ Z4 x p5 O7 B, R% ?& Z高级音频函数—参看《VC++ 编程指南.chm》11.60 i2 `2 q: x7 t' e0 e. W
Windows提供了三个特殊的播放声音的高级音频函数:MessageBeep、PlaySound和sndPlaySound。这三个函数可以满足播放波形声音的一般需要,但它们播放的WAVE文件(波形声音文件)的大小不能超过100KB,如果要播放较大的WAVE文件,则应该使用MCI服务。
; Q- K/ h5 g+ \) G7 a8 e) b BOOL MessageBeep(UINT uType);
" M6 O2 ~2 F' i5 |0 X该函数主要用来播放系统报警声音。系统报警声音是由用户在控制面板中的声音(Sounds)程序中定义的,或者在WIN.INI的[sounds]段中指定。
5 w( o' L! ~" W% q# ]* L" ]3 `参数uType说明了告警级,如下表所示。若成功则函数返回TRUE。; E7 f g) ~/ f$ t& l: S
级别
9 Y/ S" z9 U; U9 o) G5 Y- t7 }7 Z | 描述
4 T5 q6 r# M7 D | -1
) T; z0 {# U. \/ ^- F* B | 从机器的扬声器中发出蜂鸣声。 S: d& {5 s- f E( j4 [. F- I
| MB_ICONASTERISK
* Z: U& j( D) a7 A5 t# h; O% ?/ b | 播放由SystemAsterisk定义的声音。
3 Q# ?6 w2 h% ?2 F, |# w3 E6 k) a | MB_ICONEXCLAMATION ! E t1 T5 ~/ z; F( {% M4 F4 @
| 播放由SystemExclamation定义的声音。
* f7 i# Y- L" o% ` | MB_ICONHAND
+ f; m5 }+ A! R/ Y4 o | 播放由SystemHand定义的声音。 % v+ B3 O# I& c& B
| MB_ICONQUESTION * R# F* d7 m$ q, ^- }7 G/ r
| 播放由SystemQuestion定义的声音。
2 `( o) r# `$ P( [ H, E4 ` | MB_OK
8 x: }/ P0 t( e4 M+ Q! ^ | 播放由SystemDefault定义的声音 % T% J0 K9 p* T
| BOOL PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);: U9 h% e' R% y
参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。! Y, p: y- P' s$ V; X
参数hmod是应用程序的实例句柄,当播放WAV资源时要用到该参数,否则它必须为NULL。
9 _' H+ C7 Z" x# H! A参数fdwSound是标志的组合,如下表所示。若成功则函数返回TRUE,否则返回FALSE。
7 M" I- l5 I" l: {标志
' r6 w4 H; D! D | 含义 O# J3 ^: b& E" b
| SND_APPLICATION ) {* e7 }" K5 d3 u" g; |
| 用应用程序指定的关联来播放声音。
$ T' Q, C& d3 P; W5 c | SND_ALIAS
8 F" p" F$ x, `# Z9 v | pszSound参数指定了注册表或WIN.INI中的系统事件的别名。 0 P+ x9 L r' r6 f) E6 k5 b" E2 B( [
| SND_ALIAS_ID 2 Z% p/ ]1 K0 `
| pszSound参数指定了预定义的声音标识符。 8 A1 n$ d& L$ H" H/ w* f) V |) ]
| SND_ASYNC + R' f1 R/ a% W& T9 s$ y$ c% O2 y
| 用异步方式播放声音,PlaySound函数在开始播放后立即返回。
, z6 k) [ h' K6 S" ?+ n! l, s( [ | SND_FILENAME
) m( n6 Q5 O! a! P/ `8 E+ K4 b | pszSound参数指定了WAVE文件名。 8 @& z: V% l+ ? ]- N' E" ?8 L
| SND_LOOP
6 i; _2 g2 `! z+ Y; t' l }9 _ | 重复播放声音,必须与SND_ASYNC标志一块使用。 ' n- q9 B E( y6 _
| SND_MEMORY : }6 D% a) p8 q+ R8 v
| 播放载入到内存中的声音,此时pszSound是指向声音数据的指针。
) `2 J8 @8 P. _' C3 H) o | SND_NODEFAULT 8 ~1 Y: ~& X; {$ u; ]: B& }
| 不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。
/ v5 D: R$ z% ] | SND_NOSTOP
: O, Y5 ^0 ~3 R$ q( k5 P( E: X+ C7 ]7 m) ^ | PlaySound不打断原来的声音播出并立即返回FALSE。
* M" b3 v% [9 M2 x6 i | SND_NOWAIT
, Q7 {. ]8 J" S% z9 b | 如果驱动程序正忙则函数就不播放声音并立即返回。
8 Z) Q9 M* G0 _3 v6 o7 k, ` | SND_PURGE
$ v1 U2 ~4 |: w h6 ^5 d | 停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。
( I: V0 ^7 S& ~5 Z& O | SND_RESOURCE 0 ] t" D1 X! m) e1 P% k( Z" L
| pszSound参数是WAVE资源的标识符,这时要用到hmod参数。 " k5 W4 u7 E2 P: L3 ?1 \# s, |: M
| SND_SYNC
0 s+ G$ m6 z4 \, x | 同步播放声音,在播放完后PlaySound函数才返回。
7 S+ S1 q6 {7 G$ @ | BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound);
- P N. s7 H9 [& l函数sndPlaySound的功能与PlaySound类似,但少了一个参数。除了不能指定资源名字外,参数lpszSound与PlaySound的是一样的。
- f! Q2 i( l8 C# PMCI播放
7 O1 W! t. G( w0 @* r3 ~( y; v所有的MCI命令字符串都是通过多媒体API函数mciSendString传递给MCI的,该函数的声明为:5 K; t" r: p5 S! e! @# s! F; {
MCIERROR mciSendString(% `# a z+ c) ^* d
LPCTSTR lpszCommand, //MCI命令字符串
4 ]& o$ p6 ~% i. w2 R4 y" oLPTSTR lpszReturnString, //存放反馈信息的缓冲区
! D$ F1 S6 P' i1 `9 Z+ c/ z' ~UINT cchReturn, //缓冲区的长度9 I( _6 @6 W' T# T. {- S
HANDLE hwndCallback //回调窗口的句柄,一般为NULL2 f. {' v& M8 o
); //若成功则返回0,否则返回错误码。1 F; s; ?/ g# b Y1 l
该函数返回的错误码可以用mciGetErrorString函数进行分析,该函数的声明为:
, R1 P. o% w* C8 B6 }4 E8 g7 mBOOL mciGetErrorString(
6 K/ T2 T) R- T9 v* ZDWORD fdwError, //函数mciSendString或mciSendCommand返回的错误码
# Y8 G2 p& T; }0 f h" ?LPTSTR lpszErrorText, //接收描述错误的字符串的缓冲区" v" U# K% B& P- D, G! S
UINT cchErrorText //缓冲区的长度) y9 c# A' R6 _! e+ j/ Q& \3 F
);
4 r: ^. e8 W2 J* s" u- ]4 a6 V" i |
|