|
|
原文:http://www.cnblogs.com/cltsq/articles/api.html
: Z, v/ `6 X. x7 o/ p/ i7 U1. API之网络函数
1 A" m5 t" {: e `* jWNetAddConnection 创建同一个网络资源的永久性连接
; V1 Z4 k7 Y# G: n9 {WNetAddConnection2 创建同一个网络资源的连接 4 t Z7 a" R. O a% ^
WNetAddConnection3 创建同一个网络资源的连接 3 u3 n. ^( |; Y* @2 j3 e( ~
WNetCancelConnection 结束一个网络连接
5 b$ X: i+ d c7 C0 M/ j5 K. ?. U: BWNetCancelConnection2 结束一个网络连接 3 f; R: X' V3 k5 d
WNetCloseEnum 结束一次枚举操作
1 a) x+ q) `# fWNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接 / x4 k8 ^) v# L% W+ W+ h9 [
WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 ( ] G4 z+ t. f$ X# W& Y
WNetEnumResource 枚举网络资源
' e+ m; N* b6 t" rWNetGetConnection 获取本地或已连接的一个资源的网络名称 $ B" i% C2 Z- X y
WNetGetLastError 获取网络错误的扩展错误信息 % k6 R# f" y: Y9 r) k
WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称
9 T( T9 N: i3 w8 s5 ZWNetGetUser 获取一个网络资源用以连接的名字
# c4 u$ r6 m# B k& yWNetOpenEnum 启动对网络资源进行枚举的过程
& J% ]: P$ d" W2. API之消息函数
2 [' s. u6 k. e6 _. z% O9 p/ NBroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口
: U! A. _8 m! o- _% Q- DGetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置
3 ^2 N6 k) K, ]2 s: YGetMessageTime 取得消息队列中上一条消息处理完毕时的时间
( s$ E) l% E6 V4 vPostMessage 将一条消息投递到指定窗口的消息队列
6 n9 m: d! r3 p; ]+ _PostThreadMessage 将一条消息投递给应用程序 3 n3 \1 E0 u( A* I5 u
RegisterWindowMessage 获取分配给一个字串标识符的消息编号 . I( T( H; B# i( _9 I' k" X/ z# d6 }
ReplyMessage 答复一个消息
) D2 B' X/ U. ~; hSendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口
+ j; l+ ^" V L; r) O, x3 S) tSendMessageCallback 将一条消息发给窗口 5 B3 @/ J6 S) m1 L3 u: l
SendMessageTimeout 向窗口发送一条消息 ! ?" c" D! m; @4 F3 @
SendNotifyMessage 向窗口发送一条消息 " U* g' n& L! R) F+ j0 o
3. API之文件处理函数 2 B& f1 \6 H( K& ]+ Z" U
CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 8 B6 L, `. ~+ t& N. O5 L
CompareFileTime 对比两个文件的时间 1 C" u/ I4 ]; ^, e7 k8 @
CopyFile 复制文件
0 D4 \0 E! n0 S- a% JCreateDirectory 创建一个新目录
/ l+ d5 Q; d% VCreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台 % z H- K- O* a& ]' L) l& x3 B
CreateFileMapping 创建一个新的文件映射对象
: x$ b; M! a4 |; CDeleteFile 删除指定文件 5 u4 Y' n) R7 k8 H! K5 w
DeviceIoControl 对设备执行指定的操作
6 }! d7 K# \7 e' zDosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值 , B8 V1 ?4 T$ ^+ S
FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值
% I0 ~4 ?9 n- G* S# XFileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间 . }3 s- K# `$ q& U1 R
FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构 . p3 r% T8 ] I. C& C! M
FindClose 关闭由FindFirstFile函数创建的一个搜索句柄 ' ?3 w0 ?+ a: H" Z' ]( O* @
FindFirstFile 根据文件名查找文件 ) T- @& t$ x2 ~+ B$ b/ x$ o/ n
FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件 % \, E W5 F% k" f Y, j
FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区 3 D& l/ u0 E5 ~4 i% g; r0 ?2 Y
FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘 - _+ D$ K: I1 Q3 o
GetBinaryType 判断文件是否可以执行 $ c# m4 b. s/ P Q5 I: B
GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数
2 i+ _0 H: ~/ s# y% m1 ]: U* r# bGetCurrentDirectory 在一个缓冲区中装载当前目录 - f7 R1 t9 f( a
DWORD GetCurrentDirectory(# q/ S+ Q" F' k9 Q, i: b
DWORD nBufferLength, //缓冲区大小
2 |3 ?+ J+ K. W- C2 D' A LPSTR lpBuffer //缓冲区的首地址% b6 r/ y4 y& X! q1 u: z( t
);
3 N$ X, _: Y/ `7 m- G. jGetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量 8 U' j! {$ B5 }: W" r
GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息
. E, a0 g3 z" _" a$ M! dGetDriveType 判断一个磁盘驱动器的类型 : ~* \" T( G% S/ Z6 [
GetExpandedName 取得一个压缩文件的全名 5 x/ h7 @' {" G9 K1 r! n
GetFileAttributes 判断指定文件的属性 , T3 p( _# D6 F( A/ P) B5 {( C
GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制
6 c0 M5 G/ J# }5 p, N* i% ^ UGetFileSize 判断文件长度
% W, J! L% b8 p% JGetFileTime 取得指定文件的时间信息
3 C7 o1 j5 j) oGetFileType 在给出文件句柄的前提下,判断文件类型
+ P5 {0 d' _" o5 s/ {GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息
0 v2 g. Z$ m- hGetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区 * J" @% W% c4 j0 m$ F
GetFullPathName 获取指定文件的完整路径名 8 h5 O9 f% g/ t" M
GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母
! O. y! j7 Q, n) [GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径 / M Q7 z9 s$ z2 y* k5 k
GetOverlappedResult 判断一个重叠操作当前的状态 $ S8 u9 U' d( X. d) J
GetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值
1 H/ _' F$ U1 _! D/ S1 s- CGetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表 8 f7 q+ R* t/ z) d3 {) r/ h
GetPrivateProfileString 为初始化文件中指定的条目取得字串 % L- x9 {4 h9 ~( w* E3 C6 w
GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值 ) g( t6 P# J4 p8 D
GetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表
. { v8 M( M6 M) K+ k8 oGetProfileString 为win.ini初始化文件中指定的条目取得字串 6 D0 X/ h. \& g8 D) B8 n
GetShortPathName 获取指定文件的短路径名 1 o! ^: A$ g, _4 k$ }5 g1 V1 L3 D
GetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名 1 A: ~2 t6 r+ t/ i! n* I- P& p
GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用
8 t; ?7 k( Y* f% cGetTempPath 获取为临时文件指定的路径 6 r2 u' Q$ Q8 q: D% c
GetVolumeInformation 获取与一个磁盘卷有关的信息
0 ]; u J# c7 k7 n$ v w0 kGetWindowsDirectory 获取Windows目录的完整路径名
$ h" G! [1 r0 e- H4 A; i6 R2 P0 Thread 参考lread
3 V# M9 m. S, |( L! k$ Rhwrite 参考lwrite函数 8 K; R2 ]; O- B0 S* _& c
lclose 关闭指定的文件 8 ~2 R* |- c6 [4 Z0 f6 M" J
lcreat 创建一个文件
2 l. P" c( E! l! {llseek 设置文件中进行读写的当前位置 % O! w, [" K3 H( _0 N7 M+ r
LockFile 锁定文件的某一部分,使其不与其他应用程序共享 ) g. l4 g Y+ l, B" g8 A& A
LockFileEx 与LockFile相似,只是它提供了更多的功能
/ }0 J. o. N, e9 U0 M, Flopen 以二进制模式打开指定的文件 ) x. a2 E! C3 e7 v- O, D
lread 将文件中的数据读入内存缓冲区 ; D! I! K6 u, m1 S
lwrite 将数据从内存缓冲区写入一个文件 2 P7 U! p; ?+ r2 a* ~
LZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件 3 x7 y+ \, U6 }8 K$ d) t' a0 L
LZCopy 复制一个文件 . x# i% G, A, _5 v5 P; Z* J6 p
LZInit 这个函数用于初始化内部缓冲区 . H9 N/ @7 H+ @- G C
LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件 6 Y% v& F5 R' G& M9 i
LZRead 将数据从文件读入内存缓冲区
/ K2 K) g4 r. a6 C% zLZSeek 设置一个文件中进行读写的当前位置
- o! n! r B! G3 x* gMapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间 ' S, R J& q* V" r: d5 Z
MoveFile 移动文件
/ R3 F r. y( X: ?+ q" n% zOpenFile 这个函数能执行大量不同的文件操作
5 }* c) L$ t+ B* y5 B g0 WOpenFileMapping 打开一个现成的文件映射对象 , P9 U# } D1 i6 T
QueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况 , D: I) c8 Y* i; Y- r4 F" b- L2 G
ReadFile 从文件中读出数据 . B+ f" n% M5 }1 {2 ^/ Q8 B5 ]
ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调 ! Q9 r/ P! M2 y
RegCloseKey 关闭系统注册表中的一个项(或键)
- D4 I2 U& O2 \, NRegConnectRegistry 访问远程系统的部分注册表
; _0 {/ z# ~$ K. `6 PRegCreateKey 在指定的项下创建或打开一个项 * m' {6 w, j; _$ }& }! B) `
RegCreateKeyEx 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数
' @* {7 F+ `+ B9 ]RegDeleteKey 删除现有项下方一个指定的子项 4 w3 _/ \. @/ B
RegDeleteValue 删除指定项下方的一个值
* H# _3 P- J8 w) }+ V5 E; e$ KRegEnumKey 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx
# W* D$ t" r6 a9 W# dRegEnumKeyEx 枚举指定项下方的子项 # @7 W: o6 j) @& \; M8 B) _
RegEnumValue 枚举指定项的值
+ }! ]$ y4 c5 f/ KRegFlushKey 将对项和它的子项作出的改动实际写入磁盘 - t# O$ [# s; f4 d3 m# H
RegGetKeySecurity 获取与一个注册表项有关的安全信息 2 J6 |& D3 O" N( z. G
RegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息 * [: m) \0 j0 [5 I1 Q. ^6 ?7 x9 {, r
RegNotifyChangeKeyValue 注册表项或它的任何一个子项发生变化时,用这个函数提供一种通知机制
8 F7 h$ N; e7 U1 B5 M. I, HRegOpenKey 打开一个现有的注册表项 ) v' @+ [7 v0 Y0 g) a
RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数
6 D* ~9 k0 y1 Z/ g3 e9 sRegQueryInfoKey 获取与一个项有关的信息
7 i5 j' q( P/ A p( _* lRegQueryValue 取得指定项或子项的默认(未命名)值
' d4 J# k) _& ?RegQueryValueEx 获取一个项的设置值 / t- m) G, k3 y* S
RegReplaceKey 用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息
2 E: E4 _7 y2 d. \ _5 U( zRegRestoreKey 从一个磁盘文件恢复注册表信息 ' m9 m1 c2 X% Q# d" _
RegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件 % R4 h& |5 _ B4 B
RegSetKeySecurity 设置指定项的安全特性
. _( H2 k' C: ERegSetValue 设置指定项或子项的默认值 # Q& I& r+ F) e6 u" m+ |
RegSetValueEx 设置指定项的值
, _9 R/ A6 R% \# wRegUnLoadKey 卸载指定的项以及它的所有子项
/ h+ j7 X/ M) Z- _- DRemoveDirectory 删除指定目录 2 n" ^5 s" ]9 S8 d
SearchPath 查找指定文件
; r: T6 ]+ X; Q4 mSetCurrentDirectory 设置当前目录 $ o/ b0 w' a0 r2 g, ~2 ~
SetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾
# S/ `* |, J8 _! r3 vSetFileAttributes 设置文件属性
7 q s' g+ O$ M" Y' ] I* s6 gSetFilePointer 在一个文件中设置当前的读写位置
2 Q0 A' s9 m0 s( pSetFileTime 设置文件的创建、访问及上次修改时间 : d* i: @+ e6 q, S/ q6 q
SetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果
9 S! I& g m5 [7 y) f" ZSetVolumeLabel 设置一个磁盘的卷标(Label)
: S2 W4 R. V9 ^" o" \% HSystemTimeToFileTime 根据一个FILETIME结构的内容,载入一个SYSTEMTIME结构 5 w5 Q" T1 }: b# M% |/ V2 R L
UnlockFile 解除对一个文件的锁定
/ O7 b% @4 T q' f( C! A! kUnlockFileEx 解除对一个文件的锁定 ! i+ |6 Z e9 M! X' o& d
UnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射
7 T1 Z2 Q- I* ? |) ^ q$ _; [* nVerFindFile 用这个函数决定一个文件应安装到哪里
. @0 y- k# r) Y2 |% Q1 DVerInstallFile 用这个函数安装一个文件 - k' p+ w) m( k, X
VerLanguageName 这个函数能根据16位语言代码获取一种语言的名称 , J) N9 I E' ?4 k8 h
VerQueryValue 这个函数用于从版本资源中获取信息 5 ] Q" Y6 C" W i5 l7 W
WriteFile 将数据写入一个文件
7 f/ B2 w8 y. ?5 O8 AWriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调 8 b, i, o: d* I( k0 ^+ a4 `
WritePrivateProfileSection 为一个初始化文件(.ini)中指定的小节设置所有项名和值
. H( `2 y5 k! e- {+ y: |WritePrivateProfileString 在初始化文件指定小节内设置一个字串 $ H" r9 E- H# U8 K8 _3 p o
WriteProfileSection 为Win.ini初始化文件中一个指定的小节设置所有项名和值 ( L/ I7 i0 O4 d* ]! B. q9 s F
WriteProfileString 在Win.ini初始化文件指定小节内设置一个字串
" G- e) J3 ]( r4. API之打印函数 0 o$ n2 F0 X$ r v9 F+ u( m G- e
AbortDoc 取消一份文档的打印 . q$ `3 r4 N2 m2 n" y4 Z( E& P, n
AbortPrinter 删除与一台打印机关联在一起的缓冲文件 1 S0 O; m+ O$ Y" l( s6 O
AddForm 为打印机的表单列表添加一个新表单 3 o6 [( S* [ l+ i
AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号
/ Q G) z0 r& T( ]' r, iAddMonitor 为系统添加一个打印机监视器 5 a) y6 r# y& X9 E
AddPort 启动"添加端口"对话框,允许用户在系统可用端口列表中加入一个新端口
% H. p0 g1 T- ~- R7 b+ J/ j( h* IAddPrinter 在系统中添加一台新打印机
" n5 Z: H( j$ p6 ]; j# }AddPrinterConnection 连接指定的打印机 . S" ^$ Q5 p+ Q, ^6 z
AddPrinterDriver 为指定的系统添加一个打印驱动程序
' u, ]+ v9 Y/ ]' {. ^9 I* mAddPrintProcessor 为指定的系统添加一个打印处理器 0 Y' a- o0 f' }1 c" x3 v: J0 ]
AddPrintProvidor 为系统添加一个打印供应商
7 P; s8 E- M3 p. v. t5 q' f) ZAdvancedDocumentProperties 启动打印机文档设置对话框 ! N6 R! Z7 [5 I8 B( s5 P8 B+ t
ClosePrinter 关闭一个打开的打印机对象
8 a$ ?; D& t: \/ @2 Q, P7 pConfigurePort 针对指定的端口,启动一个端口配置对话框 ]$ d2 q& M' B, e
ConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 " U; \* g3 m$ D9 \
DeleteForm 从打印机可用表单列表中删除一个表单
a& C8 t+ ^5 H, X" w4 a0 [( ^DeleteMonitor 删除指定的打印监视器
+ T% Z% D' I2 v, _DeletePort 启动"删除端口"对话框,允许用户从当前系统删除一个端口
0 T- W5 A$ B4 [! w w C( N0 qDeletePrinter 将指定的打印机标志为从系统中删除
6 o r: D7 c8 P7 tDeletePrinterConnection 删除与指定打印机的连接
" K" }) o( ]5 q% m( sDeletePrinterDriver 从系统删除一个打印机驱动程序
, N8 H1 R% t" @2 J d9 }2 ~DeletePrintProcessor 从指定系统删除一个打印处理器
+ G& \: C3 l( P, l4 k; T% {DeletePrintProvidor 从系统中删除一个打印供应商
9 w& {/ d: ?6 V H: U9 DDeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息
2 R# a8 i$ A6 g. r8 A6 }DocumentProperties 打印机配置控制函数 5 C2 ^0 Y# N0 q2 v0 B- d
EndDocAPI 结束一个成功的打印作业 , q% }5 n/ V, p. W: W- r
EndDocPrinter 在后台打印程序的级别指定一个文档的结束
b4 C6 ]( p- `EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页
% ?( _5 s5 a1 l& }EndPagePrinter 指定一个页在打印作业中的结尾
$ [( |5 H* n. {EnumForms 枚举一台打印机可用的表单 5 [: o- X( f7 Y# R, ?, I; g
EnumJobs 枚举打印队列中的作业 ; ?0 c' X8 }0 G6 q
EnumMonitors 枚举可用的打印监视器 % G% X% Z% J# ]( y5 D
EnumPorts 枚举一个系统可用的端口 $ P; r# S) `7 N# t7 W5 }
EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 . I5 a1 M; Y3 {. v5 D3 S/ w
EnumPrinters 枚举系统中安装的打印机
& Z3 U4 u1 g; v. Q; [EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 $ C% q1 [! E" Z. n
EnumPrintProcessors 枚举系统中可用的打印处理器 5 @& f R0 i$ _3 O% P+ ~
Escape 设备控制函数
& t- e9 T" H) z; S( T; V9 _# t2 EFindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 L0 m) C3 X u3 q
FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 ( K, L& w6 k6 U$ ]8 W; D
FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因
$ b7 o& `) ]3 p* n7 ^FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区
, U- ?4 H1 p+ y% Z Y; |' mGetForm 取得与指定表单有关的信息 ' T' |/ G9 q2 [: i1 q. n% j6 F
GetJob 获取与指定作业有关的信息 - R* P1 R9 b) n
GetPrinter 取得与指定打印机有关的信息 9 a1 u' t. v8 N
GetPrinterData 为打印机设置注册表配置信息
5 I0 G1 [! T& n6 h: o. l1 @GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 * v% h6 r& b7 n; R% I# x8 E0 C
GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么
; j) U' y7 U2 R: ]; ]GetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 " [. d2 }( e" I2 K, v
OpenPrinter 打开指定的打印机,并获取打印机的句柄
9 w; U5 ~- Q i5 LPrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框
9 q) T9 y3 M7 L: ]# JPrinterProperties 启动打印机属性对话框,以便对打印机进行配置
9 @9 N* ]6 x6 {1 uReadPrinter 从打印机读入数据 * c" E8 S R5 w; ^: L$ z
ResetDC 重设一个设备场景
, ~% k( R- j" z7 j6 T2 R1 iResetPrinter 改变指定打印机的默认数据类型及文档设置
1 f8 M8 F; X CScheduleJob 提交一个要打印的作业
% Q _* s: ?, e7 z9 WSetAbortProc 为Windows指定取消函数的地址 ' L& G: n/ U. V8 T
SetForm 为指定的表单设置信息
2 I/ `& t. A1 i" o7 d- ~SetJob 对一个打印作业的状态进行控制 4 ^+ p" i6 u! J- U+ i) _1 H& \- I. }
SetPrinter 对一台打印机的状态进行控制
1 h; J+ L7 ^3 P# jSetPrinterData 设置打印机的注册表配置信息 0 p! S0 J3 A3 C8 N' f% o- ?6 c
StartDoc 开始一个打印作业 / n5 G. `% R. l3 ]3 y6 K- `. h2 b
StartDocPrinter 在后台打印的级别启动一个新文档
: |& x( B" a* R. M# k9 g( p. j) WStartPage 打印一个新页前要先调用这个函数
% v8 a- U" ?& T9 O/ h3 RStartPagePrinter 在打印作业中指定一个新页的开始
$ ^$ j g3 o3 v+ _+ b$ z2 P" eWritePrinter 将发送目录中的数据写入打印机
: X0 v, Z5 X& |* O! {. x5. API之文本和字体函数
: C2 K5 W6 Q( o1 I2 oAddFontResource 在Windows系统中添加一种字体资源
2 [$ ?- Q+ g2 E* c& q5 |' ~CreateFont 用指定的属性创建一种逻辑字体 , |9 b4 r' ^, h: K9 K S; c6 A
CreateFontIndirect 用指定的属性创建一种逻辑字体
$ m$ |# ^1 O% x. KCreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统 ) e2 T( S4 p/ O; Y# _& E+ k2 B
DrawText 将文本描绘到指定的矩形中 - X: c7 v/ [$ l* \* D1 a
DrawTextEx 与DrawText相似,只是加入了更多的功能
+ j7 g4 X }4 e7 l( Y" cEnumFontFamilies 列举指定设备可用的字体
# A; \& K- J/ |( k' BEnumFontFamiliesEx 列举指定设备可用的字体 . p" h* V+ H& x: Z( t/ \' a7 [
EnumFonts 列举指定设备可用的字体 & b& Z0 [" J& |8 K9 _1 D, O% O
ExtTextOut 经过扩展的文本描绘函数。也请参考SetTextAlign函数 4 ^" d1 G2 {4 _( `5 r
GetAspectRatioFilterEx 用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小 5 r, v: m7 Q# p7 b# K8 p; r: d
GetCharABCWidths 判断TureType字体中一个或多个字符的A-B-C大小
% ]# }. } q. a9 gGetCharABCWidthsFloat 查询一种字体中一个或多个字符的A-B-C尺寸
5 S& D! M$ I2 c- v) X5 wGetCharacterPlacement 该函数用于了解如何用一个给定的字符显示一个字串
9 ^- ^" J- [: J I$ s, F+ ?4 LGetCharWidth 调查字体中一个或多个字符的宽度 ) U: D; V, o7 A9 V' e7 e4 u
GetFontData 接收一种可缩放字体文件的数据 5 d( @2 u/ R" `5 Q
GetFontLanguageInfo 返回目前选入指定设备场景中的字体的信息 & G. `* K/ x4 o9 J
GetGlyphOutline 取得TureType字体中构成一个字符的曲线信息
' ^. R3 F; l" p4 OGetKerningPairs 取得指定字体的字距信息
( V9 e/ W4 I! o5 j" aGetOutlineTextMetrics 接收与TureType字体内部特征有关的详细信息 - Y8 I8 ~. y8 D! }: ?/ a
GetRasterizerCaps 了解系统是否有能力支持可缩放的字体 , W+ G) K4 w) }3 v; A3 U
GetTabbedTextExtent 判断一个字串占据的范围,同时考虑制表站扩充的因素 . ?3 O, l1 R! g+ A4 X
GetTextAlign 接收一个设备场景当前的文本对齐标志
/ a2 e# a9 _, GGetTextCharacterExtra 判断额外字符间距的当前值 8 G; [: N- U3 L9 n+ m
GetTextCharset 接收当前选入指定设备场景的字体的字符集标识符
: F5 h1 P8 T# [- _5 d4 t1 yGetTextCharsetInfo 获取与当前选定字体的字符集有关的详细信息 ) U5 d5 u: ~, g" N9 t) H
GetTextColor 判断当前字体颜色。通常也称为"前景色"
4 T9 W6 r! _4 Z2 E$ h0 iGetTextExtentExPoint 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息 % W% K4 O1 {: l# Y" g! v9 N
GetTextExtentPoint 判断一个字串的大小(范围)
. y6 k# B7 \/ d. DGetTextFace 获取一种字体的字样名 ; R1 ^" ?3 l+ o1 {" a @: j
GetTextMetrics 获取与选入一种设备场景的物理字体有关的信息 6 U' R/ w5 I- s7 |2 f4 A
GrayString 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态 & D* p4 r4 o- @! A5 M- ]
PolyTextOut 描绘一系列字串 : H3 ^# s& @5 E$ i2 R/ E% h. k
RemoveFontResource 从Windows系统中删除一种字体资源 ( M. n9 z* w# [! [
SetMapperFlags Windows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体
- h. ~3 i% `1 U+ S1 \, m+ ~) SSetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置 - {2 n w) k4 h; u' k2 @1 Z4 z; x9 Y
SetTextCharacterExtra 描绘文本的时候,指定要在字符间插入的额外间距 + T% _; c9 ~# d
SetTextColor 设置当前文本颜色。这种颜色也称为"前景色" + l2 V6 z* r4 N+ I; w+ A' ^ z
SetTextJustification 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理 6 v3 a. x# w& }6 k/ J
TabbedTextOut 支持制表站的一个文本描绘函数
/ M+ I% L4 _* r1 G. z. o9 YTextOut 文本绘图函数 9 ]* x, N) C3 z6 m; Q
WINGDIAPI BOOL WINAPI TextOut(
8 h( K; J) Q; F5 A* WHDC, //输出设备
. {- @8 f1 n: W( {+ K( Tint, //输出的横坐标8 a, B! [6 A8 H. N) k. e
int, //纵坐标
, M) L/ G: F9 O4 R F3 \4 TLPCSTR, //输出的文本str: h( G1 g9 o& ^0 b( ^0 T5 c
int); //文本的长度:lstrlen(str)7 h' q7 O" Z0 ]" v& S! o
6. API之菜单函数 , k& O2 Y1 h8 J9 V+ o. I) ]3 o; A
AppendMenu 在指定的菜单里添加一个菜单项
# F8 P7 n3 J) vCheckMenuItem 复选或撤消复选指定的菜单条目 ; n+ H5 x; X) b1 ?4 o7 G7 S* g/ b
CheckMenuRadioItem 指定一个菜单条目被复选成"单选"项目
2 L, D1 _ k5 {0 }; kCreateMenu 创建新菜单
8 P; Q6 B( q* ^$ q) `CreatePopupMenu 创建一个空的弹出式菜单
0 l0 u9 q' Z4 \5 Z' tDeleteMenu 删除指定的菜单条目
* v4 Y. }: _6 S3 h f/ ~DestroyMenu 删除指定的菜单 : T, s# C- r: h6 u0 M: }( }; c
DrawMenuBar 为指定的窗口重画菜单
5 l( u g( f" {% LEnableMenuItem 允许或禁止指定的菜单条目
6 ?0 X. |8 g) NGetMenu 取得窗口中一个菜单的句柄 * d! m$ a. k: P/ h8 C% t# B
GetMenuCheckMarkDimensions 返回一个菜单复选符的大小 " ]0 W- o8 |( a' L, W5 |
GetMenuContextHelpId 取得一个菜单的帮助场景ID * T6 m" I2 l( U* t
GetMenuDefaultItem 判断菜单中的哪个条目是默认条目 ' \, K1 ~ F/ g5 F0 j: j! q7 v
GetMenuItemCount 返回菜单中条目(菜单项)的数量
5 \$ ]4 e g' E3 t. o' K1 NGetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID
' `8 l7 d9 R0 Y1 W2 UGetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息
: g( M1 z1 b# h% ?& V, {GetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息 ; M) P: K' u$ m( g1 l! f
GetMenuState 取得与指定菜单条目状态有关的信息 ! ]% E. Y5 ?* _' `8 n0 s$ k
GetMenuString 取得指定菜单条目的字串 8 s- w; V7 f, h9 F* d/ M7 W
GetSubMenu 取得一个弹出式菜单的句柄,它位于菜单中指定的位置
" E/ j* g- \; B! B' HGetSystemMenu 取得指定窗口的系统菜单的句柄 + r3 w+ r( u8 v/ Y/ b& n
HiliteMenuItem 控制顶级菜单条目的加亮显示状态
% ^% q! m( w5 \; GInsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动
" l4 O! I0 W/ z, mInsertMenuItem 插入一个新菜单条目
' q! e' X$ C5 ]! J6 ZIsMenu 判断指定的句柄是否为一个菜单的句柄 " l+ D9 |/ X( H `9 N8 f
LoadMenu 从指定的模块或应用程序实例中载入一个菜单
! u5 A. Y" P8 |& \1 Y, qLoadMenuIndirect 载入一个菜单
2 U; j" j" \. K- w t% T5 [2 c& [MenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点
# A1 u+ _, q1 Q) _ D+ a0 U. d/ P* {7 JModifyMenu 改变菜单条目 2 L* A4 ?. k8 k, X1 ]
RemoveMenu 删除指定的菜单条目
! z# Y+ G/ g% [! fSetMenu 设置窗口菜单 ( [2 _. d/ v5 u1 |* m8 X- y
SetMenuContextHelpId 设置一个菜单的帮助场景ID ) N8 a: r u1 W. @' n/ T x. e5 ~
SetMenuDefaultItem 将一个菜单条目设为默认条目 * g( l) ~/ ]+ o
SetMenuItemBitmaps 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√) " T7 k# Z- r$ U( i' H- }3 _
SetMenuItemInfo 为一个菜单条目设置指定的信息
: a* `/ o% c, n( \TrackPopupMenu 在屏幕的任意地方显示一个弹出式菜单 , Q& j8 Z* a4 T* c- ?: U4 N8 l
TrackPopupMenuEx 与TrackPopupMenu相似,只是它提供了额外的功能
' W( V8 S4 b1 X+ r7. API之位图、图标和光栅运算函数 . v% N8 E) c% s
BitBlt 将一幅位图从一个设备场景复制到另一个8 `* L' J! ?" R6 S( d" ~
WINGDIAPI BOOL WINAPI BitBlt(! Q. o. t7 W% K" h, j: d
HDC, //目标HDC
0 W% x# Q/ K8 X6 x0 u5 B- ~; pint, //X1
5 B9 ^- k1 i4 ^int, //Y1
) w E0 k3 @ hint, //width2 U+ Z$ {' h Z, B
int, //height
# T! K- Q* Z; \/ O! N8 \HDC, //源HDC" b, g6 T0 O8 d$ |1 H/ u# P$ E
int, //右边的距离! \- Y$ f4 ~! E% D
int, //??3 H2 Y( k$ a: O' C e( A
DWORD); //拷贝方式:SRCCOPY|SRCPAINT|SRCAND|SRCINVERT|RCERASE|NOTSRCCOPY|NOTSRCERASE|MERGECOPY|MERGEPAINT|
# O" A l3 ^4 |$ ~8 `+ @' ^PATCOPY|PATPAINT|PATINVERT|DSTINVERT|BLACKNESS|WHITENESS
* R. r7 L- F8 e& F* P5 d. UCopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序
! l( h# j. X3 U! Z" ECopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作
: Z/ a9 l# D. `# W9 NCreateBitmap 按照规定的格式创建一幅与设备有关位图
3 m. g3 P+ E4 K/ p' B6 iCreateBitmapIndirect 创建一幅与设备有关位图 ; Q' ^! v/ U1 h" o D4 k' |
CreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容 2 l+ j( f( d% t
CreateCursor 创建一个鼠标指针 ) \3 y7 Z c: q, B
CreateDIBitmap 根据一幅与设备无关的位图创建一幅与设备有关的位图
' ` B( L( z( CCreateDIBSection 创建一个DIBSection
/ h( K ^) ]' ?- l$ w" \( P% W( f. BCreateIcon 创建一个图标
. s# G; P) h* fCreateIconIndirect 创建一个图标
, M: ?* p6 ]( S0 z' PDestroyCursor 清除指定的鼠标指针,并释放它占用的所有系统资源 5 {0 g, [) a q% h' L( I* ]: }
DestroyIcon 清除图标 ( p( n9 m/ @4 q3 ~. R I
DrawIcon 在指定的位置画一个图标 " H- A( M* _8 r- e. Q
DrawIconEx 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能
. h* q2 o. q& j5 N7 g O8 tExtractAssociatedIcon 判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之
) j0 @- Z( Z; z" q3 pExtractIcon 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来
4 P2 E0 P( I& S! A- ?% G$ ]GetBitmapBits 将来自位图的二进制位复制到一个缓冲区 3 e) \8 o( S, h6 |
GetBitmapDimensionEx 取得一幅位图的宽度和高度 4 P6 B% J3 @- Q5 L
GetDIBColorTable 从选入设备场景的DIBSection中取得颜色表信息 / M% n, T: ?/ h. s4 z* b& ]9 c
GetDIBits 将来自一幅位图的二进制位复制到一幅与设备无关的位图里
x2 j" a1 R* g8 T9 f# z% v$ }GetIconInfo 取得与图标有关的信息 ! f' ^4 }5 @, s6 V
GetStretchBltMode 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式
! d. {& M8 `1 c' S7 P) F1 OLoadBitmap 从指定的模块或应用程序实例中载入一幅位图
2 K$ ~* ?' r3 H2 {; BLoadCursor 从指定的模块或应用程序实例中载入一个鼠标指针
* `: ]% G/ k& q, P$ gLoadCursorFromFile 在一个指针文件或一个动画指针文件的基础上创建一个指针
. @! z3 H- _- k* [, a- ^LoadIcon 从指定的模块或应用程序实例中载入一个图标 ) n% `0 o# |& h, b l) x5 U
LoadImage 载入一个位图、图标或指针 2 z* x5 [: I' g: u3 D( X% E
HANDLE LoadImageA(
8 @ W/ B, F q. u! e" Z* k; a. [HINSTANCE, //当前实例句柄:AfxGetInstanceHandle()
5 D) I. ~; U, Q2 |/ I3 R( k4 a LPCSTR, //资源所在的目录:c:\help.bmp4 h D+ G c& O) h
UINT, //类型:IMAGE_BITMAP|IMAGE_ICON|IMAGE_CURSOR|IMAGE_ENHMETAFILE0 z9 c% e/ I" X4 F7 D. v( o
int, //
" c1 S/ \% e* [9 n* u int, //
0 m4 L" R$ ?! \" I. e+ TUINT); //风格:LR_DEFAULTCOLOR|LR_MONOCHROME|LR_COLOR|LR_COPYRETURNORG|; R* H+ t9 S7 Y+ X T
R_COPYDELETEORG|LR_LOADFROMFILE|LR_LOADTRANSPARENT|LR_DEFAULTSIZE|LR_VGACOLOR|
. o$ x* F# @8 mLR_LOADMAP3DCOLORS|LR_CREATEDIBSECTION|LR_COPYFROMRESOURCE|LR_SHARED' _ Z8 S+ L, e, J6 r) a; A: v
MaskBlt 执行复杂的图象传输,同时进行掩模(MASK)处理
8 u5 d/ o- e$ ]3 tPatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景 ) u" A8 F! J9 ]8 ?9 V
PlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理 ) M6 U4 F: s' h3 {4 `, y& a
SetBitmapBits 将来自缓冲区的二进制位复制到一幅位图
' s; G" S5 @4 v1 E D' G/ rSetBitmapDimensionEx 设置一幅位图的宽度。以一毫米的十分之一为单位 F2 ]% |- e& P* V
SetDIBColorTable 设置选入设备场景的一个DIBSection的颜色表信息 : e0 x$ W+ u0 |: \% C6 H
SetDIBits 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里
+ ~* A. K1 }- @- {4 ~4 w; \- oSetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备 5 v: b# f3 R# j/ b
SetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式 6 H3 D0 Y3 X3 o
StretchBlt 将一幅位图从一个设备场景复制到另一个 ( ^1 W. x4 A( [1 J) a
StretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景 " x6 H" K+ ~ a
8. API之绘图函数
- W" |6 r) J& a6 y% Q/ _- ~2 ^AbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作 9 B3 T9 `2 y9 Z( E* J
AngleArc 用一个连接弧画一条线 ' @' W1 g% M, ]" W/ h
Arc 画一个圆弧
( m( v$ W4 A) K. \BeginPath 启动一个路径分支
' P& ?5 p& t6 u: n" Q8 JCancelDC 取消另一个线程里的长时间绘图操作 3 s# q' h9 N! O, f4 l2 }7 r
Chord 画一个弦 # X B, K5 ]$ O& ~
CloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄
- c* R. e: o2 d! S3 X2 W1 ^CloseFigure 描绘到一个路径时,关闭当前打开的图形 2 O3 v* N' p! G7 j' k
CloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄
1 i8 j5 H$ B y% lCopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝)
% R4 |5 a8 j' a# TCopyMetaFile 制作指定(标准)图元文件的一个副本
2 K0 W, d/ E- p/ U. ?CreateBrushIndirect 在一个LOGBRUSH数据结构的基础上创建一个刷子 % f2 c* O% _0 j
CreateDIBPatternBrush 用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案) 4 W. Q/ E3 I! M& I6 T5 S
CreateEnhMetaFile 创建一个增强型的图元文件设备场景
1 v2 K' P" M* u3 s2 Y$ B3 \CreateHatchBrush 创建带有阴影图案的一个刷子
2 M- O$ ]+ B/ ?) A# y% K% F# B" RCreateMetaFile 创建一个图元文件设备场景
* @( D: M5 q( z0 {CreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子
7 n& [. f, m* X6 }5 BCreatePen 用指定的样式、宽度和颜色创建一个画笔 4 h& Y4 ]5 |9 D6 v
CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔 ; _2 p% c, e2 q- J
CreateSolidBrush 用纯色创建一个刷子 0 [" M; g K" d+ z9 \
DeleteEnhMetaFile 删除指定的增强型图元文件
: q8 Y( O, R" k( _+ d3 oDeleteMetaFile 删除指定的图元文件
. W$ U6 G- ^& j4 m. aWINGDIAPI BOOL WINAPI DeleteObject(HGDIOBJ) 删除GDI对象,对象使用的所有系统资源都会被释放' H/ f4 H( ?* V) G" P, J3 |
DrawEdge 用指定的样式描绘一个矩形的边框 6 q0 D( v% M) F1 B4 L* ?) ~1 ?
DrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序 , O4 l& b3 {! H \
DrawFocusRect 画一个焦点矩形 ) |# q6 A0 S% W. N9 w: h3 S/ Z
DrawFrameControl 描绘一个标准控件 8 p: I. j- B1 E+ q; L4 b9 \; W" g
DrawState 为一幅图象或绘图操作应用各式各样的效果 % \/ f; |0 k' t
Ellipse 描绘一个椭圆,由指定的矩形围绕 2 x# ]) `: m" w0 z
EndPath 停止定义一个路径 $ k8 o' f. z+ i. N- Q: d
EnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录
! O4 }$ ^( e3 JEnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录 5 o, g- t! _5 a. Z7 g/ z
EnumObjects 枚举可随同指定设备场景使用的画笔和刷子 # E: i# t8 h5 P/ b
ExtCreatePen 创建一个扩展画笔(装饰或几何) $ D1 |: w& a& a7 a) v& L. a2 S, M
ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域 / [ \/ N) I) A% c: Q
FillPath 关闭路径中任何打开的图形,并用当前刷子填充 ' g! t5 ~* k9 k& q: K
FillRect 用指定的刷子填充一个矩形 " b. _# W8 X. h" F, ~
FlattenPath 将一个路径中的所有曲线都转换成线段 2 A7 W" U& m; b
FloodFill 用当前选定的刷子在指定的设备场景中填充一个区域 ! B9 X( V. _. r4 y5 o
FrameRect 用指定的刷子围绕一个矩形画一个边框 ' e# J/ u* r( E E
GdiComment 为指定的增强型图元文件设备场景添加一条注释信息 9 [7 J o. a! |
GdiFlush 执行任何未决的绘图操作 " [1 p' n4 ?" O' o! o O' Q
GdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中
; b8 P& d4 f4 M; r! @0 wGdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列 " g3 Y$ C5 {5 \( s; s: X4 E; g
GetArcDirection 画圆弧的时候,判断当前采用的绘图方向 & P2 r* Y' m4 q6 p- ]: [
GetBkColor 取得指定设备场景当前的背景颜色 3 |. x4 A# `1 q% E
GetBkMode 针对指定的设备场景,取得当前的背景填充模式
6 v. `* N- {: X% Z e# kGetBrushOrgEx 判断指定设备场景中当前选定刷子起点
, T) G0 y1 W8 x7 n, QGetCurrentObject 获得指定类型的当前选定对象
' ~6 P8 P+ M" YGetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置
9 m+ F4 }! j: wGetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄
1 m4 a* U+ j @8 c/ |GetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里 ; |9 i3 F: B$ t3 \ A- x
GetEnhMetaFileDescription 返回对一个增强型图元文件的说明 6 D' y$ Z! R2 p2 b) b$ h$ S
GetEnhMetaFileHeader 取得增强型图元文件的图元文件头
; m* N5 C0 e5 R# b' _" MGetEnhMetaFilePaletteEntries 取得增强型图元文件的全部或部分调色板 . N# d& V6 v/ x, s+ {
GetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄
8 E" o) s! Q( f# O3 d3 Z5 |GetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区 8 ?4 ?% Z" L" p9 ]0 a D( u
GetMiterLimit 取得设备场景的斜率限制(Miter)设置
" U; e4 O8 A2 Z# F5 EGetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色 ( S3 Y! p6 Y3 x
GetObjectAPI 取得对指定对象进行说明的一个结构
& f5 u# V$ v5 T! U; RGetObjectType 判断由指定句柄引用的GDI对象的类型
9 D5 R' H- R! f Y- n$ SGetPath 取得对当前路径进行定义的一系列数据
. W7 A- b9 I( ?5 E5 r( WGetPixel 在指定的设备场景中取得一个像素的RGB值 4 U# I% z! J6 I; s! o
GetPolyFillMode 针对指定的设备场景,获得多边形填充模式
7 j, ~) C! S+ a6 c% \, GGetROP2 针对指定的设备场景,取得当前的绘图模式 * G' u- D$ t/ {. k' w% s
GetStockObject 取得一个固有对象(Stock)
3 ]4 P2 s- G& V! E. |/ h. mGetSysColorBrush 为任何一种标准系统颜色取得一个刷子 - h0 r B/ i7 u* T4 P
GetWinMetaFileBits 通过在一个缓冲区中填充用于标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件
6 Y' o+ [* Q) ^/ H. e* h3 gInvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形
/ b: U9 b; S! W' J6 v+ hLineDDA 枚举指定线段中的所有点 ) T/ h9 P) I; P7 E! n6 N/ O
LineTo 用当前画笔画一条线,从当前位置连到一个指定的点
2 G3 o, y& j6 \MoveToEx 为指定的设备场景指定一个新的当前画笔位置
+ S9 u" \9 m. `3 g0 T% @PaintDesk 在指定的设备场景中描绘桌面墙纸图案 % G* S; z5 n" w3 [
PathToRegion 将当前选定的路径转换到一个区域里
) d W4 w) Z+ ?+ M5 \8 DPie 画一个饼图 7 [; |% F4 X. o2 w" `7 u
PlayEnhMetaFile 在指定的设备场景中画一个增强型图元文件 - X8 s, N6 k& C
PlayEnhMetaFileRecord 回放单独一条增强型图元文件记录
& T t! _0 f% r3 b' u" vPlayMetaFile 在指定的设备场景中回放一个图元文件
8 D4 N2 v0 ?: @7 d" M- u5 OPlayMetaFileRecord 回放来自图元文件的单条记录 * I1 h# @2 z: x
PolyBezier 描绘一条或多条贝塞尔(Bezier)曲线
5 n* T7 A% E! zPolyDraw 描绘一条复杂的曲线,由线段及贝塞尔曲线组成 / N+ V" j6 _4 [% X1 u9 p
Polygon 描绘一个多边形
! k, p; t- @& N8 W0 |Polyline 用当前画笔描绘一系列线段
0 C# H: }! _% H1 m1 R# ?PolyPolygon 用当前选定画笔描绘两个或多个多边形
: I3 D! @/ m. V; A6 i- d; OPolyPolyline 用当前选定画笔描绘两个或多个多边形 + A# I" M0 ~. R% [7 d# _/ x Q7 G! \
Rectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充
$ P' z- N% N4 `2 \RoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充
$ A" q3 N3 g" S# sSelectClipPath 将设备场景当前的路径合并到剪切区域里
5 N+ N( j. q! ~1 L5 X0 E, W" aSelectObject 为当前设备场景选择图形对象
3 i* P# e$ f6 ~6 v" \9 n WINGDIAPI HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ);
) W+ N2 i; p% ~( B. VSetArcDirection 设置圆弧的描绘方向 * G3 O$ h o- |3 J: ]' N
SetBkColor 为指定的设备场景设置背景颜色
3 q& D7 b: ]% F+ T GSetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式
3 S" t+ ~3 s7 V# l- ^& DSetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点 % l) ~7 M: K! Q1 j
SetEnhMetaFileBits 用指定内存缓冲区内包含的数据创建一个增强型图元文件
( k, X3 E5 z' h+ b v+ KSetMetaFileBitsEx 用包含在指定内存缓冲区内的数据结构创建一个图元文件
, q2 R6 \# q) D% {* y9 ESetMiterLimit 设置设备场景当前的斜率限制
( Q$ I, }; d7 `# F+ o' k0 hSetPixel 在指定的设备场景中设置一个像素的RGB值 0 y9 s7 a9 [7 g* v/ l K
SetPixelV 在指定的设备场景中设置一个像素的RGB值 4 i2 x/ _6 _9 S# a
SetPolyFillMode 设置多边形的填充模式 1 l2 e2 _5 ^2 c) ^4 S' p! E
SetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致 6 c3 O8 _6 |) _% t4 I2 w* Z
SetWinMetaFileBits 将一个标准Windows图元文件转换成增强型图元文件 7 e2 _! O: Y1 @4 b3 Y7 b$ L6 ]* R: w
StrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域
3 h- \4 m: e) hStrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭 0 d: S1 c2 Z' O
UnrealizeObject 将一个刷子对象选入设备场景之前,如刷子的起点准备用SetBrushOrgEx修改,则必须先调用本函数
7 e. C1 a1 o P+ g( sWidenPath 根据选定画笔的宽度,重新定义当前选定的路径 5 u$ o) |, D1 u* L5 r7 ~+ U
9. API之设备场景函数 u9 R: d) H4 @4 V
CombineRgn 将两个区域组合为一个新区域 " M/ h; s8 _, E: J: i
CombineTransform 驱动世界转换。它相当于依顺序进行两次转换
' [% k' s% O5 Q3 p& }CreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景
5 _6 [+ I. x7 t: NCreateDC 为专门设备创建设备场景
3 H6 l, @$ d( B; j- JCreateEllipticRgn 创建一个椭圆 5 I5 {6 e* X% L7 @/ J3 i
CreateEllipticRgnIndirect 创建一个内切于特定矩形的椭圆区域 2 u. N- q& g. Q, E6 s z5 C
CreateIC 为专用设备创建一个信息场景 % ], X2 j! \) j1 C; [2 N6 T# e- h
CreatePolygonRgn 创建一个由一系列点围成的区域
3 D# B! `9 Z: jCreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的 $ Z, Y9 \" N9 G D4 d2 w
CreateRectRgn 创建一个矩形区域 + N/ Y" k! Y8 i* _! Q* V2 Q
CreateRectRgnIndirect 创建一个矩形区域 ( W; \) G v" Z+ `& n0 m. g! T
CreateRoundRectRgn 创建一个圆角矩形
P3 u) S2 l/ O) K8 G' \" J) \) mDeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源 " U3 z+ u2 B( G3 x% O: u. l. S
DPtoLP 将点阵从设备坐标转换到专用设备场景逻辑坐标
% u, ?) B. @* I6 ^& j7 MEqualRgn 确定两个区域是否相等
7 v2 s H0 ?( jExcludeClipRect 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图 $ j, R r z ?) `# g& O, P
ExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域 " F" V* }4 O8 p* d* T) r, r5 U$ a$ x
ExtCreateRegion 根据世界转换修改区域 3 {6 y9 K* u5 B+ a# T* L0 X
ExtSelectClipRgn 将指定区域组合到设备场景的当前剪裁区 3 C% Q& y- g. l" p5 E6 N( \
FillRgn 用指定刷子填充指定区域
" }. N' M3 n/ B0 m+ v! dFrameRgn 用指定刷子围绕指定区域画一个外框 1 p7 j. R4 p# V3 I3 g9 z: Y2 @$ K' o
GetBoundsRect 获取指定设备场景的边界矩形
4 u2 K1 q' u! k. D9 S4 H7 m& PGetClipBox 获取完全包含指定设备场景剪裁区的最小矩形 K* H; @9 h" [1 c v* _ a
GetClipRgn 获取设备场景当前剪裁区 % O6 R. l+ K/ Z
GetDC 获取指定窗口的设备场景 0 D1 C/ h' S9 I# U+ O; L
GetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项
) g6 S8 ^+ j) _* aGetDCOrgEx 获取指定设备场景起点位置(以屏幕坐标表示)
7 A3 i9 E' A6 K* y; IGetDeviceCaps 根据指定设备场景代表的设备的功能返回信息
: b$ h K8 A/ u$ |: b7 \GetGraphicsMode 确定是否允许增强图形模式(世界转换) 4 Y4 y# v) {$ T# K" H: r
GetMapMode 为特定设备场景调入映象模式 , l" Z% B( s6 Z0 v3 |" K
GetRegionData 装入描述一个区域信息的RgnData结构或缓冲区 # `, N/ w/ X. W
GetRgnBox 获取完全包含指定区域的最小矩形 ; `5 ]/ ?0 i X2 w. O
GetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新
( U3 p% s% I6 H$ t# vGetViewportExtEx 获取设备场景视口(viewport)范围
, z) O( X# `% j- x. @& }9 ~+ C3 zGetViewportOrgEx 获取设备场景视口起点
" y; d8 C- A. nGetWindowDC 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景 4 t8 {0 Z- ~7 K0 y( c* p
GetWindowExtEx 获取指定设备场景的窗口范围 % j2 Y @4 ]/ c! m3 n2 B
GetWindowOrgEx 获取指定设备场景的逻辑窗口的起点 5 l6 F5 |) h" ?2 u: L! d9 d$ ?% m
GetWindowRgn 获取窗口区域
U4 _1 s$ @, b3 ` `( V! TGetWorldTransform 如果有世界转换,为设备场景获取当前世界转换
2 T7 Y6 e9 u6 QIntersectClipRect 为指定设备定义一个新的剪裁区
) T& f- ], W5 k' Q& x% d' c( L/ H5 [InvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画 - C8 y: J0 M2 Z5 I
InvertRgn 通过颠倒每个像素值反转设备场景指定区域
& z X8 A! C, S: D" JLPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标
. d/ y' |; e2 F rModifyWorldTransform 根据指定的模式修改世界转换
( K7 P& ^0 l# L9 VOffsetClipRgn 按指定量平移设备场景剪裁区 + j5 T5 Y! M F5 ?6 D1 m! \
OffsetRgn 按指定偏移量平移指定区域 & {# `1 M% v1 ?
OffsetViewportOrgEx 平移设备场景视口区域
9 @( j; f; ~* dOffsetWindowOrgEx 平移指定设备场景窗口起点
' }# o# Z) B9 e! g) RPaintRgn 用当前刷子背景色填充指定区域 " s! O5 Y6 H; O" f
PtInRegion 确定点是否在指定区域内
4 S2 l/ R; z+ A/ m8 e/ s6 m. mPtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内)
( l# ?& }7 o4 x3 Q6 Y9 KRectInRegion 确定矩形是否有部分在指定区域内
' _) Z: l( c/ i. z8 R GRectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内)
% m5 w. f7 b X7 a! {$ B: I6 dReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景 ! L6 s3 @ n3 I" K% D
RestoreDC 从设备场景堆栈恢复一个原先保存的设备场景 8 s6 e" v4 b0 G$ E
SaveDC 将指定设备场景状态保存到Windows设备场景堆栈
" j! T( }& A& D# ~" _0 LScaleViewportExtEx 缩放设备场景视口的范围
. K' y3 \/ F0 h0 L+ WScaleWindowExtEx 缩放指定设备场景窗口范围 $ L Y2 m) {4 h% Q l8 D0 G1 n0 |
ScrollDC 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形 ; W" W5 h4 c9 a+ j7 N2 m8 ]) {8 w5 E- f
SelectClipRgn 为指定设备场景选择新的剪裁区
8 J2 j8 \$ I/ }/ N6 u0 S, \% m+ ySetBoundsRect 设置指定设备场景的边界矩形 9 ]0 F0 w( Y$ J) \9 r. q# M6 Y: t4 s
SetGraphicsMode 允许或禁止增强图形模式,以提供某些支持(包括世界转换) % W6 {/ j( W7 T( K: ?/ B
SetMapMode 设置指定设备场景的映射模式 + _7 Q2 Q( ]; Y' Z3 K; q1 d+ @
SetRectRgn 设置区域为指定的矩形
3 L3 O6 Y+ p. j! I: X6 G8 BSetViewportExtEx 设置设备场景视口范围 # ^: A( z; F* i
SetViewportOrgEx 设置设备场景视口起点 & C& x% c: @; ]+ ~3 K( H. D1 j& O
SetWindowExtEx 设置指定设备场景窗口范围
9 Z* `; m+ v; }' q5 _) DSetWindowOrgEx 设置指定设备场景窗口起点
9 K7 P" v* P7 ^& J1 I ~5 ` fSetWindowRgn 设置窗口区域
* h. w9 E; _+ i( o6 uSetWorldTransform 设置世界转换
: o# u% C6 I" ~( O$ `ValidateRgn 激活窗口中指定区域,把它从刷新区移走
4 `2 r- }6 v: a7 O' P2 O/ U1 mWindowFromDC 取回与某一设备场景相关的窗口的句柄 $ I! D* M! F1 R
10. API之硬件与系统函数 ; g$ ?2 x+ e" ?. Y1 z/ W2 }4 |
ActivateKeyboardLayout 激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义 # \0 P% j. |1 Y. Q i3 k
Beep 用于生成简单的声音
% ]- E" @7 ]- a+ \CharToOem 将一个字串从ANSI字符集转换到OEM字符集
! v5 Q# c" E& k) {* ~8 i8 CClipCursor 将指针限制到指定区域 5 j, I) i5 x! _
ConvertDefaultLocale 将一个特殊的地方标识符转换成真实的地方ID
! N5 N/ K- d' W$ k2 wCreateCaret 根据指定的信息创建一个插入符(光标),并将它选定为指定窗口的默认插入符
8 m/ k/ O+ @7 R) M: _/ I! JDestroyCaret 清除(破坏)一个插入符
6 P0 I+ Y4 O1 H+ ]2 X( m0 GEnumCalendarInfo 枚举在指定"地方"环境中可用的日历信息
' _: J9 R5 |7 Z4 B7 LEnumDateFormats 列举指定的"当地"设置中可用的长、短日期格式
/ S3 a3 V& ~4 ]: H4 N3 j: ]EnumSystemCodePages 枚举系统中已安装或支持的代码页
+ w( F7 T/ M; ?* F OEnumSystemLocales 枚举系统已经安装或提供支持的"地方"设置 6 v |7 K- h* Q3 U3 \! o
EnumTimeFormats 枚举一个指定的地方适用的时间格式
- a* x* U( b5 U- K5 V% UExitWindowsEx 退出windows,并用特定的选项重新启动
% z* i: u7 f" {7 E! S& P* k" r WINUSERAPI BOOL WINAPI ExitWindowsEx(
' a( t8 `! d8 s0 E* P o( hUINT uFlags, //EWX_LOGOFF|EWX_REBOOT|EWX_FORCE|EWX_POWEROFF|EWX_FORCEIFHUNG
K, @& K, ~9 N5 u0 `& W1 [" V4 a DWORD dwReserved); //0$ r# @$ @3 r7 V$ T$ N y* }; ~
ExpandEnvironmentStrings 扩充环境字串
5 H1 w$ {+ B& i+ `4 J, {6 q6 R# Z* iFreeEnvironmentStrings 翻译指定的环境字串块
8 G% H/ a; i( Y. Q" i. qGetACP 判断目前正在生效的ANSI代码页
+ A) d% |- n6 P7 d, \- ^GetAsyncKeyState 判断函数调用时指定虚拟键的状态 / X2 h* j: ~- a2 {- ^
GetCaretBlinkTime 判断插入符光标的闪烁频率 6 N+ A2 D; s6 O P, B( A( X
GetCaretPos 判断插入符的当前位置
4 \) u0 x* X7 |9 {6 [" tGetClipCursor 取得一个矩形,用于描述目前为鼠标指针规定的剪切区域
3 A6 g1 p/ C/ @+ q7 d2 ZGetCommandLine 获得指向当前命令行缓冲区的一个指针
6 U+ K: Z7 o7 ZGetComputerName 取得这台计算机的名称 0 D* m) K, @- K* ]/ G
GetCPInfo 取得与指定代码页有关的信息 ! j$ D1 J3 D5 N4 o2 _
GetCurrencyFormat 针对指定的"地方"设置,根据货币格式格式化一个数字
% W' J, V9 g. }/ ?GetCursor 获取目前选择的鼠标指针的句柄 A$ s$ G4 f0 ^- S
GetCursorPos 获取鼠标指针的当前位置
$ y* @- `2 g+ S- t5 F8 MGetDateFormat 针对指定的"当地"格式,对一个系统日期进行格式化
) t- p/ I4 s7 aGetDoubleClickTime 判断连续两次鼠标单击之间会被处理成双击事件的间隔时间
$ E* J3 H0 {3 t4 @( R, s8 m4 QGetEnvironmentStrings 为包含了当前环境字串设置的一个内存块分配和返回一个句柄
- k$ T5 t3 N* k" sGetEnvironmentVariable 取得一个环境变量的值 2 u( ~" J7 i3 }- R3 p
GetInputState 判断是否存在任何待决(等待处理)的鼠标或键盘事件
3 T) o' P: A$ K P7 i* c; BGetKBCodePage 由GetOEMCP取代,两者功能完全相同
7 s# K: W( e' q4 `# m5 n" ZGetKeyboardLayout 取得一个句柄,描述指定应用程序的键盘布局 , {3 S6 Q4 z( J# L& M; }
GetKeyboardLayoutList 获得系统适用的所有键盘布局的一个列表 & t! d$ x; A& P1 r) M7 ^
GetKeyboardLayoutName 取得当前活动键盘布局的名称 2 q- L: O' e! V; d. s
GetKeyboardState 取得键盘上每个虚拟键当前的状态 5 y1 p/ Z/ m% P
GetKeyboardType 了解与正在使用的键盘有关的信息
' O; K0 C# q* u) c, uGetKeyNameText 在给出扫描码的前提下,判断键名 $ x! ]3 w" k# r- E
GetKeyState 针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态 6 \9 D6 W- }" t: e5 K; \3 M
GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息 8 N% s: T6 I- u3 T x! t, p
GetLocaleInfo 取得与指定"地方"有关的信息
- C' u5 `+ J) j |. j: hGetLocalTime 取得本地日期和时间
( ?5 z& w6 l! ]GetNumberFormat 针对指定的"地方",按特定的格式格式化一个数字
8 Z8 J7 b' k& o! OGetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页 9 U( _+ D ~) H9 u
GetQueueStatus 判断应用程序消息队列中待决(等待处理)的消息类型
0 e$ W, \* @6 u" A3 y, ?GetSysColor 判断指定windows显示对象的颜色
9 U! k: S/ Z1 O! D2 n$ VGetSystemDefaultLangID 取得系统的默认语言ID 8 C& ^$ A# }0 g/ L2 o. n
GetSystemDefaultLCID 取得当前的默认系统"地方" 6 |, F: C+ @( H- w' u
GetSystemInfo 取得与底层硬件平台有关的信息
2 `! M; |) b6 h. v/ b6 ^, U' sGetSystemMetrics 返回与windows环境有关的信息 ! o* D) \8 @3 E! z* ^4 x
GetSystemPowerStatus 获得与当前系统电源状态有关的信息 / r6 m. @4 ]! R' W% M1 o
GetSystemTime 取得当前系统时间,这个时间采用的是"协同世界时间"(即UTC,也叫做GMT)格式
* H- h* ^3 |' t( H7 a8 g% {GetSystemTimeAdjustment 使内部系统时钟与一个外部的时钟信号源同步
# P& Z) `' n; L: n3 j& `GetThreadLocale 取得当前线程的地方ID ( R) \, S$ ~+ o- h4 S/ ]
GetTickCount 用于获取自windows启动以来经历的时间长度(毫秒)
* d$ _' Q* _+ @GetTimeFormat 针对当前指定的"地方",按特定的格式格式化一个系统时间 ' ?. l" H A* C
GetTimeZoneInformation 取得与系统时区设置有关的信息
1 \% z2 Y: B& M4 rGetUserDefaultLangID 为当前用户取得默认语言ID
. A/ Q* t, D; m9 t6 |9 KGetUserDefaultLCID 取得当前用户的默认"地方"设置
4 ~ U: d% W9 {5 ]- U: BGetUserName 取得当前用户的名字 ' z* n# M/ Y* G9 }9 s5 I6 I
GetVersion 判断当前运行的Windows和DOS版本
* O) f# q0 r7 `: E3 UGetVersionEx 取得与平台和操作系统有关的版本信息
# s2 Q, X! c; j( ?% b, b) y7 \HideCaret 在指定的窗口隐藏插入符(光标) 3 }6 I7 p. V! f0 `7 G
IsValidCodePage 判断一个代码页是否有效
. P1 f" u0 T6 p- vIsValidLocale 判断地方标识符是否有效 8 r, |( W- b* \* I
keybd_event 这个函数模拟了键盘行动
+ v6 M2 p) {! F0 W& tLoadKeyboardLayout 载入一个键盘布局 " a, O# A: [7 G0 I: d o$ k' |
MapVirtualKey 根据指定的映射类型,执行不同的扫描码和字符转换
6 t' D2 K x: e5 a$ \MapVirtualKeyEx 根据指定的映射类型,执行不同的扫描码和字符转换
4 g% ^ y( u0 E: L9 I& a. mMessageBeep 播放一个系统声音。系统声音的分配方案是在控制面板里决定的 * s' z7 T+ Y3 j8 h4 _+ W$ [
mouse_event 模拟一次鼠标事件
6 d3 K. ]& S$ W- j9 nOemKeyScan 判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态
8 \- k; S0 e1 r% c( |) y0 BOemToChar 将OEM字符集的一个字串转换到ANSI字符集 " z9 F- U1 W- s5 r
SetCaretBlinkTime 指定插入符(光标)的闪烁频率 * i( A" s8 r) H8 \" Y
SetCaretPos 指定插入符的位置
) k% S0 A" u; Y5 |+ l+ ~" q$ @0 vSetComputerName 设置新的计算机名
; I$ E4 J1 c+ l4 \. nSetCursor 将指定的鼠标指针设为当前指针 ) e. l: f, M( c' k9 X! R" G& Z
SetCursorPos 设置指针的位置
2 D4 V/ o3 w6 r9 r; B: P3 ]5 v0 kSetDoubleClickTime 设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间
7 a; }+ L% `5 d: N$ e/ z; b' x TSetEnvironmentVariable 将一个环境变量设为指定的值
6 I! x$ S/ i4 h* c# N8 ?SetKeyboardState 设置每个虚拟键当前在键盘上的状态 ( @; \: z! g! s( K6 R8 p
SetLocaleInfo 改变用户"地方"设置信息 & o) q" U: L0 W% l0 `% L, g( j4 f
SetLocalTime 设置当前地方时间 1 t! X6 v1 M5 H" C! Z+ ~& ^/ k: p
SetSysColors 设置指定窗口显示对象的颜色
$ h* v& `" q. ]4 _SetSystemCursor 改变任何一个标准系统指针 ! B Z( q' V" s6 Z5 X
SetSystemTime 设置当前系统时间
: D: j9 G& O$ b$ R; l ^SetSystemTimeAdjustment 定时添加一个校准值使内部系统时钟与一个外部的时钟信号源同步 + D$ [4 O E9 N$ x
SetThreadLocale 为当前线程设置地方 6 U+ M+ `; Z- F2 z6 H# K* O
SetTimeZoneInformation 设置系统时区信息 8 q' S0 g: B) R4 w! S5 ^2 p5 a
ShowCaret 在指定的窗口里显示插入符(光标)
8 B) O* e3 \& y4 [$ E6 Z5 uShowCursor 控制鼠标指针的可视性
$ S5 @5 ~ E3 |6 ]& k; PSwapMouseButton 决定是否互换鼠标左右键的功能 & n# Q" R6 C' Z1 T
SystemParametersInfo 获取和设置数量众多的windows系统参数
- x) ^7 J% x% X5 mSystemTimeToTzSpecificLocalTime 将系统时间转换成地方时间 3 L# q1 z, C+ V9 ]4 w
ToAscii 根据当前的扫描码和键盘信息,将一个虚拟键转换成ASCII字符 " R7 _, @1 e0 X! b) y, X% |) }
ToUnicode 根据当前的扫描码和键盘信息,将一个虚拟键转换成Unicode字符 5 ?( F' s/ _( B e' J% n
UnloadKeyboardLayout 卸载指定的键盘布局 : W9 F3 A/ x5 x5 O+ W! ]) A8 Y
VkKeyScan 针对Windows字符集中一个ASCII字符,判断虚拟键码和Shift键的状态 $ ]- X4 ~1 J6 w9 q `
11. API之进程和线程函数 3 C" I, t5 R2 K0 Q: N0 |
CancelWaitableTimer 这个函数用于取消一个可以等待下去的计时器操作 & _5 s7 f! M, V/ I
CallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用
% a0 O- R. m+ {* y+ ]) sConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个命名管道连接
/ H$ e# ]/ V1 `6 [/ u* Y1 |CreateEvent 创建一个事件对象
9 z5 V+ Q" M: y# rCreateMailslot 创建一个邮路。返回的句柄由邮路服务器使用(收件人)
/ \$ _8 S2 y$ l) u/ v2 O; \3 J1 U2 `CreateMutex 创建一个互斥体(MUTEX) ! c6 [/ Z+ x2 }# \7 x
CreateNamedPipe 创建一个命名管道。返回的句柄由管道的服务器端使用 + C3 d; k! }( i* {% M N3 F
CreatePipe 创建一个匿名管道
% U' t$ j1 P# \+ x' q1 |CreateProcess 创建一个新进程(比如执行一个程序) % ]8 E0 s5 P8 W* o- q% r
CreateSemaphore 创建一个新的信号机
! x! W0 i; D& Q j' cCreateWaitableTimer 创建一个可等待的计时器对象
O0 Z/ N+ }: H0 A3 U! h; H2 EDisconnectNamedPipe 断开一个客户与一个命名管道的连接
' ~7 r r; \# W1 uDuplicateHandle 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄
% ^2 K2 V2 o7 w0 a) q* |" _ExitProcess 中止一个进程
3 |/ P( f- H: J) @FindCloseChangeNotification 关闭一个改动通知对象
( Q5 {& s) j1 p/ e6 y6 zFindExecutable 查找与一个指定文件关联在一起的程序的文件名 2 A4 B5 C; I* {: \6 C9 G3 ~
FindFirstChangeNotification 创建一个文件通知对象。该对象用于监视文件系统发生的变化
4 `* e, a8 r+ o1 CFindNextChangeNotification 重设一个文件改变通知对象,令其继续监视下一次变化
" T& A7 c/ _# x0 Y JFreeLibrary 释放指定的动态链接库 ( i1 h- I% H) l# x) l3 H/ N
GetCurrentProcess 获取当前进程的一个伪句柄
# o) @1 ]' r1 r0 E0 @0 p* {2 }% f: |2 |GetCurrentProcessId 获取当前进程一个唯一的标识符
* |- Q9 {8 U/ U; w1 n; V8 l# ]GetCurrentThread 获取当前线程的一个伪句柄
9 b% A- Y9 r$ e6 \GetCurrentThreadId 获取当前线程一个唯一的线程标识符 & d9 M9 X& A' ~
GetExitCodeProces 获取一个已中断进程的退出代码 ' s, w. Y- G6 i9 \
GetExitCodeThread 获取一个已中止线程的退出代码
2 m6 u1 k2 N) s/ U6 W$ _GetHandleInformation 获取与一个系统对象句柄有关的信息 ) ]; ] Z- ?% R- O+ A9 J
GetMailslotInfo 获取与一个邮路有关的信息 / j7 @# E0 \$ g: `9 J
GetModuleFileName 获取一个已装载模板的完整路径名称 0 V1 P4 `6 C+ n
GetModuleHandle 获取一个应用程序或动态链接库的模块句柄 $ k: O# k: i" v) I8 s
GetModuleHandleA(LPCSTR lpModuleName);
# {: O6 I9 D+ y, F6 s1 B$ l3 ]7 |GetPriorityClass 获取特定进程的优先级别 ! I. m+ Q4 R; D7 g: ?( d% m6 j
GetProcessShutdownParameters 调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况
; o N- X: B( o5 V4 D" t# a2 qGetProcessTimes 获取与一个进程的经过时间有关的信息 , R8 c# D& U9 s' h7 a0 a- b
GetProcessWorkingSetSize 了解一个应用程序在运行过程中实际向它交付了多大容量的内存
' R. }* K& {' d# E7 ^+ JGetSartupInfo 获取一个进程的启动信息 |( T% H- p7 {6 I- A1 m. q
GetThreadPriority 获取特定线程的优先级别 2 B3 o. y3 c8 p2 t* q
GetTheardTimes 获取与一个线程的经过时间有关的信息 3 I$ [: U4 J* t
GetWindowThreadProcessId 获取与指定窗口关联在一起的一个进程和线程标识符
3 [# z9 c7 M) W; lLoadLibrary 载入指定的动态链接库,并将它映射到当前进程使用的地址空间
% b: H5 W- \6 F1 X* X: }$ u6 D1 |LoadLibraryEx 装载指定的动态链接库,并为当前进程把它映射到地址空间
$ q0 |* C, |& k$ A0 D5 f( yLoadModule 载入一个Windows应用程序,并在指定的环境中运行
7 T; H* O+ D2 |' G0 EMsgWaitForMultipleObjects 等侯单个对象或一系列对象发出信号。如返回条件已经满足,则立即返回
, z) Y2 `( G# _* ]9 d" c) rSetPriorityClass 设置一个进程的优先级别 ; J- d( Z9 T/ R: U: ?# h8 ]$ A: N
SetProcessShutdownParameters 在系统关闭期间,为指定进程设置他相对于其它程序的关闭顺序 ! Q' v: I2 S& S/ v: H$ ~4 T
SetProcessWorkingSetSize 设置操作系统实际划分给进程使用的内存容量 8 q8 }$ X* z1 q7 F
SetThreadPriority 设定线程的优先级别 7 z" _7 @- w# ]. F
ShellExecute 查找与指定文件关联在一起的程序的文件名
" l- k& R6 C+ X/ `. L; b! mTerminateProcess 结束一个进程 L% g0 {, C- j5 o, t4 p( V
WinExec 运行指定的程序 & x- G2 S F- w
12. API之控件与消息函数
0 z; N5 @9 U) [! q8 d5 q: V1 oAdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小
& ~" v8 h1 D0 t ^AnyPopup 判断屏幕上是否存在任何弹出式窗口
9 W7 o& q: E6 M( xArrangeIconicWindows 排列一个父窗口的最小化子窗口
+ z# \( ?4 l1 m8 L' K8 qAttachThreadInput 连接线程输入函数
) L0 g, s- A! M% i }BeginDeferWindowPos 启动构建一系列新窗口位置的过程
& N9 [: _! @: Z7 C3 vBringWindowToTop 将指定的窗口带至窗口列表顶部 4 O2 a+ k3 ]1 o6 l5 m6 R
CascadeWindows 以层叠方式排列窗口
5 I/ s7 f0 W8 _1 T gChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄
) a) O9 U& l, E# m3 DClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标
) _2 Q6 ]1 x7 M! B; m; tCloseWindow 最小化指定的窗口
' ~" m3 p, C# }' J) _CopyRect 矩形内容复制 2 _; O8 N9 i" J6 o* m/ t1 x9 c
DeferWindowPos 该函数为特定的窗口指定一个新窗口位置 # K! p8 P6 K7 V( v, A
DestroyWindow 清除指定的窗口以及它的所有子窗口
* ]. ?3 A! v9 u4 R$ g9 y0 M4 LDrawAnimatedRects 描绘一系列动态矩形
m o: d6 l0 s) t; }EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入 % J: \6 O& S8 w5 j) d i
EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态 - l$ l& D! e8 k: d' N5 I
EnumChildWindows 为指定的父窗口枚举子窗口 + g) }$ s8 F/ j K/ }
EnumThreadWindows 枚举与指定任务相关的窗口
0 Y) l% c6 `+ v* f" yEnumWindows 枚举窗口列表中的所有父窗口 4 b, {: F" A& D9 w6 \; G6 c: ]! u
EqualRect 判断两个矩形结构是否相同 " s# B# `* `& Y8 D
FindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口
* i7 e& }6 @( TFindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口 - k7 @$ F5 A( Y ]" X
FlashWindow 闪烁显示指定窗口 % I' A( d) W: K* ]0 f/ N$ v
GetActiveWindow 获得活动窗口的句柄
8 j: }- q- p. h ^8 v1 [GetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收)
4 B7 @3 Z4 x5 iGetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息 7 i& f4 T* l" }3 x3 ?+ `! t
GetClassLong 取得窗口类的一个Long变量条目
# c6 h9 H6 M+ j0 L2 Z9 fGetClassName 为指定的窗口取得类名
`( R( W: |; E$ h L' t, ]" XGetClassWord 为窗口类取得一个整数变量
: h. c: I. M( l& S4 H( @GetClientRect 返回指定窗口客户区矩形的大小
7 H) g4 j5 R/ vGetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄
% e% r: T3 t$ _GetFocus 获得拥有输入焦点的窗口的句柄 * o3 H) H' Q" V1 D0 ~6 S/ z: _
GetForegroundWindow 获得前台窗口的句柄
2 l1 s9 W0 O# T+ b8 d: \GetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄 K- f: J, n4 U8 x
GetParent 判断指定窗口的父窗口
+ A: H" I9 }* n7 w- lGetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄 7 ?9 i4 l& ^$ v$ Z7 J) h: ]
GetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分 1 e( t# A( x3 Z: a0 L( m1 e
GetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系
7 G! c% [+ S" Y, DGetWindowContextHelpId 取得与窗口关联在一起的帮助场景ID
8 _4 L4 y! G. a6 G6 JGetWindowLong 从指定窗口的结构中取得信息
$ p9 t7 U) }. D. C/ {8 O/ eGetWindowPlacement 获得指定窗口的状态及位置信息
& ]6 ]+ S/ B- F, y* \( dGetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内
' k) G+ n q6 g; `! D2 k* AGetWindowText 取得一个窗体的标题(caption)文字,或者一个控件的内容
" \# p3 ^( w2 UGetWindowTextLength 调查窗口标题文字或控件内容的长短 3 E. P% M( N2 g3 N6 z' o
GetWindowWord 获得指定窗口结构的信息
9 M) A" o. J! g0 w$ ?) r; `3 t" RInflateRect 增大或减小一个矩形的大小
0 F) Y4 x7 U0 gIntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集
y$ P9 M4 S% P: s: qInvalidateRect 屏蔽一个窗口客户区的全部或部分区域 . m3 c) n6 Y8 I
IsChild 判断一个窗口是否为另一窗口的子或隶属窗口 ! f" U2 ^# Q8 G4 D. x9 i
IsIconic 判断窗口是否已最小化
* w: E" y; o! a+ S0 Y; `/ V& H0 dIsRectEmpty 判断一个矩形是否为空 / }9 E/ n2 X; H- F: T8 r& g+ O8 q
IsWindow 判断一个窗口句柄是否有效
7 |& i8 ]# j7 Q' j, T( w2 p) gIsWindowEnabled 判断窗口是否处于活动状态 , k* ?8 z4 i+ H- b! ]
IsWindowUnicode 判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字
$ A5 Q, {1 R3 \* m7 ZIsWindowVisible 判断窗口是否可见 9 g- d; D) m7 C) c- ?3 b
IsZoomed 判断窗口是否最大化 , Q+ M" ]7 ]( |( H
LockWindowUpdate 锁定指定窗口,禁止它更新
! W6 M( v- ]9 S" uMapWindowPoints 将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统 , n W$ U [$ M# U( ^# x
MoveWindow 改变指定窗口的位置和大小
6 r' s" H# {" O/ [/ ?' _, ~OffsetRect 通过应用一个指定的偏移,从而让矩形移动起来 7 Z. n% ~/ ~1 X1 Q
OpenIcon 恢复一个最小化的程序,并将其激活
& g( m+ [% v9 V2 y6 \% r. WPtInRect 判断指定的点是否位于矩形内部
! H1 \. i! e" X& x: G7 G" `& NRedrawWindow 重画全部或部分窗口 , [% m( Y8 R0 G' D3 n! W
ReleaseCapture 为当前的应用程序释放鼠标捕获
1 X! t" b/ |0 vScreenToClient 判断屏幕上一个指定点的客户区坐标 0 t& U) W+ _" V V
ScrollWindow 滚动窗口客户区的全部或一部分 / N. h' N0 Z' @* q- L! V
ScrollWindowEx 根据附加的选项,滚动窗口客户区的全部或部分
4 N* r0 a6 u1 s# e- ~+ SSetActiveWindow 激活指定的窗口 4 E# C% [. l' P' A8 ?: I+ s
SetCapture 将鼠标捕获设置到指定的窗口
* j! L" [ S6 m8 L$ kSetClassLong 为窗口类设置一个Long变量条目
H o6 K2 o+ k4 U; P7 DSetClassWord 为窗口类设置一个条目
$ X- T9 v% \2 W7 S' S7 t8 `SetFocusAPI 将输入焦点设到指定的窗口。如有必要,会激活窗口 * V3 F5 C. P8 g9 p0 U
SetForegroundWindow 将窗口设为系统的前台窗口
, S5 \! O3 {& p9 C, B( j. t% XSetParent 指定一个窗口的新父 ' n2 B! \7 e X
SetRect 设置指定矩形的内容
5 ^7 p$ f1 o- u: Q4 T2 c6 t' d% BSetRectEmpty 将矩形设为一个空矩形
6 @$ b2 o# V2 b2 b- h; O' jSetWindowContextHelpId 为指定的窗口设置帮助场景(上下文)ID I3 K& ?9 E5 ~6 o4 L, _5 ^
SetWindowLong 在窗口结构中为指定的窗口设置信息 1 F/ \) z3 I) X$ ] g% F
SetWindowPlacement 设置窗口状态和位置信息 6 _3 k4 j- ~% X/ h3 V) ^
SetWindowPos 为窗口指定一个新位置和状态 . k# o1 c3 b9 H$ _
SetWindowText 设置窗口的标题文字或控件的内容
# {, `7 X9 e8 [) ~! OSetWindowWord 在窗口结构中为指定的窗口设置信息 6 t N% ~+ W! A# O
ShowOwnedPopups 显示或隐藏由指定窗口所有的全部弹出式窗口
) R( a. P, Q5 n: NShowWindow 控制窗口的可见性
/ C0 H; o. H. ~4 O: o. a5 b8 AShowWindowAsync 与ShowWindow相似
6 z! T* {$ I# C2 t3 g9 x% o+ ]SubtractRect 装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果
& f' i' s: `' Y& s, q7 w+ L: iTileWindows 以平铺顺序排列窗口
" c! F _8 S$ B# } P c& k- oUnionRect 装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect联合起来的结果 2 M, D4 E$ m2 |% } d. y6 L: J
UpdateWindow 强制立即更新窗口
+ Q3 W0 ]' _8 s. I3 x# HValidateRect 校验窗口的全部或部分客户区 ) s5 J/ D& V; _4 P$ y
WindowFromPoint 返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口/ D3 Z' Z9 G! P' S+ P( `7 K- A
高级音频函数—参看《VC++ 编程指南.chm》11.60 ~: O* P7 W" o9 k; a
Windows提供了三个特殊的播放声音的高级音频函数:MessageBeep、PlaySound和sndPlaySound。这三个函数可以满足播放波形声音的一般需要,但它们播放的WAVE文件(波形声音文件)的大小不能超过100KB,如果要播放较大的WAVE文件,则应该使用MCI服务。8 c" x2 C }6 D$ F# X8 D& L
BOOL MessageBeep(UINT uType);8 f& u. X7 T4 ]. n
该函数主要用来播放系统报警声音。系统报警声音是由用户在控制面板中的声音(Sounds)程序中定义的,或者在WIN.INI的[sounds]段中指定。
! c# V' S' [+ K参数uType说明了告警级,如下表所示。若成功则函数返回TRUE。
- ~5 ]& l+ c- a. N级别
, P: O7 p- e: j$ A9 [& s5 A& Q | 描述
& Z! T8 B4 N1 w9 H | -1 1 A* e: P) C; ~6 b+ V: g4 J% \
| 从机器的扬声器中发出蜂鸣声。
# T7 P8 S( O3 d; w! m* R | MB_ICONASTERISK
, I6 k! A" i0 @( ?4 M2 p) w. ] | 播放由SystemAsterisk定义的声音。
d- _& f: }- ^; n | MB_ICONEXCLAMATION [9 @8 k0 Q. @1 r
| 播放由SystemExclamation定义的声音。 ( ^9 J: L) F; ~. f e9 G( I
| MB_ICONHAND - @. B" k: t& ?5 w5 ~
| 播放由SystemHand定义的声音。 ) R7 q6 C% J/ `* I
| MB_ICONQUESTION 4 }5 ~! ^% A, p3 h9 v
| 播放由SystemQuestion定义的声音。 , \3 n1 y. U) w. [0 ~/ b
| MB_OK ) ?4 z M$ R: @. x
| 播放由SystemDefault定义的声音 0 \8 J# E2 q$ k E& K& J
| BOOL PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
7 ^; _/ F/ ]1 K参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。+ F8 Y" q3 A; m E# C$ |
参数hmod是应用程序的实例句柄,当播放WAV资源时要用到该参数,否则它必须为NULL。* V- s* n. t* k" h8 b2 O8 w
参数fdwSound是标志的组合,如下表所示。若成功则函数返回TRUE,否则返回FALSE。
. |& K6 d0 k+ m+ Z0 j* E标志 - m% J$ d) h F( n% Y8 J
| 含义 / h7 Y9 P4 t2 i0 H! s1 d
| SND_APPLICATION ( K0 E# w- @! u7 G- `
| 用应用程序指定的关联来播放声音。
+ G6 R' f. M, N# `7 U* w8 {1 _' ] | SND_ALIAS 0 U0 T# P* v3 T
| pszSound参数指定了注册表或WIN.INI中的系统事件的别名。 , q. |, g# ~0 z
| SND_ALIAS_ID
7 l( o% y& u0 L* Z. s | pszSound参数指定了预定义的声音标识符。
t% @" s( o2 e; z: G* V | SND_ASYNC 9 _6 A( h, Y0 B; J
| 用异步方式播放声音,PlaySound函数在开始播放后立即返回。 # L7 W' `1 c0 g F; m; M% X
| SND_FILENAME
; o; `& i2 @6 b, T- J# ?% s | pszSound参数指定了WAVE文件名。
5 w* ^7 J& A; q, `7 d& @+ \7 F | SND_LOOP $ Q6 w. P7 C3 V8 z5 @
| 重复播放声音,必须与SND_ASYNC标志一块使用。
8 N/ p$ a+ E1 i( E/ D3 c | SND_MEMORY
+ P( M' H& ~5 e% ~' z: q& U | 播放载入到内存中的声音,此时pszSound是指向声音数据的指针。 3 _! M9 y9 H* c E
| SND_NODEFAULT ( W \3 G+ I# M: ?( N. c9 h" u+ r' {
| 不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。
. c$ }. S: }) U5 X, d' b/ e | SND_NOSTOP 2 p) G; r- z( k6 a, j1 Y$ C8 {
| PlaySound不打断原来的声音播出并立即返回FALSE。 , v* C! X$ |# E
| SND_NOWAIT ; Y E+ k. Y/ w$ i
| 如果驱动程序正忙则函数就不播放声音并立即返回。 + g" }% @# _1 z$ w4 ]+ j
| SND_PURGE
3 n$ e! Q. i. W' e% x | 停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。
6 G, ^/ q0 O1 D8 Q: B | SND_RESOURCE 5 j4 x) I8 d- S& Q! q$ D7 x0 Y8 g
| pszSound参数是WAVE资源的标识符,这时要用到hmod参数。
" j: D K7 t! g* Z& d0 s | SND_SYNC $ `8 u `$ v* E( B% J
| 同步播放声音,在播放完后PlaySound函数才返回。
3 V1 ~0 f Q# y J | BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound);
2 T3 y& _9 o" c函数sndPlaySound的功能与PlaySound类似,但少了一个参数。除了不能指定资源名字外,参数lpszSound与PlaySound的是一样的。
3 h% r* r% M; X- {5 L jMCI播放; ~& b z9 c0 \$ O2 T" @- i
所有的MCI命令字符串都是通过多媒体API函数mciSendString传递给MCI的,该函数的声明为:
! y v0 t' P! O1 S; S& v9 S OMCIERROR mciSendString(
/ {6 V; S- c+ [2 }+ g' MLPCTSTR lpszCommand, //MCI命令字符串
2 |2 F& _$ V) bLPTSTR lpszReturnString, //存放反馈信息的缓冲区
7 J! C* b, j4 Q4 cUINT cchReturn, //缓冲区的长度$ e, ]& q+ l, d4 {4 m: F' b- U- R! h! F
HANDLE hwndCallback //回调窗口的句柄,一般为NULL2 J, b& F8 N; i. ^- ^, Y) ~$ u
); //若成功则返回0,否则返回错误码。
" r% X8 d! S+ J0 ~5 Y( O该函数返回的错误码可以用mciGetErrorString函数进行分析,该函数的声明为:% @6 q0 g+ A2 U0 E
BOOL mciGetErrorString(
3 u% c( e/ e- f: oDWORD fdwError, //函数mciSendString或mciSendCommand返回的错误码
9 F0 V3 b' @4 G5 U& a" ?LPTSTR lpszErrorText, //接收描述错误的字符串的缓冲区8 I s7 N- h, e8 M9 K
UINT cchErrorText //缓冲区的长度5 s4 s6 h6 N" n. W/ y* b/ X+ _
);4 R! n" N5 i# V, o" S
|
|