|
|
原文:http://www.cnblogs.com/cltsq/articles/api.html
+ w7 k$ U, O4 j! q' D2 B1. API之网络函数
6 x! H/ ^$ s( l. I/ z6 v9 U( `WNetAddConnection 创建同一个网络资源的永久性连接
) b, z+ a* f9 E4 ]1 ~WNetAddConnection2 创建同一个网络资源的连接
. H6 F8 {9 X0 FWNetAddConnection3 创建同一个网络资源的连接 ; v4 h2 m6 T- M! O+ T' j
WNetCancelConnection 结束一个网络连接 / x e/ p& B. o
WNetCancelConnection2 结束一个网络连接
( Y! \: e {" G% Y; d7 xWNetCloseEnum 结束一次枚举操作 * _ Y* P' i& y, {: e! [1 b
WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接
3 W4 G0 K# u6 A3 Y5 L$ q JWNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接
( ]0 L- D5 C0 B9 |) E5 Q8 ?1 Z! tWNetEnumResource 枚举网络资源 , E& B& \. W; O! S
WNetGetConnection 获取本地或已连接的一个资源的网络名称 5 m* [9 _/ Q E0 O+ J+ ~
WNetGetLastError 获取网络错误的扩展错误信息 6 B& Q' i/ W2 A1 x+ l, e
WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称
# S; I- @8 R) ^1 V2 o" NWNetGetUser 获取一个网络资源用以连接的名字
( ~4 m9 b3 {" {8 o6 `! dWNetOpenEnum 启动对网络资源进行枚举的过程 5 Z' i- U, a% \) R+ F' l d4 {' T
2. API之消息函数 6 g9 w! b+ c7 S3 v1 r7 P1 i8 Y4 |
BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口 9 R! L) h ~# w$ g
GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 7 d' w' w( W. d5 I, D( `
GetMessageTime 取得消息队列中上一条消息处理完毕时的时间 , N. Q' ?5 m- J: W; U) P/ q5 S. x
PostMessage 将一条消息投递到指定窗口的消息队列 6 c; I6 ]2 x3 w
PostThreadMessage 将一条消息投递给应用程序 3 y1 K6 n3 c6 U4 Y, `
RegisterWindowMessage 获取分配给一个字串标识符的消息编号 ' e" g7 c( D5 m6 ]6 s4 `! t1 Y
ReplyMessage 答复一个消息 - t; }% ~% I/ D+ T K& J* R: o+ a% \
SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口
; E- M, m s: U- d' t+ s0 }- @: HSendMessageCallback 将一条消息发给窗口 4 J+ t; g; Y+ b% V: P
SendMessageTimeout 向窗口发送一条消息 ~. W' R& D* w4 b; R) c9 L2 [
SendNotifyMessage 向窗口发送一条消息
+ a8 t8 {& b: W5 t, V. W% M3. API之文件处理函数
8 d* O9 m% k! ?8 sCloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等
; X+ g! m7 m5 X2 ~6 _CompareFileTime 对比两个文件的时间
# {5 S7 I- e' x0 g% j3 FCopyFile 复制文件
2 Y) a+ m" Y1 I7 C, }( ^CreateDirectory 创建一个新目录 % G3 h; y6 k8 s- _
CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台 $ A; c- }5 Q$ r I9 q* I
CreateFileMapping 创建一个新的文件映射对象 3 ?8 V: E2 }* E! e5 v0 U2 r
DeleteFile 删除指定文件
. e* s: v9 w9 R* h( h& l, QDeviceIoControl 对设备执行指定的操作 9 I7 W; E0 w6 C/ G8 T
DosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值 2 i1 a( J7 ]2 l% z4 C
FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值 6 |2 c7 N3 T, _; s8 i
FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间 8 Q# r! K$ ?, O- ^+ t
FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构
2 b2 u5 k% K! c K: T% QFindClose 关闭由FindFirstFile函数创建的一个搜索句柄
$ q3 ?- H2 A; F- w8 M2 aFindFirstFile 根据文件名查找文件
/ \9 F! t. T6 y' G1 ^6 d6 p8 {6 `, fFindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件
L/ n" m0 v$ x% SFlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区
* A* b+ O$ j. t5 \1 }) JFlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘 - g d6 Q1 o% _# M# V
GetBinaryType 判断文件是否可以执行
7 j: W+ I6 H) s( U9 GGetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数
; l6 ^7 ^9 x9 x' BGetCurrentDirectory 在一个缓冲区中装载当前目录 , h# ]+ _2 \; t, Q& Q
DWORD GetCurrentDirectory(
6 ^6 K2 ^# J% g+ F. z: h DWORD nBufferLength, //缓冲区大小! I. J6 O, Q; R* R( i O& H
LPSTR lpBuffer //缓冲区的首地址) e7 U2 C( c8 U! R9 }
);* l) c4 u6 k& u
GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量
, }, H$ R/ T; G" s1 V2 ZGetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息 % U' u; k& H6 \2 {- u0 H
GetDriveType 判断一个磁盘驱动器的类型
* o1 i" S2 ^# TGetExpandedName 取得一个压缩文件的全名 " k4 w" A) ~% d
GetFileAttributes 判断指定文件的属性
5 K! c7 c6 n+ E: J7 ?9 BGetFileInformationByHandle 这个函数提供了获取文件信息的一种机制
6 j- [2 l _+ Q3 ], mGetFileSize 判断文件长度 9 [! ^& ]2 S- N) R. S
GetFileTime 取得指定文件的时间信息
& O1 G2 t, e6 u# C- L4 wGetFileType 在给出文件句柄的前提下,判断文件类型 / }0 z* D! K/ V# t: c. s5 Y2 `/ z5 q+ l& ]
GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息 # ^. p" T$ H8 n/ g- P
GetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区 : E+ @0 [3 C" k# S
GetFullPathName 获取指定文件的完整路径名 ) F0 l6 [! E( \' I% p* O3 @* _3 [7 K
GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母 % m: |8 P1 l: a! Y2 R c J$ B
GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径 % k5 K9 X E! O# a, H/ ]
GetOverlappedResult 判断一个重叠操作当前的状态 4 y# o' H4 o* v4 l9 J. G. ?) J" p8 [
GetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值
8 H3 Q' _& ?4 ~# X5 ~GetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表
2 Y& H$ |, f5 s) [GetPrivateProfileString 为初始化文件中指定的条目取得字串
2 U" @! d0 L& P, gGetProfileInt 取得win.ini初始化文件中指定条目的一个整数值
% J9 \; n9 d: f3 p# F e1 GGetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表
& C$ I# y0 d; U% e, t% S0 `GetProfileString 为win.ini初始化文件中指定的条目取得字串
# k7 s7 m" v+ s1 o cGetShortPathName 获取指定文件的短路径名
$ x0 h6 S! v- a# F8 kGetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名 0 t8 d6 c+ _' L1 E* [' Y0 Z
GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用 & r7 T- C+ t/ [8 U& _" R$ q/ O
GetTempPath 获取为临时文件指定的路径
! A/ Y/ {: L1 r' M1 G- @& vGetVolumeInformation 获取与一个磁盘卷有关的信息 " m$ x; E5 F# w% H7 c$ b9 m/ y4 o8 B
GetWindowsDirectory 获取Windows目录的完整路径名 / g; f5 w4 q$ D3 N( I$ Y
hread 参考lread - C; s; X2 i8 j8 \
hwrite 参考lwrite函数 1 |$ a1 T! h) [ C; P: d7 S5 F
lclose 关闭指定的文件 B! _$ E+ v. G- R. e4 O
lcreat 创建一个文件
/ i) f: G0 f& Z. E7 t8 F3 c- L1 _llseek 设置文件中进行读写的当前位置 + R' G& d' m G8 o! T3 g: f
LockFile 锁定文件的某一部分,使其不与其他应用程序共享 , m1 L' }$ Q5 q
LockFileEx 与LockFile相似,只是它提供了更多的功能 ! |6 g: R/ E: ^9 g/ n0 J
lopen 以二进制模式打开指定的文件
: _2 W Y0 r- {$ P: C# Ilread 将文件中的数据读入内存缓冲区
4 R8 H. _5 e" V2 |& ~- slwrite 将数据从内存缓冲区写入一个文件
8 x' `7 G. K2 O" ^LZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件
|/ L Q0 i* Q LLZCopy 复制一个文件 " G& f. c* c' {/ I+ C; N
LZInit 这个函数用于初始化内部缓冲区
. i9 G/ b2 H3 `$ g, dLZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件 7 P4 {7 c5 t. m% O. {
LZRead 将数据从文件读入内存缓冲区
4 S4 l- K3 O" C2 ]6 p9 q2 y* pLZSeek 设置一个文件中进行读写的当前位置 6 l1 Z2 z" F7 O: P
MapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间 # P& ^5 p8 z8 ~8 m- o9 B8 ]
MoveFile 移动文件 & [, ?5 z8 O# U" n' i* a/ x
OpenFile 这个函数能执行大量不同的文件操作
" \! w4 h4 f) V/ W: F1 K! \8 w$ IOpenFileMapping 打开一个现成的文件映射对象 B5 y4 I {) R3 U' h
QueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况 ( f5 P$ ?$ r; m! i
ReadFile 从文件中读出数据 B) X( f5 b/ Z1 R
ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调 7 C8 u: a0 D0 X6 L/ Q
RegCloseKey 关闭系统注册表中的一个项(或键)
; x9 r g4 h" F: c9 H& [RegConnectRegistry 访问远程系统的部分注册表 # j% t& M$ n* p$ U, V2 {
RegCreateKey 在指定的项下创建或打开一个项
( @6 h! S6 e U( _' nRegCreateKeyEx 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数
( e( _5 I) k* B; i1 X& h( d; Q. @RegDeleteKey 删除现有项下方一个指定的子项 5 \( L1 U1 K& v6 M% n+ ~, W9 w
RegDeleteValue 删除指定项下方的一个值
# r. k- m `3 I+ D: b# MRegEnumKey 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx ( z5 h0 F+ I+ d4 [ b* `
RegEnumKeyEx 枚举指定项下方的子项
4 F. D E* t TRegEnumValue 枚举指定项的值 1 W# f }% J/ }6 `1 H' N5 F
RegFlushKey 将对项和它的子项作出的改动实际写入磁盘 0 T% w/ U/ | e9 K8 O. C& L3 o
RegGetKeySecurity 获取与一个注册表项有关的安全信息
) B4 U* I* N5 G/ s& D3 C( HRegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息 2 z9 @5 d. b2 F/ O
RegNotifyChangeKeyValue 注册表项或它的任何一个子项发生变化时,用这个函数提供一种通知机制
; B& @+ v5 l; j9 z8 ` ~ D0 MRegOpenKey 打开一个现有的注册表项 7 ?% X2 j' h& E. [
RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数
6 u/ l' J, d' }) h6 z2 j% mRegQueryInfoKey 获取与一个项有关的信息 7 ~; E/ [6 T8 G; t7 {, ]% z
RegQueryValue 取得指定项或子项的默认(未命名)值
+ k: w( r1 w' r' q. C6 dRegQueryValueEx 获取一个项的设置值 & y- o1 U2 }6 l: ?7 k
RegReplaceKey 用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息 * H' u2 ]4 t0 @6 i, y) e9 K
RegRestoreKey 从一个磁盘文件恢复注册表信息 . p+ l$ ]6 }: [* Y$ i6 H
RegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件
, Q: U3 L1 Y5 }6 R2 ~- HRegSetKeySecurity 设置指定项的安全特性 0 j$ p {# Z3 m5 a& b
RegSetValue 设置指定项或子项的默认值 : X6 w* h$ I3 o$ ^7 w% S
RegSetValueEx 设置指定项的值 / I6 v4 B; y/ ~3 |' Y) j
RegUnLoadKey 卸载指定的项以及它的所有子项 " V" n0 ]7 F( d# W8 C
RemoveDirectory 删除指定目录
) m' [8 K8 s6 c* C9 t2 X) rSearchPath 查找指定文件 1 g% x/ ^' f# G7 Q' Q, m3 L! J9 x
SetCurrentDirectory 设置当前目录 $ o/ ]; I6 Y/ o! O- ~6 }
SetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾
4 o" O8 b7 w+ n {, v$ SSetFileAttributes 设置文件属性 * D, s* p7 |& r N- C1 f( t
SetFilePointer 在一个文件中设置当前的读写位置
) W" M8 D) x0 k/ S( FSetFileTime 设置文件的创建、访问及上次修改时间 * T) t, ]$ M0 S3 U- l% g
SetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果
1 X& b$ x2 v3 A ]SetVolumeLabel 设置一个磁盘的卷标(Label) . T* L, [2 p" g7 [6 O" M4 e4 v
SystemTimeToFileTime 根据一个FILETIME结构的内容,载入一个SYSTEMTIME结构
7 _6 ~* e$ k& w Z. KUnlockFile 解除对一个文件的锁定
2 A6 W9 ]: P3 j# n! X1 SUnlockFileEx 解除对一个文件的锁定 : R8 [9 @3 \8 p1 V3 |: ?/ q# X; I5 g' s
UnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射 $ ]" w% }, ^; t4 R4 x
VerFindFile 用这个函数决定一个文件应安装到哪里
7 v9 P6 m, L! O/ q4 vVerInstallFile 用这个函数安装一个文件
* [6 D1 p$ h9 }: ]# A) WVerLanguageName 这个函数能根据16位语言代码获取一种语言的名称
$ O7 s j% j$ e9 _& R# Z+ `3 @VerQueryValue 这个函数用于从版本资源中获取信息
% _0 W9 a( e: IWriteFile 将数据写入一个文件 $ [2 U/ }; j8 Y* [5 O4 y: X
WriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调
$ H# V2 _; V$ SWritePrivateProfileSection 为一个初始化文件(.ini)中指定的小节设置所有项名和值 % ^. N# X6 R' n/ |
WritePrivateProfileString 在初始化文件指定小节内设置一个字串 + [$ @+ `( K+ ?" j; h. U' g
WriteProfileSection 为Win.ini初始化文件中一个指定的小节设置所有项名和值
- _! \' U3 @- M# ^" h3 H; GWriteProfileString 在Win.ini初始化文件指定小节内设置一个字串
. X# k. G& E. s4 l$ \8 ?+ o* W8 A4 U4. API之打印函数
Y, F( g) Y) Q7 uAbortDoc 取消一份文档的打印
6 }# T- a7 _ A, h! {# jAbortPrinter 删除与一台打印机关联在一起的缓冲文件
' x3 ^) ]! |6 cAddForm 为打印机的表单列表添加一个新表单
, }9 E) R3 V( t2 ]: A6 n( _' TAddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 - f" t9 M1 |7 n
AddMonitor 为系统添加一个打印机监视器 ( C8 R) G5 l! d6 E0 o. F/ U
AddPort 启动"添加端口"对话框,允许用户在系统可用端口列表中加入一个新端口 : e. I$ n! z* s2 r
AddPrinter 在系统中添加一台新打印机
5 Q# E6 b) z! S" u- TAddPrinterConnection 连接指定的打印机
" M F; F6 Y6 f- b1 ~7 EAddPrinterDriver 为指定的系统添加一个打印驱动程序
! s# z6 u( K0 f' VAddPrintProcessor 为指定的系统添加一个打印处理器 : N5 _; W& m$ N* k4 ?8 k/ R
AddPrintProvidor 为系统添加一个打印供应商 4 w3 F5 u% ~ x! g3 C! z& ^. ]
AdvancedDocumentProperties 启动打印机文档设置对话框
5 y7 m) v: d( _7 B2 a( UClosePrinter 关闭一个打开的打印机对象
: X+ T. Q; ~' y* q8 a) p# _ConfigurePort 针对指定的端口,启动一个端口配置对话框 - r+ j0 ^; n2 p, q
ConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接
8 a" l+ e) p6 U4 JDeleteForm 从打印机可用表单列表中删除一个表单
. g( t ?8 H6 |5 S' l" |+ \+ q' I/ SDeleteMonitor 删除指定的打印监视器
" u. S7 v) m$ E& W: L9 Y$ w9 NDeletePort 启动"删除端口"对话框,允许用户从当前系统删除一个端口
' W1 o- h9 [. d5 n: q! iDeletePrinter 将指定的打印机标志为从系统中删除 3 y- E+ Z! U4 m3 S
DeletePrinterConnection 删除与指定打印机的连接
. e- o2 x7 D8 Z* \DeletePrinterDriver 从系统删除一个打印机驱动程序
$ W' x. G( L' e7 e r' Z! VDeletePrintProcessor 从指定系统删除一个打印处理器
, w- a# q4 j! A# d& m1 m2 xDeletePrintProvidor 从系统中删除一个打印供应商 ' j1 h& L- f8 P) S% \' F5 N
DeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息
' c* j& s" y: R* @DocumentProperties 打印机配置控制函数 2 P/ m! {9 c, U# A: a
EndDocAPI 结束一个成功的打印作业 7 e9 q/ x( f# b0 i6 S# L9 }
EndDocPrinter 在后台打印程序的级别指定一个文档的结束 5 @9 O# ]" y) S% F! {/ [7 P* i
EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 # M; R1 s; L' f6 b0 U. j. ^) W% P% `
EndPagePrinter 指定一个页在打印作业中的结尾 : F2 B1 e4 h9 _
EnumForms 枚举一台打印机可用的表单 k5 d8 T$ j1 M1 `8 X
EnumJobs 枚举打印队列中的作业
0 e! u; L% V( s$ }9 GEnumMonitors 枚举可用的打印监视器
4 S) H4 v; ]/ s% R8 f s- f2 xEnumPorts 枚举一个系统可用的端口
; {1 i: H1 X" x! {$ kEnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 ' J6 ]7 B1 ]1 F; a; E
EnumPrinters 枚举系统中安装的打印机
5 R( j1 E) N' E. ?" jEnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 - a/ |$ d; [% \6 O @; l6 V+ U
EnumPrintProcessors 枚举系统中可用的打印处理器 4 O. T$ G. c. _; A$ }( j& v
Escape 设备控制函数
' H v! I/ Z3 L7 tFindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 ; b% a8 e: o2 v) \
FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化
' X8 [2 z6 T% {FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因
$ W$ l$ K, U- S' C' x% \0 S% DFreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 # r: l$ R$ P$ C5 b# Q
GetForm 取得与指定表单有关的信息
/ r. C+ i- \9 `$ `8 C1 I. tGetJob 获取与指定作业有关的信息 & S$ c3 _# ?; F5 l
GetPrinter 取得与指定打印机有关的信息
( U1 T+ n/ [* Q, s" |( wGetPrinterData 为打印机设置注册表配置信息
# L6 V5 d) B2 A3 G9 _2 H% c6 @GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 6 t/ {( {2 \7 @& Z6 @; }3 P
GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么
+ e; R& K8 z$ X6 p x" ^# P1 YGetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录
) L8 g4 h4 N0 r) O' P& w5 @0 \; hOpenPrinter 打开指定的打印机,并获取打印机的句柄 * N& J* i& S' _. ?4 s$ U
PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 ( r4 w0 \/ ^% n2 {: Z
PrinterProperties 启动打印机属性对话框,以便对打印机进行配置
$ Q: v8 @! b; h. PReadPrinter 从打印机读入数据
1 d% ?' P: g& c" _3 ~1 V6 R; qResetDC 重设一个设备场景 8 k. k& t: U- V& C* M2 T
ResetPrinter 改变指定打印机的默认数据类型及文档设置 6 C' K5 t9 G& D% e0 S# b& D
ScheduleJob 提交一个要打印的作业 % T9 N2 I8 |& h: u( y( B5 u) }
SetAbortProc 为Windows指定取消函数的地址
" z) u: n3 _0 U9 f- RSetForm 为指定的表单设置信息 % M8 Q' G, l3 G
SetJob 对一个打印作业的状态进行控制
4 |1 U( S, F9 |+ ~1 x' N+ p6 LSetPrinter 对一台打印机的状态进行控制
) n# `6 O% `8 J- q. ?4 w* W+ sSetPrinterData 设置打印机的注册表配置信息
1 g' t9 ?4 o1 O$ B/ H) i0 O) U( oStartDoc 开始一个打印作业
5 N" K" R0 E! s* s3 IStartDocPrinter 在后台打印的级别启动一个新文档
6 N! ~+ `/ J, g* q9 TStartPage 打印一个新页前要先调用这个函数 : d/ g. J X$ _4 Q' r/ N4 Q
StartPagePrinter 在打印作业中指定一个新页的开始 % C( O' Q# ^ d% H
WritePrinter 将发送目录中的数据写入打印机 y& e+ L4 \" _9 ^1 m0 V0 o8 ~& [3 S
5. API之文本和字体函数
' ~) N4 O' P6 m# H" {: ~5 ~6 ^AddFontResource 在Windows系统中添加一种字体资源 , U7 v9 T( U2 D: u& B" P& B
CreateFont 用指定的属性创建一种逻辑字体 , a$ l. d. O# h
CreateFontIndirect 用指定的属性创建一种逻辑字体
& e8 t6 ~4 Q2 G" i( PCreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统 + {" t7 i% x2 e P9 k+ I
DrawText 将文本描绘到指定的矩形中
3 k* r9 l7 e. ~; `! g3 _DrawTextEx 与DrawText相似,只是加入了更多的功能 , ^) n2 P4 Y% G) z
EnumFontFamilies 列举指定设备可用的字体
. A) u, z" ~' c- {) JEnumFontFamiliesEx 列举指定设备可用的字体
" v u9 \' Y3 `) k- CEnumFonts 列举指定设备可用的字体
/ Q; l4 O2 F* O8 S" [" t0 q* FExtTextOut 经过扩展的文本描绘函数。也请参考SetTextAlign函数 , P- W7 ]6 J% w+ c
GetAspectRatioFilterEx 用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小 ' j( Z! u. z7 ^) y( q8 o1 U
GetCharABCWidths 判断TureType字体中一个或多个字符的A-B-C大小
4 ?1 {% f* ], q) L9 x0 @1 Y) HGetCharABCWidthsFloat 查询一种字体中一个或多个字符的A-B-C尺寸
- n5 `, E& _) v3 qGetCharacterPlacement 该函数用于了解如何用一个给定的字符显示一个字串 ( h8 K3 c3 }. ~* X6 ^" B; l3 c
GetCharWidth 调查字体中一个或多个字符的宽度
3 {. ? H! u# u6 k" m0 dGetFontData 接收一种可缩放字体文件的数据 3 B, n6 p) y" O9 @& a/ x' o* G
GetFontLanguageInfo 返回目前选入指定设备场景中的字体的信息 ' Q; t0 E" b. A2 j4 \. Q
GetGlyphOutline 取得TureType字体中构成一个字符的曲线信息
4 X) S8 E& `, a s3 a# ]GetKerningPairs 取得指定字体的字距信息
' o3 ]" l b4 M5 UGetOutlineTextMetrics 接收与TureType字体内部特征有关的详细信息
9 W. O* c( i/ H! ]2 V: EGetRasterizerCaps 了解系统是否有能力支持可缩放的字体
$ B5 _5 x+ l' G, T! m0 j& dGetTabbedTextExtent 判断一个字串占据的范围,同时考虑制表站扩充的因素
# @: P9 e% T0 |* E0 D! kGetTextAlign 接收一个设备场景当前的文本对齐标志 % O! { J# J; r/ S- J, T5 Z
GetTextCharacterExtra 判断额外字符间距的当前值 & @/ z- U( }( {+ n# D( o/ O
GetTextCharset 接收当前选入指定设备场景的字体的字符集标识符 * s& i, G0 O# B, l0 O
GetTextCharsetInfo 获取与当前选定字体的字符集有关的详细信息 0 D- r% J2 J/ S6 ^% b7 R7 E7 n
GetTextColor 判断当前字体颜色。通常也称为"前景色" I0 D: G, x& k0 s! j
GetTextExtentExPoint 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息
5 ^4 C8 t( G4 F% n: \GetTextExtentPoint 判断一个字串的大小(范围) , K' a) S7 a2 {& N
GetTextFace 获取一种字体的字样名 " C! Q& R% F3 Y5 ^" F* M
GetTextMetrics 获取与选入一种设备场景的物理字体有关的信息 ( t+ H S S, v3 l' `9 q
GrayString 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态 ! x( g3 }) U5 b0 ~) {1 h- R
PolyTextOut 描绘一系列字串
3 o; Q3 U( l( q0 z7 p) B& URemoveFontResource 从Windows系统中删除一种字体资源
! O' }' O: {" r& C1 ?SetMapperFlags Windows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体 , K0 b& S/ V+ T
SetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置 9 }/ {& h9 x v' Q4 ~6 I
SetTextCharacterExtra 描绘文本的时候,指定要在字符间插入的额外间距 ) ~6 \ v0 }" y% L# Z$ ]
SetTextColor 设置当前文本颜色。这种颜色也称为"前景色"
) y; S' c3 V8 L( lSetTextJustification 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理
6 ~9 L; ]2 a- F# }0 e0 V4 zTabbedTextOut 支持制表站的一个文本描绘函数 + Q; w% N& A& D( |2 S' @0 G
TextOut 文本绘图函数
+ v- W/ B0 f+ h. u. cWINGDIAPI BOOL WINAPI TextOut($ F/ Y, i. n5 U, \( K
HDC, //输出设备
8 j7 h }9 }; t' \. A0 |. mint, //输出的横坐标
+ [/ T' S7 Z6 r$ X- h% y# Mint, //纵坐标: p4 L: C; q4 G$ y2 _" i. q+ ^9 F! Q
LPCSTR, //输出的文本str0 s* X* w1 I5 @6 E7 R2 S! T
int); //文本的长度:lstrlen(str)' W' C4 |$ Q* h, h3 q, `$ r+ B( z
6. API之菜单函数 ) f+ h1 P: r. _( `
AppendMenu 在指定的菜单里添加一个菜单项 9 }! ~! Q- d: h5 [' O
CheckMenuItem 复选或撤消复选指定的菜单条目
7 x1 ^4 s: O5 K( D& c- c& a% pCheckMenuRadioItem 指定一个菜单条目被复选成"单选"项目
7 c2 v& y, J4 X$ nCreateMenu 创建新菜单 + N% o: f1 h5 u# K- d" o2 k
CreatePopupMenu 创建一个空的弹出式菜单
0 i! I; U& O% w" G, M" ZDeleteMenu 删除指定的菜单条目 1 ^" @- Y; r, w! n2 ^
DestroyMenu 删除指定的菜单 & R. n2 @0 w! L
DrawMenuBar 为指定的窗口重画菜单
* E. P+ [: q JEnableMenuItem 允许或禁止指定的菜单条目 ; i& S& B# m$ [. }* i' e
GetMenu 取得窗口中一个菜单的句柄 ; q; X2 n/ |2 E
GetMenuCheckMarkDimensions 返回一个菜单复选符的大小
3 k8 H- @- F! `+ TGetMenuContextHelpId 取得一个菜单的帮助场景ID $ H2 z L3 K7 _2 S* c( c4 V
GetMenuDefaultItem 判断菜单中的哪个条目是默认条目
: B: ]* B( M2 nGetMenuItemCount 返回菜单中条目(菜单项)的数量
3 n! J7 p" l! w3 m+ Z8 I$ ZGetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID
5 L$ s9 A |5 o9 Y o: }9 V1 ?GetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息
- p7 [0 t: D; U2 QGetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息
, M0 l0 `: v- p9 r& LGetMenuState 取得与指定菜单条目状态有关的信息
/ j6 n, O/ C" W- j7 c0 dGetMenuString 取得指定菜单条目的字串
$ O- h5 r# w& r9 J( [) nGetSubMenu 取得一个弹出式菜单的句柄,它位于菜单中指定的位置 9 J3 M9 |- A8 h* ~/ E) [. h
GetSystemMenu 取得指定窗口的系统菜单的句柄
: w% M; L& ?% g1 \2 NHiliteMenuItem 控制顶级菜单条目的加亮显示状态
( K( a# v) o# GInsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动 8 Z+ c* A/ ]8 N$ ^9 J
InsertMenuItem 插入一个新菜单条目 ) ~3 {- \' Y+ K" y, X( E
IsMenu 判断指定的句柄是否为一个菜单的句柄 4 P8 ~3 j! e1 i: w+ e8 o
LoadMenu 从指定的模块或应用程序实例中载入一个菜单
0 Y6 s6 C9 u4 ]- tLoadMenuIndirect 载入一个菜单
- |! {/ G# Y5 V& @MenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点 % v/ T2 J* t( b( {7 t0 n% W
ModifyMenu 改变菜单条目
+ d! l9 T6 d" M: A: U+ nRemoveMenu 删除指定的菜单条目 9 d4 _/ u* N7 J% z; B
SetMenu 设置窗口菜单
* g/ P( Q" d' I9 QSetMenuContextHelpId 设置一个菜单的帮助场景ID 5 k* H9 o* j }3 z% d1 o/ P2 s; [: p
SetMenuDefaultItem 将一个菜单条目设为默认条目
/ f. s0 B/ @+ l+ d) t- ySetMenuItemBitmaps 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√)
3 W7 m* g8 O* r5 i2 E4 BSetMenuItemInfo 为一个菜单条目设置指定的信息 * h y+ l' S; A9 f. M1 p6 }
TrackPopupMenu 在屏幕的任意地方显示一个弹出式菜单 + c& n+ ]' Y2 a& ~
TrackPopupMenuEx 与TrackPopupMenu相似,只是它提供了额外的功能
& b) ?$ B. C8 m* l# p- ^8 A7. API之位图、图标和光栅运算函数
5 }" j8 `3 O7 e7 z; a2 S- K$ b0 PBitBlt 将一幅位图从一个设备场景复制到另一个1 c. B5 w, B# y2 V, h+ T$ N
WINGDIAPI BOOL WINAPI BitBlt() J3 ?" R" E) y n
HDC, //目标HDC
. A' q: @/ O. f$ b) ?int, //X18 }& {* s/ L& I+ B
int, //Y1* a/ J2 M% {( A$ b
int, //width+ u) U& v2 Z% K6 ]+ J/ Z
int, //height
1 g: ~! {# y- QHDC, //源HDC, P7 `$ j9 n) l' D% y4 S z
int, //右边的距离
" D3 [5 V- U, m- \int, //??2 Y5 y$ u4 v( l8 B2 @' _& B
DWORD); //拷贝方式:SRCCOPY|SRCPAINT|SRCAND|SRCINVERT|RCERASE|NOTSRCCOPY|NOTSRCERASE|MERGECOPY|MERGEPAINT|
/ n$ r+ o9 j' a4 N: W" xPATCOPY|PATPAINT|PATINVERT|DSTINVERT|BLACKNESS|WHITENESS7 I5 w1 G& b4 W3 J, d1 O ?8 Q. N
CopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序 & H2 F( y/ i4 S& I4 x
CopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作 + k& }% R1 Y# Y9 ]2 `5 q2 `0 w( Y
CreateBitmap 按照规定的格式创建一幅与设备有关位图 ! Y8 ]9 E1 z0 a4 D+ x6 I6 j
CreateBitmapIndirect 创建一幅与设备有关位图
4 X# l4 I7 A5 |7 yCreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容 5 L( e( z z1 B! K4 Z- j6 J+ w
CreateCursor 创建一个鼠标指针 5 E* N4 V* t; H9 T5 \4 M7 i
CreateDIBitmap 根据一幅与设备无关的位图创建一幅与设备有关的位图 + N5 ~6 R9 U4 N' n
CreateDIBSection 创建一个DIBSection . {8 g; k4 ?5 }8 M1 t A
CreateIcon 创建一个图标 * x3 D, w% m+ l/ F* g
CreateIconIndirect 创建一个图标 ) v% b7 m+ _9 R
DestroyCursor 清除指定的鼠标指针,并释放它占用的所有系统资源 2 a% ]7 x/ B2 M9 G4 C* {
DestroyIcon 清除图标 3 I8 Q3 T: A/ V
DrawIcon 在指定的位置画一个图标
! E% ?; {! ^' y& PDrawIconEx 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能
2 C' S/ w- n) c* u: i( C( v0 qExtractAssociatedIcon 判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之 : d; _6 B5 A/ S
ExtractIcon 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来
# f/ \& E$ y! |3 N% J* DGetBitmapBits 将来自位图的二进制位复制到一个缓冲区 ! P/ ^8 ]2 o i- w% D
GetBitmapDimensionEx 取得一幅位图的宽度和高度
1 e+ A& p$ z0 Z, z. h6 zGetDIBColorTable 从选入设备场景的DIBSection中取得颜色表信息 $ y1 `& E% `" k1 m; s; J
GetDIBits 将来自一幅位图的二进制位复制到一幅与设备无关的位图里
2 j5 Z& L7 M) nGetIconInfo 取得与图标有关的信息
4 b a! a9 c' K4 |9 [( zGetStretchBltMode 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式 ; R9 i: O1 {; q8 d2 @$ h
LoadBitmap 从指定的模块或应用程序实例中载入一幅位图
# L6 Q8 o6 A1 S0 l9 ~ SLoadCursor 从指定的模块或应用程序实例中载入一个鼠标指针
: P9 G T. @/ S! s0 [6 S8 Y2 x) \LoadCursorFromFile 在一个指针文件或一个动画指针文件的基础上创建一个指针 4 v4 ^% k; {% J; H. }9 E' h7 w
LoadIcon 从指定的模块或应用程序实例中载入一个图标 - X6 x8 @; R* S& R: Z: j
LoadImage 载入一个位图、图标或指针
" a3 B1 T$ f$ W+ r! FHANDLE LoadImageA(3 Q+ m; a& Y. f: D" z+ z
HINSTANCE, //当前实例句柄:AfxGetInstanceHandle(): }1 N( G' |/ e0 |& x8 o
LPCSTR, //资源所在的目录:c:\help.bmp
, s: U+ f. u' B7 d; V9 w; i8 `) y UINT, //类型:IMAGE_BITMAP|IMAGE_ICON|IMAGE_CURSOR|IMAGE_ENHMETAFILE
# J8 w0 K' I+ z" s$ M int, //
6 f4 t3 n a. Z- f. H, `; g int, //1 }1 _8 }: t( r' q0 B
UINT); //风格:LR_DEFAULTCOLOR|LR_MONOCHROME|LR_COLOR|LR_COPYRETURNORG|
" r9 G* @/ _# @! `6 T/ x7 c: S* m5 OR_COPYDELETEORG|LR_LOADFROMFILE|LR_LOADTRANSPARENT|LR_DEFAULTSIZE|LR_VGACOLOR|
z' n* j* Y6 N) _1 @LR_LOADMAP3DCOLORS|LR_CREATEDIBSECTION|LR_COPYFROMRESOURCE|LR_SHARED, X+ h% n, h9 E
MaskBlt 执行复杂的图象传输,同时进行掩模(MASK)处理 ( [ F* y a' W
PatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景
& i. F3 ]8 y" ^! D. APlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理 ! j7 O5 K8 d9 G- y% @# X% l
SetBitmapBits 将来自缓冲区的二进制位复制到一幅位图
* t7 I( N1 l$ D W3 {3 TSetBitmapDimensionEx 设置一幅位图的宽度。以一毫米的十分之一为单位 8 X# t+ ~5 ]% h# C
SetDIBColorTable 设置选入设备场景的一个DIBSection的颜色表信息
0 v* ]/ z7 \# c$ z( U1 U gSetDIBits 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里
* q! E( K: W4 Z; T- e5 V$ h6 cSetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备
' p1 b" }/ R9 i( [SetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式 5 X/ V/ h; _; V+ K e
StretchBlt 将一幅位图从一个设备场景复制到另一个
2 {' k* z7 g3 ?$ C0 EStretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景 ' ]( q I1 R% \6 I: m' O' g4 Q/ U
8. API之绘图函数 - Z* F2 [5 g; A2 s" s
AbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作
+ p6 i2 A6 Z7 _: }6 f# g) SAngleArc 用一个连接弧画一条线
' p9 F. o9 k0 v' q: I/ |# v) \. TArc 画一个圆弧
' I6 u) q. M, R: e1 Y4 \" U4 FBeginPath 启动一个路径分支 7 |% o4 T! {' T) u+ F$ _
CancelDC 取消另一个线程里的长时间绘图操作 . o" p4 J0 A( P% b: v6 H) Y
Chord 画一个弦
/ N6 E3 J7 ^: s" c" ^6 u+ GCloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄
6 i" o( t5 q1 i9 R- Z( |3 n9 MCloseFigure 描绘到一个路径时,关闭当前打开的图形
' x( y5 L* m% j0 P6 r8 x& T5 |3 rCloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄
4 X7 ]3 Y' ^6 n$ U% r b9 fCopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝)
5 M4 O. p9 B' ICopyMetaFile 制作指定(标准)图元文件的一个副本
0 v. y' ~+ @; }0 g, d0 P8 VCreateBrushIndirect 在一个LOGBRUSH数据结构的基础上创建一个刷子
( K9 ^) h( w1 sCreateDIBPatternBrush 用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案)
( C3 J0 f3 P( Z6 g7 I% uCreateEnhMetaFile 创建一个增强型的图元文件设备场景 & ?1 j) A, P, w. J3 G: \
CreateHatchBrush 创建带有阴影图案的一个刷子
8 \1 ]4 M1 R+ ]# G; WCreateMetaFile 创建一个图元文件设备场景
9 {# j3 \* r5 k Z; K8 bCreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子 / z/ q5 \* y- E. x& x; R
CreatePen 用指定的样式、宽度和颜色创建一个画笔 $ O7 Y, F% R0 @4 ?
CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔 " X& T' ~7 @: P' x+ _& R& \, u
CreateSolidBrush 用纯色创建一个刷子
3 W6 m0 [9 N) _# \DeleteEnhMetaFile 删除指定的增强型图元文件
5 r% Y2 f% }" J6 g6 ^; Z, O2 HDeleteMetaFile 删除指定的图元文件
) |7 R# l. _- i2 ?WINGDIAPI BOOL WINAPI DeleteObject(HGDIOBJ) 删除GDI对象,对象使用的所有系统资源都会被释放
5 t* X B c: ?DrawEdge 用指定的样式描绘一个矩形的边框 7 h& E4 }5 H ~( {4 Q
DrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序 ' @* Y/ Q! {, s5 u- I) d
DrawFocusRect 画一个焦点矩形
* j4 b8 C4 W; P4 G7 P ]# VDrawFrameControl 描绘一个标准控件 ' V9 B1 Q9 e9 H1 J0 a! m
DrawState 为一幅图象或绘图操作应用各式各样的效果
" Q8 E$ q' B9 j. [/ U! QEllipse 描绘一个椭圆,由指定的矩形围绕 1 M* d% N: h( y# v9 W# B
EndPath 停止定义一个路径
1 v$ i0 }% S2 AEnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录 U% Y: T/ n3 m. ]" q/ B+ l
EnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录 6 N7 L3 i0 S+ T3 D) M
EnumObjects 枚举可随同指定设备场景使用的画笔和刷子 ; r) f8 e) ^, p
ExtCreatePen 创建一个扩展画笔(装饰或几何)
! {1 C7 a: c4 p- N ]6 L f6 w' h% |ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域 8 s2 e# H7 j3 J
FillPath 关闭路径中任何打开的图形,并用当前刷子填充
% S: J! B$ o' |% n/ R; l; k5 F* }FillRect 用指定的刷子填充一个矩形 : o6 \9 d0 B! F2 h& j$ _
FlattenPath 将一个路径中的所有曲线都转换成线段
9 e9 R2 ~1 J8 X. N1 pFloodFill 用当前选定的刷子在指定的设备场景中填充一个区域 . n q4 E7 i& n# V8 B
FrameRect 用指定的刷子围绕一个矩形画一个边框 - [- X0 q- z& i
GdiComment 为指定的增强型图元文件设备场景添加一条注释信息
, j7 Y4 e( M D5 mGdiFlush 执行任何未决的绘图操作 6 n s' N; L6 [3 ?" @+ B6 |$ o/ q
GdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中 i! c: \" f0 j1 p F
GdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列
% h& M/ V& \" U0 ~0 {% HGetArcDirection 画圆弧的时候,判断当前采用的绘图方向 . S$ v b8 j1 c0 J
GetBkColor 取得指定设备场景当前的背景颜色 0 s6 V3 L* h/ \
GetBkMode 针对指定的设备场景,取得当前的背景填充模式
0 B+ l& a; X4 }2 w# I1 D, s1 \+ B QGetBrushOrgEx 判断指定设备场景中当前选定刷子起点 $ l- {( s( I/ B. a* X
GetCurrentObject 获得指定类型的当前选定对象 + k* j8 d) r% c
GetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置
, t# ]( `) Z p- W ~3 R* K! WGetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄
* R( U9 k8 m4 W4 a3 b! |/ dGetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里 . _. M1 }9 O8 {# c$ t" U: z
GetEnhMetaFileDescription 返回对一个增强型图元文件的说明 9 l( h# }# L6 V* y! {. Z- {
GetEnhMetaFileHeader 取得增强型图元文件的图元文件头 7 h- \) X2 c6 \! S |& u- o
GetEnhMetaFilePaletteEntries 取得增强型图元文件的全部或部分调色板
4 |. r6 b: z. n. l' e- rGetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄
2 Q+ h/ ?1 V( g. r6 x: GGetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区
7 z8 d" f% m2 ~$ GGetMiterLimit 取得设备场景的斜率限制(Miter)设置 + h$ S+ g _- y1 A
GetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色
- p! [ t. F( e9 o& BGetObjectAPI 取得对指定对象进行说明的一个结构 6 S' i* Q' g* T/ ?8 j& }( V: k
GetObjectType 判断由指定句柄引用的GDI对象的类型
1 g# G% a! ?, S% Q7 ^; GGetPath 取得对当前路径进行定义的一系列数据 . `. s2 q9 D$ p+ n
GetPixel 在指定的设备场景中取得一个像素的RGB值 + T( N; Y* \" L; z
GetPolyFillMode 针对指定的设备场景,获得多边形填充模式
$ s' K. t3 Q; z6 z! `% yGetROP2 针对指定的设备场景,取得当前的绘图模式
7 k9 I: u! ]; d# g9 F$ dGetStockObject 取得一个固有对象(Stock) A$ U- x+ y5 \! F) F3 {) g
GetSysColorBrush 为任何一种标准系统颜色取得一个刷子 * A ?! `: p" t B9 t3 ]! w
GetWinMetaFileBits 通过在一个缓冲区中填充用于标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件 ' O$ u, K5 d, c K
InvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形 . ~& T4 _ p% W
LineDDA 枚举指定线段中的所有点
3 V' R8 e( ?) u5 I8 Z; `$ w" qLineTo 用当前画笔画一条线,从当前位置连到一个指定的点
0 J3 v0 s0 b4 q/ vMoveToEx 为指定的设备场景指定一个新的当前画笔位置
- f v; L9 q( E8 @PaintDesk 在指定的设备场景中描绘桌面墙纸图案 / A l; p" J# q2 p; W$ I9 ^# Z7 y
PathToRegion 将当前选定的路径转换到一个区域里
# [2 X& w3 K" ?$ }9 gPie 画一个饼图
- q9 ]% m/ F7 F2 {) bPlayEnhMetaFile 在指定的设备场景中画一个增强型图元文件 8 z: }7 a' o: I+ t' T2 z
PlayEnhMetaFileRecord 回放单独一条增强型图元文件记录
, T. @) |0 W$ U. kPlayMetaFile 在指定的设备场景中回放一个图元文件 9 O, C& E" J( Q) A
PlayMetaFileRecord 回放来自图元文件的单条记录 5 u7 [% D9 @) i) ~
PolyBezier 描绘一条或多条贝塞尔(Bezier)曲线
* k9 E5 U, ^+ \; Y7 Y% U! sPolyDraw 描绘一条复杂的曲线,由线段及贝塞尔曲线组成 + j+ _8 q( V# A4 m2 `
Polygon 描绘一个多边形
5 S( E2 A% g1 P; C C8 d0 U4 R( UPolyline 用当前画笔描绘一系列线段
' V; t+ t- ]9 `# o2 }! |PolyPolygon 用当前选定画笔描绘两个或多个多边形
/ j+ G3 c: H: x$ W. o# _PolyPolyline 用当前选定画笔描绘两个或多个多边形
! w) n' A: F$ _4 B0 q! l& m5 MRectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充
! [3 V5 r# \4 X' ~RoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充 ; T6 _# v0 a( j, P5 l
SelectClipPath 将设备场景当前的路径合并到剪切区域里
( M2 T+ {: D- q6 [SelectObject 为当前设备场景选择图形对象 e! J& t: K1 U% a
WINGDIAPI HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ);
$ {. N/ M: y0 VSetArcDirection 设置圆弧的描绘方向 " B. Z( V7 n+ E* l, M
SetBkColor 为指定的设备场景设置背景颜色
- j( E7 K, c. a3 E/ G5 ySetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式 , l4 M' v) _- t
SetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点
3 z1 G# Z& B- s. e" eSetEnhMetaFileBits 用指定内存缓冲区内包含的数据创建一个增强型图元文件 4 M% x/ g& z0 V7 Q! `# i
SetMetaFileBitsEx 用包含在指定内存缓冲区内的数据结构创建一个图元文件 - M( }$ M4 f# I% s7 j) p
SetMiterLimit 设置设备场景当前的斜率限制 1 n% v/ g) X9 ~! e3 z# ^
SetPixel 在指定的设备场景中设置一个像素的RGB值 : u$ w# t ~/ M2 l$ E) X5 U
SetPixelV 在指定的设备场景中设置一个像素的RGB值 ; M0 L5 B5 i4 j
SetPolyFillMode 设置多边形的填充模式
/ x0 N6 G# P' G! l) b1 [8 NSetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致
/ H$ N9 F% S4 N" QSetWinMetaFileBits 将一个标准Windows图元文件转换成增强型图元文件 $ K; r8 X6 e1 W- l4 x1 h
StrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域
3 M# Z+ [! m' t0 n( OStrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭 4 U! D! S0 P9 n2 \4 ~- \, q
UnrealizeObject 将一个刷子对象选入设备场景之前,如刷子的起点准备用SetBrushOrgEx修改,则必须先调用本函数 ; I z- r( X, T2 f
WidenPath 根据选定画笔的宽度,重新定义当前选定的路径
" G) ^3 [+ ~1 J- g5 U; P9. API之设备场景函数
2 U, }" S2 ]' ^' f5 dCombineRgn 将两个区域组合为一个新区域 * G* u/ B4 e1 l2 _) C8 X) x
CombineTransform 驱动世界转换。它相当于依顺序进行两次转换 : g! h: D$ s1 ]( t* z
CreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景 9 W( P0 p* {: {
CreateDC 为专门设备创建设备场景
! W" W+ |! q4 ?# S: tCreateEllipticRgn 创建一个椭圆 2 v# g/ e4 @; v+ t* i' V
CreateEllipticRgnIndirect 创建一个内切于特定矩形的椭圆区域 + ~9 X M1 u( ]3 Q _
CreateIC 为专用设备创建一个信息场景 ; q& }$ l$ W( t6 h6 ^
CreatePolygonRgn 创建一个由一系列点围成的区域
6 L3 F$ H" s) J; I. }2 KCreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的
! Y6 g! \: h/ q+ UCreateRectRgn 创建一个矩形区域 - {% e' W0 s' y! M# u4 ]
CreateRectRgnIndirect 创建一个矩形区域
: I& l& H; o$ V* @1 p5 TCreateRoundRectRgn 创建一个圆角矩形 2 v+ T+ ]' e2 B+ v) J
DeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源 4 f9 v( W. w% _. f. y/ @
DPtoLP 将点阵从设备坐标转换到专用设备场景逻辑坐标 1 J6 r) p \1 P3 Q
EqualRgn 确定两个区域是否相等
: H2 h1 K7 C d2 B; D$ ?; oExcludeClipRect 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图
) Q: M3 x0 l; E P* Z' qExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域
* J s I: O% F' O6 N$ [+ nExtCreateRegion 根据世界转换修改区域 7 q# q% I" `7 b4 N1 W
ExtSelectClipRgn 将指定区域组合到设备场景的当前剪裁区
# a' A! P0 o9 T9 c x* W* EFillRgn 用指定刷子填充指定区域 4 ^1 ]: |& e1 ~0 B3 r+ C
FrameRgn 用指定刷子围绕指定区域画一个外框 6 @4 R. v0 ^3 F$ F5 h
GetBoundsRect 获取指定设备场景的边界矩形 4 W5 m8 m+ u5 Q( E: Z! G- Y
GetClipBox 获取完全包含指定设备场景剪裁区的最小矩形
8 e5 F# j# _* a4 aGetClipRgn 获取设备场景当前剪裁区 4 J" q0 r! e: p
GetDC 获取指定窗口的设备场景
; m" {% Q, S& o5 G/ LGetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项 3 V. k, [: }, t3 }2 D: A
GetDCOrgEx 获取指定设备场景起点位置(以屏幕坐标表示)
3 B* p5 D' l. O* ~( yGetDeviceCaps 根据指定设备场景代表的设备的功能返回信息
4 q+ n- c$ e; z0 |* a& j n1 ?GetGraphicsMode 确定是否允许增强图形模式(世界转换)
7 Y& K# q T' C! i3 LGetMapMode 为特定设备场景调入映象模式
; A% v; I8 O3 ?- {1 iGetRegionData 装入描述一个区域信息的RgnData结构或缓冲区
# Z6 j# i8 ~$ j5 R0 {+ uGetRgnBox 获取完全包含指定区域的最小矩形 : H: O5 U* U8 a. S
GetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新 % ~# w- i, b& W# ]
GetViewportExtEx 获取设备场景视口(viewport)范围 + k: t1 D ^5 B' P3 [$ N X
GetViewportOrgEx 获取设备场景视口起点 - E( a5 b) o% a( i) B: X6 [
GetWindowDC 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景
2 ^/ s& T/ d4 H7 X7 ~/ t9 hGetWindowExtEx 获取指定设备场景的窗口范围
7 @: P$ |2 a8 V1 x, @GetWindowOrgEx 获取指定设备场景的逻辑窗口的起点 ; h3 t7 x; a% P' {- m
GetWindowRgn 获取窗口区域
* ~) g ` g7 D. V; v$ [' FGetWorldTransform 如果有世界转换,为设备场景获取当前世界转换
- g/ v& f5 D3 |IntersectClipRect 为指定设备定义一个新的剪裁区 7 a$ v$ j8 y+ M/ s( ?
InvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画 " o" |1 T& p1 A) m: C' r
InvertRgn 通过颠倒每个像素值反转设备场景指定区域
: S( U6 d1 @1 M4 P+ xLPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标 7 E3 G9 {& T- Z9 {$ n
ModifyWorldTransform 根据指定的模式修改世界转换 7 i3 Z% f3 S) P# q5 R- O% ?, i7 E
OffsetClipRgn 按指定量平移设备场景剪裁区
2 U w0 w- X" i/ OOffsetRgn 按指定偏移量平移指定区域
1 V$ P# e1 r0 r7 b8 ^/ Y8 ]OffsetViewportOrgEx 平移设备场景视口区域
( c |4 L" I8 C- h0 mOffsetWindowOrgEx 平移指定设备场景窗口起点 0 H3 K' T" r# H0 [7 K
PaintRgn 用当前刷子背景色填充指定区域 # c" U/ X8 U& W, a7 l8 l
PtInRegion 确定点是否在指定区域内 . @2 u4 V0 v. E2 f# w, X/ J2 O
PtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内) 6 e& \) q/ P9 g( Y, N: |
RectInRegion 确定矩形是否有部分在指定区域内 # ^" h8 _; U$ N0 P8 [! m
RectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内)
1 V( F' Z1 G" ?9 @1 {ReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景
, D( G6 C4 X) @, ARestoreDC 从设备场景堆栈恢复一个原先保存的设备场景 * n2 m( L9 u, H& s- H3 W
SaveDC 将指定设备场景状态保存到Windows设备场景堆栈 2 u5 U5 r5 t8 X+ M/ ^" M
ScaleViewportExtEx 缩放设备场景视口的范围
; |' l; Z6 t' A( vScaleWindowExtEx 缩放指定设备场景窗口范围
7 i- {+ |8 P8 q( b- MScrollDC 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形 2 b1 ^1 V2 s: |9 @) ]+ ^: C; o
SelectClipRgn 为指定设备场景选择新的剪裁区
4 h1 m. v% l3 `SetBoundsRect 设置指定设备场景的边界矩形
& K C. A5 m, V- t/ YSetGraphicsMode 允许或禁止增强图形模式,以提供某些支持(包括世界转换) & y: ^/ Y, x/ v2 d) c2 d
SetMapMode 设置指定设备场景的映射模式
& b9 W" F1 w9 S: |' T- s8 c3 X8 GSetRectRgn 设置区域为指定的矩形 1 U% k! [2 k: z+ }
SetViewportExtEx 设置设备场景视口范围
_* z9 b4 [. y( j# {SetViewportOrgEx 设置设备场景视口起点
$ q& \( j& g7 d, w7 l- ESetWindowExtEx 设置指定设备场景窗口范围
5 ?) ]2 N' M0 q: z# t2 NSetWindowOrgEx 设置指定设备场景窗口起点 K) A# W; E$ A7 b3 P1 d
SetWindowRgn 设置窗口区域 7 h, q5 Q3 X9 C5 t8 [, m( W. Z
SetWorldTransform 设置世界转换 $ A" d. C1 }& T6 n5 k1 N% ?
ValidateRgn 激活窗口中指定区域,把它从刷新区移走
1 `$ [! m# I2 b# f: O% h+ JWindowFromDC 取回与某一设备场景相关的窗口的句柄
6 s, c3 }4 [- S) `10. API之硬件与系统函数
+ {% f' s! K* ^: u3 ^# s+ S' v$ @ActivateKeyboardLayout 激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义 # `; V1 R! Z. Z& y1 x
Beep 用于生成简单的声音
+ ~9 ? U k/ e: [' KCharToOem 将一个字串从ANSI字符集转换到OEM字符集 ; W9 C2 Q+ V0 _ A* l
ClipCursor 将指针限制到指定区域 # [- L) C2 y$ {9 A3 |. B
ConvertDefaultLocale 将一个特殊的地方标识符转换成真实的地方ID - ^- I9 V" b' z( Q; s
CreateCaret 根据指定的信息创建一个插入符(光标),并将它选定为指定窗口的默认插入符
% O7 S& I+ s% kDestroyCaret 清除(破坏)一个插入符 $ K J3 [$ j) _, K0 l% y& t- @
EnumCalendarInfo 枚举在指定"地方"环境中可用的日历信息
. g, l0 X4 C+ N2 J4 uEnumDateFormats 列举指定的"当地"设置中可用的长、短日期格式
& ]. a9 O/ S9 b* eEnumSystemCodePages 枚举系统中已安装或支持的代码页 e7 D+ Q' U7 u% c; v/ b/ P
EnumSystemLocales 枚举系统已经安装或提供支持的"地方"设置
1 c9 Y# r2 W' Z6 qEnumTimeFormats 枚举一个指定的地方适用的时间格式
+ L7 X* B1 }0 O6 S) f. T, [* zExitWindowsEx 退出windows,并用特定的选项重新启动 - i( g8 K# P% R9 W" t. M# Q; Q
WINUSERAPI BOOL WINAPI ExitWindowsEx(+ q& y+ |) {) r4 G* l4 `
UINT uFlags, //EWX_LOGOFF|EWX_REBOOT|EWX_FORCE|EWX_POWEROFF|EWX_FORCEIFHUNG8 w' @5 n! y4 K+ _! [/ V
DWORD dwReserved); //0
! U, d, I \. g4 T0 B9 X+ mExpandEnvironmentStrings 扩充环境字串 ! P# ~. E9 ]6 o8 Y* }) \4 T. h
FreeEnvironmentStrings 翻译指定的环境字串块
/ ~4 g4 i) Q% E% kGetACP 判断目前正在生效的ANSI代码页
4 g0 E$ t' f# Q7 qGetAsyncKeyState 判断函数调用时指定虚拟键的状态 . D/ K5 s9 k# u3 R j3 ^1 S a
GetCaretBlinkTime 判断插入符光标的闪烁频率 ' P5 o V* x6 |
GetCaretPos 判断插入符的当前位置 ! q! T( U. ^8 L" A. d& [
GetClipCursor 取得一个矩形,用于描述目前为鼠标指针规定的剪切区域 - ?$ B" n: O0 M
GetCommandLine 获得指向当前命令行缓冲区的一个指针
& Y: d; j) o$ M3 D( O$ W) S& E" N2 HGetComputerName 取得这台计算机的名称
; n7 W2 e d' R, E jGetCPInfo 取得与指定代码页有关的信息 7 h! }9 u& w% [! p, p4 d2 }
GetCurrencyFormat 针对指定的"地方"设置,根据货币格式格式化一个数字
% R& d1 w! B( E. u |GetCursor 获取目前选择的鼠标指针的句柄 f2 F. @0 v8 Z5 `
GetCursorPos 获取鼠标指针的当前位置
: t) f3 E: {& cGetDateFormat 针对指定的"当地"格式,对一个系统日期进行格式化
/ P0 d7 ~- t# |/ H: RGetDoubleClickTime 判断连续两次鼠标单击之间会被处理成双击事件的间隔时间
* K# N& d1 n7 z0 QGetEnvironmentStrings 为包含了当前环境字串设置的一个内存块分配和返回一个句柄 : W0 g6 E. ]# D" |* y2 d6 E1 C2 f/ B
GetEnvironmentVariable 取得一个环境变量的值
H) G# @ e r8 J6 E% _, l! BGetInputState 判断是否存在任何待决(等待处理)的鼠标或键盘事件
# ^2 Z# T: U) A( S: q' zGetKBCodePage 由GetOEMCP取代,两者功能完全相同 0 \; C; p% m9 I9 K' `5 \& |6 R
GetKeyboardLayout 取得一个句柄,描述指定应用程序的键盘布局
; i. O" x+ P+ h0 vGetKeyboardLayoutList 获得系统适用的所有键盘布局的一个列表
" [6 Z5 T7 o' S8 m3 s( JGetKeyboardLayoutName 取得当前活动键盘布局的名称 ! F( F( a0 Q3 k* m% Q
GetKeyboardState 取得键盘上每个虚拟键当前的状态
7 [# A3 w5 R- p/ T. nGetKeyboardType 了解与正在使用的键盘有关的信息
4 d# U9 L5 t6 L, |4 R6 i3 xGetKeyNameText 在给出扫描码的前提下,判断键名 , m" M+ E" C$ E; W3 b
GetKeyState 针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态
: z8 N4 P) s1 I: c( B! R% WGetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息 ) l# C& @) \1 q9 ~! N4 d! U
GetLocaleInfo 取得与指定"地方"有关的信息
, J# @0 b2 [4 {GetLocalTime 取得本地日期和时间 # F- ~$ h# c! R6 Y
GetNumberFormat 针对指定的"地方",按特定的格式格式化一个数字 ! \, K& V% L2 J; m# u" ]
GetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页 ' W" L5 t( P0 d+ y9 [' a! [1 D
GetQueueStatus 判断应用程序消息队列中待决(等待处理)的消息类型
, E3 ~3 W- E) G4 c- y% VGetSysColor 判断指定windows显示对象的颜色 & G& V) |# Q2 E# q
GetSystemDefaultLangID 取得系统的默认语言ID 0 r# F, ]6 G+ f5 p
GetSystemDefaultLCID 取得当前的默认系统"地方"
s1 a* E |+ b: ^$ UGetSystemInfo 取得与底层硬件平台有关的信息
. x5 H" k' O2 K/ }% e; FGetSystemMetrics 返回与windows环境有关的信息 f q: `2 |: Y- R& K
GetSystemPowerStatus 获得与当前系统电源状态有关的信息 ! A9 S& R D) a* a5 B. E" k' h
GetSystemTime 取得当前系统时间,这个时间采用的是"协同世界时间"(即UTC,也叫做GMT)格式
" O* g Z Q# I: s [" e2 @: [GetSystemTimeAdjustment 使内部系统时钟与一个外部的时钟信号源同步 ( S# R) K: c9 D: [ @& i4 |
GetThreadLocale 取得当前线程的地方ID
}3 |8 A* `/ i+ XGetTickCount 用于获取自windows启动以来经历的时间长度(毫秒) / z; P7 Y+ z, F8 e7 ^" W1 _
GetTimeFormat 针对当前指定的"地方",按特定的格式格式化一个系统时间 + D" p J7 K1 ?, I9 I( N, U& ^
GetTimeZoneInformation 取得与系统时区设置有关的信息
; }( Z1 l; X2 {3 TGetUserDefaultLangID 为当前用户取得默认语言ID 9 k9 v4 v6 }0 m" t2 f3 }' N8 Y
GetUserDefaultLCID 取得当前用户的默认"地方"设置
! ?: [# \3 B, G0 C% @GetUserName 取得当前用户的名字
1 }' r6 x/ M$ P1 E w5 {" a6 uGetVersion 判断当前运行的Windows和DOS版本 , h- {& \! O5 L# `
GetVersionEx 取得与平台和操作系统有关的版本信息
& A0 P, N7 M3 t& jHideCaret 在指定的窗口隐藏插入符(光标)
# M' J7 C9 S- L2 B. [9 QIsValidCodePage 判断一个代码页是否有效 ; z' Q8 k% {! [5 j5 e5 z1 c
IsValidLocale 判断地方标识符是否有效
% {$ }+ Q6 p& n: b+ Q" C& O4 Bkeybd_event 这个函数模拟了键盘行动 - ^# D( z1 t6 F- X/ u- [
LoadKeyboardLayout 载入一个键盘布局
2 q, {* l- q+ v$ b) u4 P7 @: X7 Y1 UMapVirtualKey 根据指定的映射类型,执行不同的扫描码和字符转换 7 P( n4 v0 X: d6 g
MapVirtualKeyEx 根据指定的映射类型,执行不同的扫描码和字符转换
, |* s2 @+ M8 d( o3 F/ V! aMessageBeep 播放一个系统声音。系统声音的分配方案是在控制面板里决定的 8 u8 k; m' n9 {/ w
mouse_event 模拟一次鼠标事件
9 |; O+ I2 @) X& UOemKeyScan 判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态 ; J! u G# {" Z, r
OemToChar 将OEM字符集的一个字串转换到ANSI字符集
, G/ q( j5 d. r3 O( F% v" `9 iSetCaretBlinkTime 指定插入符(光标)的闪烁频率 . ~" I3 g5 s9 f; m& q, I+ H
SetCaretPos 指定插入符的位置 8 y6 w/ {& h: F
SetComputerName 设置新的计算机名
- O' c) t' T) dSetCursor 将指定的鼠标指针设为当前指针
1 ~# Y6 t" G$ |! kSetCursorPos 设置指针的位置
% R Q9 t: z2 Q6 }SetDoubleClickTime 设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间 8 l1 S: d8 D4 g! k/ }, s. B$ S. u3 D
SetEnvironmentVariable 将一个环境变量设为指定的值 / K8 E' L& M" F y) o/ z4 {' J6 c
SetKeyboardState 设置每个虚拟键当前在键盘上的状态
5 A! L6 e/ J0 C6 ~+ uSetLocaleInfo 改变用户"地方"设置信息 ' z& u# T0 K0 @2 H# j
SetLocalTime 设置当前地方时间 5 p& r7 W$ c- O y9 \
SetSysColors 设置指定窗口显示对象的颜色
/ [0 k" t7 f z' d' k# S! o5 fSetSystemCursor 改变任何一个标准系统指针
; l# @4 T) @% \! eSetSystemTime 设置当前系统时间
$ m, O, s# U$ d* qSetSystemTimeAdjustment 定时添加一个校准值使内部系统时钟与一个外部的时钟信号源同步
2 i3 m) h) A- l1 JSetThreadLocale 为当前线程设置地方
" B0 l/ q% r9 \7 F. ZSetTimeZoneInformation 设置系统时区信息 $ z' z. o6 L& [8 ?$ @* q6 r e
ShowCaret 在指定的窗口里显示插入符(光标)
& Z. {/ h; H+ J# L. w" CShowCursor 控制鼠标指针的可视性 - e* P- F7 r$ |" m
SwapMouseButton 决定是否互换鼠标左右键的功能 5 L( F' O7 U. Y/ W G
SystemParametersInfo 获取和设置数量众多的windows系统参数
9 C2 s6 I7 C+ S/ x) a1 wSystemTimeToTzSpecificLocalTime 将系统时间转换成地方时间
7 N7 U- F+ i. m5 x. u4 eToAscii 根据当前的扫描码和键盘信息,将一个虚拟键转换成ASCII字符
* H: L2 E: K9 ]* I/ O; D0 l+ UToUnicode 根据当前的扫描码和键盘信息,将一个虚拟键转换成Unicode字符 7 }" ^8 p2 |! E
UnloadKeyboardLayout 卸载指定的键盘布局
. t1 D9 ]; V, t( w% f/ ]& g# aVkKeyScan 针对Windows字符集中一个ASCII字符,判断虚拟键码和Shift键的状态 + f$ w( J4 Q) e3 p# j8 w& j
11. API之进程和线程函数
6 f8 s# k/ n/ {4 ]$ S* j FCancelWaitableTimer 这个函数用于取消一个可以等待下去的计时器操作
7 B& W& C$ C' L" h9 j' WCallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用 , j( o b0 u$ z, U0 \3 }
ConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个命名管道连接 & h9 W' p+ k3 n
CreateEvent 创建一个事件对象 % I8 @) a, O9 `6 [2 ~: E
CreateMailslot 创建一个邮路。返回的句柄由邮路服务器使用(收件人) 9 O4 e9 c5 h3 q) }! ^2 }
CreateMutex 创建一个互斥体(MUTEX) 8 {# s& |. o+ L* S& O
CreateNamedPipe 创建一个命名管道。返回的句柄由管道的服务器端使用
0 X9 I2 q( U' E5 o" b5 TCreatePipe 创建一个匿名管道 1 I u5 Y2 X+ D! o% A
CreateProcess 创建一个新进程(比如执行一个程序)
. n s# T7 L+ }0 e6 Q, VCreateSemaphore 创建一个新的信号机 5 Q0 P: ?5 p9 E
CreateWaitableTimer 创建一个可等待的计时器对象 ; X$ ?* p2 N3 y7 D. S' ]- u
DisconnectNamedPipe 断开一个客户与一个命名管道的连接
2 f( @$ K1 M3 y& E7 @' S M- F3 ?DuplicateHandle 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄
/ [; ]5 n1 @8 l+ d: |: d5 FExitProcess 中止一个进程
% o% u7 ^5 ^& W8 C3 p/ E) }FindCloseChangeNotification 关闭一个改动通知对象
5 I9 Z' Y5 e; M8 QFindExecutable 查找与一个指定文件关联在一起的程序的文件名 / E. x% l& \0 d1 f
FindFirstChangeNotification 创建一个文件通知对象。该对象用于监视文件系统发生的变化 # T4 N! x# ~& s- a, ^# u
FindNextChangeNotification 重设一个文件改变通知对象,令其继续监视下一次变化 2 A. Q6 @. J$ @: P- b
FreeLibrary 释放指定的动态链接库 : F- [# A. s1 v1 v
GetCurrentProcess 获取当前进程的一个伪句柄 6 U* |/ X, q2 @& j8 `4 w5 a
GetCurrentProcessId 获取当前进程一个唯一的标识符 6 ~" @8 m& K( k+ M: i/ `) {
GetCurrentThread 获取当前线程的一个伪句柄
9 I2 O; |6 T8 Q+ M3 w7 D6 ^ FGetCurrentThreadId 获取当前线程一个唯一的线程标识符 . I" B0 b% ?, Y3 q# A1 \- |
GetExitCodeProces 获取一个已中断进程的退出代码
- D( g% U d$ h8 j+ _6 Q/ _, `GetExitCodeThread 获取一个已中止线程的退出代码 " f8 Z' j+ [; U$ @2 S- r
GetHandleInformation 获取与一个系统对象句柄有关的信息 * U! I- _( e% t2 s) g7 Y
GetMailslotInfo 获取与一个邮路有关的信息 % d3 q7 C. G1 g' q% y) F$ F
GetModuleFileName 获取一个已装载模板的完整路径名称 5 [% C6 i/ \& z
GetModuleHandle 获取一个应用程序或动态链接库的模块句柄
7 G. {( e _3 I% s8 K GetModuleHandleA(LPCSTR lpModuleName);% s0 e" @6 e9 k$ Q; V v
GetPriorityClass 获取特定进程的优先级别
+ c8 T0 I% w: l1 a! C( hGetProcessShutdownParameters 调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况 ; S5 N% Q; u# N
GetProcessTimes 获取与一个进程的经过时间有关的信息
; r) ?% P5 U8 J H) w2 kGetProcessWorkingSetSize 了解一个应用程序在运行过程中实际向它交付了多大容量的内存
; C4 I, `8 G7 c+ D5 Z' |: ~+ e& bGetSartupInfo 获取一个进程的启动信息 ( d7 U) ~, u: o
GetThreadPriority 获取特定线程的优先级别
: [4 v* \/ b% Q) OGetTheardTimes 获取与一个线程的经过时间有关的信息
; C) a: A4 R. Z& D& ], ]GetWindowThreadProcessId 获取与指定窗口关联在一起的一个进程和线程标识符 " ^! M4 N/ b$ v, a* p
LoadLibrary 载入指定的动态链接库,并将它映射到当前进程使用的地址空间
. |, K r- I& M+ l8 v4 m, C! xLoadLibraryEx 装载指定的动态链接库,并为当前进程把它映射到地址空间 $ Y* F% b6 A A: g
LoadModule 载入一个Windows应用程序,并在指定的环境中运行 7 `: F1 t0 p. i* J4 g4 J% d) e- x
MsgWaitForMultipleObjects 等侯单个对象或一系列对象发出信号。如返回条件已经满足,则立即返回
/ y w/ q, Q- l7 i' S% W: qSetPriorityClass 设置一个进程的优先级别 ) j: p! C' N, H. ~& S
SetProcessShutdownParameters 在系统关闭期间,为指定进程设置他相对于其它程序的关闭顺序 9 ^9 \% F; @2 T
SetProcessWorkingSetSize 设置操作系统实际划分给进程使用的内存容量 & F$ l. i" w4 o% L0 N. W
SetThreadPriority 设定线程的优先级别
& ^$ Y0 i# A/ |1 p5 t# y$ `ShellExecute 查找与指定文件关联在一起的程序的文件名
3 s8 \) E0 j8 ]. {" hTerminateProcess 结束一个进程
/ B' }& P6 ]7 yWinExec 运行指定的程序 ! A9 n5 `* \' A0 K" A
12. API之控件与消息函数
1 j& k i, V$ A4 VAdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小
2 ?3 y u) v# W, L& cAnyPopup 判断屏幕上是否存在任何弹出式窗口 - |' D6 G' D. P/ J; A
ArrangeIconicWindows 排列一个父窗口的最小化子窗口
8 A. O# M7 i- _) z6 L: E6 ] [/ FAttachThreadInput 连接线程输入函数
- d! W: ]& I3 cBeginDeferWindowPos 启动构建一系列新窗口位置的过程 ) M9 S; J8 p; g
BringWindowToTop 将指定的窗口带至窗口列表顶部 3 c! H; t6 @+ M5 V
CascadeWindows 以层叠方式排列窗口 . ~# K, o! B: a) N9 _7 ~) a
ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄
& d: {: C8 d- z; t: @6 {. `3 ]ClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标
" d( }0 P6 D/ G2 M, qCloseWindow 最小化指定的窗口 5 X* g5 u2 ?) f2 ^
CopyRect 矩形内容复制 8 S. J/ J+ R I9 M% X; o6 O
DeferWindowPos 该函数为特定的窗口指定一个新窗口位置
! q4 \9 n! A0 {0 TDestroyWindow 清除指定的窗口以及它的所有子窗口
& {) `$ M' J2 E( [# qDrawAnimatedRects 描绘一系列动态矩形
6 A9 Y, ^- \$ uEnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入 ! N/ I- V* U& x% _9 d
EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态 0 q. |$ s: a) U
EnumChildWindows 为指定的父窗口枚举子窗口
X* \& `( P) a; X( u, lEnumThreadWindows 枚举与指定任务相关的窗口
% u2 O, ~# X2 d! C( c% i4 r0 B: {EnumWindows 枚举窗口列表中的所有父窗口 5 Y$ V5 n- e8 E1 m
EqualRect 判断两个矩形结构是否相同 3 g! Q; M8 g( H8 N: D9 e& I
FindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口 . h& n8 T: t9 c+ T o) s# }
FindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口
m1 H4 Z- N2 M+ z5 {FlashWindow 闪烁显示指定窗口 5 K4 ]! R2 N7 {: i0 I
GetActiveWindow 获得活动窗口的句柄
& {$ K, {2 r( @1 B: x1 [5 KGetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收)
0 U- [& N2 I. t: V# DGetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息 / G2 K; x m7 h' P0 F: k
GetClassLong 取得窗口类的一个Long变量条目
1 s, i' O7 g+ O: j5 k0 ~) t K4 dGetClassName 为指定的窗口取得类名
' H6 T1 C) B Z& F3 S& uGetClassWord 为窗口类取得一个整数变量 * f+ J$ \+ n0 [0 b9 N4 J
GetClientRect 返回指定窗口客户区矩形的大小
4 s' K1 q! e& z- d. ? i2 rGetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄 z( a; S" u+ O) w7 ?0 c
GetFocus 获得拥有输入焦点的窗口的句柄 4 Q/ y+ Y* y& I# E+ {+ D% ^
GetForegroundWindow 获得前台窗口的句柄 . S) S5 h/ |4 B$ B( w2 K: q' |
GetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄 ' l' K+ w4 d9 v6 J! H
GetParent 判断指定窗口的父窗口 : }2 z" z: u, @
GetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄 3 w; g+ T0 Y+ r8 b( B
GetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分
' Y2 r. W& {6 vGetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系
' |9 @0 b' `. i. T; C; FGetWindowContextHelpId 取得与窗口关联在一起的帮助场景ID ! M6 k. M8 Z7 U( ]' s5 P* z
GetWindowLong 从指定窗口的结构中取得信息
5 O5 H, D2 q& R; vGetWindowPlacement 获得指定窗口的状态及位置信息 ! @+ s% T6 {7 A) b- [+ U, R4 {! o
GetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内
2 y, M1 l) I; @; e6 J% Z5 G a% |GetWindowText 取得一个窗体的标题(caption)文字,或者一个控件的内容
5 h- M5 l+ f. Z8 d/ d, h$ f" LGetWindowTextLength 调查窗口标题文字或控件内容的长短 & h7 C8 J5 g1 J# f% H; K2 w/ F
GetWindowWord 获得指定窗口结构的信息
6 @/ f' ]; l7 d# _, D8 FInflateRect 增大或减小一个矩形的大小 - U4 d3 L1 n2 R% Z! Z# Z$ p
IntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集
, C4 F' A$ ~# W* p% X5 SInvalidateRect 屏蔽一个窗口客户区的全部或部分区域
( Z* z7 F' c1 N* E* @! v- FIsChild 判断一个窗口是否为另一窗口的子或隶属窗口 ! z; _% \' Q7 F4 |( T `
IsIconic 判断窗口是否已最小化
~8 c! R, \$ O: o" |' s5 Y; |IsRectEmpty 判断一个矩形是否为空
# N" m- H9 j- M( H. U6 {! i8 BIsWindow 判断一个窗口句柄是否有效 / \$ y `2 i+ b* e6 z! `
IsWindowEnabled 判断窗口是否处于活动状态
" h% y; b+ _) R% r# C4 G1 d# XIsWindowUnicode 判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字 ! q7 J6 {0 Q6 S/ D* G
IsWindowVisible 判断窗口是否可见
$ f4 Z& ^* [3 PIsZoomed 判断窗口是否最大化
! m% R: l3 X; Z9 L& J5 M3 dLockWindowUpdate 锁定指定窗口,禁止它更新
1 u8 a7 i/ \7 pMapWindowPoints 将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统 / J) P2 p" {& z- r5 K
MoveWindow 改变指定窗口的位置和大小
% P$ r Q$ M" K7 i) y( QOffsetRect 通过应用一个指定的偏移,从而让矩形移动起来
! k* f, j" U( H2 i8 z3 E/ fOpenIcon 恢复一个最小化的程序,并将其激活
& t5 N- p! Q1 [& L+ b. dPtInRect 判断指定的点是否位于矩形内部 2 t" }% L6 G+ o1 E
RedrawWindow 重画全部或部分窗口 , N5 @$ @* \9 V
ReleaseCapture 为当前的应用程序释放鼠标捕获 ) B9 w5 r6 ~/ s8 @. c
ScreenToClient 判断屏幕上一个指定点的客户区坐标 % }+ O8 Z9 U( V) r7 F* Z( M
ScrollWindow 滚动窗口客户区的全部或一部分
% k c+ g- U. r5 S6 G U; Z0 FScrollWindowEx 根据附加的选项,滚动窗口客户区的全部或部分
- P" o A6 R O- @# ^+ h9 f2 LSetActiveWindow 激活指定的窗口 1 _& U& i, T1 F7 p& d n6 {! m( B
SetCapture 将鼠标捕获设置到指定的窗口
: N* z5 [' E" {2 CSetClassLong 为窗口类设置一个Long变量条目
* ]; q1 ?& H( L- G! TSetClassWord 为窗口类设置一个条目 - s; a2 M$ ~, @: n
SetFocusAPI 将输入焦点设到指定的窗口。如有必要,会激活窗口
# R+ M0 H6 H3 {8 d! o0 x! CSetForegroundWindow 将窗口设为系统的前台窗口 * w* s# k k8 y" r: `
SetParent 指定一个窗口的新父
6 v2 m2 I3 d8 x0 l! nSetRect 设置指定矩形的内容
) E2 R* Q) f" w& @: ~SetRectEmpty 将矩形设为一个空矩形 9 _/ y; N$ U; U& t3 l5 l
SetWindowContextHelpId 为指定的窗口设置帮助场景(上下文)ID 1 ]3 z. ?, {& i, R2 m7 O+ I
SetWindowLong 在窗口结构中为指定的窗口设置信息 , s9 \ j+ ^) p) e
SetWindowPlacement 设置窗口状态和位置信息 # X- ?4 N" j6 N# f% X- B3 u& i
SetWindowPos 为窗口指定一个新位置和状态
+ N$ }! Q7 y6 W5 ~, D6 n0 ISetWindowText 设置窗口的标题文字或控件的内容
, T* @5 ~5 A3 Y. cSetWindowWord 在窗口结构中为指定的窗口设置信息
! r3 G9 p6 b/ f; _5 y JShowOwnedPopups 显示或隐藏由指定窗口所有的全部弹出式窗口
3 O# r- c. r, o; `! K# n- PShowWindow 控制窗口的可见性
3 k3 L2 P. M( x( I* q0 C f# m( yShowWindowAsync 与ShowWindow相似 ' O- G+ a$ `0 I7 b. N
SubtractRect 装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果
/ f& s0 o; w4 p5 [TileWindows 以平铺顺序排列窗口 1 d: S. Y7 A- A1 H% V6 U) v
UnionRect 装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect联合起来的结果
4 H* m1 q7 [1 z" j2 X V4 XUpdateWindow 强制立即更新窗口 # M9 x& c( Z( a' r2 Z" V
ValidateRect 校验窗口的全部或部分客户区
: i" L( D4 D6 o9 \! ^: g3 MWindowFromPoint 返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口6 }* n! u+ \. q3 A
高级音频函数—参看《VC++ 编程指南.chm》11.67 L( r) r, W- V+ m5 N; r v
Windows提供了三个特殊的播放声音的高级音频函数:MessageBeep、PlaySound和sndPlaySound。这三个函数可以满足播放波形声音的一般需要,但它们播放的WAVE文件(波形声音文件)的大小不能超过100KB,如果要播放较大的WAVE文件,则应该使用MCI服务。0 d8 K0 `/ H: W* k
BOOL MessageBeep(UINT uType);
% h2 J4 M# q# e5 p' L. y该函数主要用来播放系统报警声音。系统报警声音是由用户在控制面板中的声音(Sounds)程序中定义的,或者在WIN.INI的[sounds]段中指定。
" m9 z m' W2 r |& z参数uType说明了告警级,如下表所示。若成功则函数返回TRUE。
% @0 ^+ W/ O" B4 n" h级别 ! m# o) T. n. D% u! `9 v) q4 Y
| 描述
" u7 J' ~: a4 l N | -1 % [/ o" Z( U" {9 E# ?. @, U
| 从机器的扬声器中发出蜂鸣声。 ) ^9 C/ ]8 j$ [( s! I' S
| MB_ICONASTERISK 5 r; E6 h5 l2 y" f" m, p3 F
| 播放由SystemAsterisk定义的声音。
1 c/ U/ J! ^0 d9 h- ]" V2 @ | MB_ICONEXCLAMATION k! ]. J2 u' Z" W N) @
| 播放由SystemExclamation定义的声音。 4 L7 Z! n1 H0 x6 B |
| MB_ICONHAND
2 ?% p2 M1 \ e5 Y' r( S | 播放由SystemHand定义的声音。 ' O) O: u' g; q; `$ P' `7 o
| MB_ICONQUESTION
1 Q$ h8 m4 v0 ?6 |5 B7 ~$ |7 B, } | 播放由SystemQuestion定义的声音。 " J+ Z3 n# D) X. m. Q
| MB_OK
1 Q+ X# D- X% d& A, E6 J" e | 播放由SystemDefault定义的声音 1 C. t v/ T* T. ~/ p. W
| BOOL PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
$ ]" n- E6 H1 f& X' F6 t) G7 P2 c参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。
5 _; H3 G- p7 _3 s; P参数hmod是应用程序的实例句柄,当播放WAV资源时要用到该参数,否则它必须为NULL。" V2 j, W" w K5 i8 g. n' [
参数fdwSound是标志的组合,如下表所示。若成功则函数返回TRUE,否则返回FALSE。0 R6 ]! J8 i8 v, G8 x1 d
标志 X: N; p& y9 a8 s z! r v
| 含义 * b- O1 y; a9 ]8 k- j1 Q
| SND_APPLICATION 4 [$ R. O+ [$ C
| 用应用程序指定的关联来播放声音。 \6 S9 [: R4 U/ \, u
| SND_ALIAS
! w) C% n% `, F5 R& }! U | pszSound参数指定了注册表或WIN.INI中的系统事件的别名。
9 w) k- q1 E# v. x \" I$ }( H' D | SND_ALIAS_ID
. j6 t5 I5 K9 A- G' C | pszSound参数指定了预定义的声音标识符。 5 _+ `, N# y0 I0 Z* a
| SND_ASYNC
* ?% o5 x" z+ _9 n3 @; @ | 用异步方式播放声音,PlaySound函数在开始播放后立即返回。
1 C0 s" N. p$ m9 K | SND_FILENAME
' e& f$ x2 ?: _2 |, a0 B | pszSound参数指定了WAVE文件名。
1 l; G: T2 h2 }$ y( K% H7 s* n | SND_LOOP ) ?* Y3 h+ e* j# ~& \
| 重复播放声音,必须与SND_ASYNC标志一块使用。 $ j1 o9 }) a Q2 C$ }2 y
| SND_MEMORY
# N6 \2 [7 p7 k | 播放载入到内存中的声音,此时pszSound是指向声音数据的指针。
4 m! }# q' M- A/ }+ Y A2 o% R( L | SND_NODEFAULT + f' h/ z( K5 E5 l; }
| 不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。
, T: c: [/ {! T+ s3 r2 H6 y | SND_NOSTOP
$ p; r7 B4 n. m | PlaySound不打断原来的声音播出并立即返回FALSE。 2 J: @& z- E" n F7 S6 l
| SND_NOWAIT ' M0 c+ z4 R ]: d' ?, N
| 如果驱动程序正忙则函数就不播放声音并立即返回。
$ T0 m: D! _& t5 A! ?& [ G | SND_PURGE # V- E. E) h; X; |
| 停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。
2 q" G% p% m. x3 j' `/ p | SND_RESOURCE
+ i& C# p% G9 b! |* z | pszSound参数是WAVE资源的标识符,这时要用到hmod参数。 / J6 ~. Z) m0 T
| SND_SYNC
* \6 J+ N/ Y8 o | 同步播放声音,在播放完后PlaySound函数才返回。 " R6 r/ Q3 X& x5 \0 T
| BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound);, n" Z; [7 i, U; l4 h) L# Z, N
函数sndPlaySound的功能与PlaySound类似,但少了一个参数。除了不能指定资源名字外,参数lpszSound与PlaySound的是一样的。
9 T8 J9 r2 ^# \2 S0 }MCI播放: O L" u$ ?: {# w8 G7 f
所有的MCI命令字符串都是通过多媒体API函数mciSendString传递给MCI的,该函数的声明为:
2 m; g) t' V$ S0 Q) c7 MMCIERROR mciSendString(
( D" j0 t( q: \ |& XLPCTSTR lpszCommand, //MCI命令字符串
- U$ j, d7 I* |' F6 x( s: [6 d( dLPTSTR lpszReturnString, //存放反馈信息的缓冲区/ i+ l( i, v% {) f1 ~" p
UINT cchReturn, //缓冲区的长度
' N3 t# b* q! h! y, THANDLE hwndCallback //回调窗口的句柄,一般为NULL
8 J0 o# G- Y- T); //若成功则返回0,否则返回错误码。# x. h. L7 B A1 P
该函数返回的错误码可以用mciGetErrorString函数进行分析,该函数的声明为:+ j; R2 B$ q7 P: V; e" X0 |
BOOL mciGetErrorString(
# j+ S+ ~ ~* Z. L8 i) pDWORD fdwError, //函数mciSendString或mciSendCommand返回的错误码
; O* V8 w w R1 D) R. _LPTSTR lpszErrorText, //接收描述错误的字符串的缓冲区( p, r7 I# Y& F' o; L- n; W }. h
UINT cchErrorText //缓冲区的长度
9 C& j6 y9 ?6 `$ w$ N0 y, c);5 ^- \) a6 L( @4 I5 x6 v! p1 l
|
|