|
原文:http://www.cnblogs.com/cltsq/articles/api.html
) W( x( u& w* ]6 Q' r/ ~# w7 h6 @1. API之网络函数 * m, z0 }" l$ m; e' ]7 b
WNetAddConnection 创建同一个网络资源的永久性连接
. t% c( q' q8 yWNetAddConnection2 创建同一个网络资源的连接
/ Y3 U% B3 W$ G, U: x1 _% N7 RWNetAddConnection3 创建同一个网络资源的连接
$ e6 V; \* _1 i7 i$ x& kWNetCancelConnection 结束一个网络连接
, R& j: @5 j i* V! u4 j) JWNetCancelConnection2 结束一个网络连接 k' U) c3 W( T1 u" p/ h$ Z3 j
WNetCloseEnum 结束一次枚举操作
/ t7 {2 }' m g) r7 {, eWNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接
+ j; C4 d! l. e' S$ b( W$ |- I9 @WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 4 x# i. d, C4 t: Q0 [
WNetEnumResource 枚举网络资源 % F( S/ @2 m5 s
WNetGetConnection 获取本地或已连接的一个资源的网络名称
3 u9 ?, e( Y- \4 u& u& |- `WNetGetLastError 获取网络错误的扩展错误信息
) z& E$ h& s) Y% {& m6 o' IWNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称
2 k, ]) f' z* vWNetGetUser 获取一个网络资源用以连接的名字 1 u2 k: X- s# {/ e5 N" k6 T9 F
WNetOpenEnum 启动对网络资源进行枚举的过程 r- |7 ~6 d, g% e$ H
2. API之消息函数
) d8 O0 O+ F* P+ t* I1 X0 E7 T8 N. |6 e! mBroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口 . H( s( |, H, Y
GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 9 W7 x8 u3 i: b0 q; a7 U l% n
GetMessageTime 取得消息队列中上一条消息处理完毕时的时间 0 [. D/ a; }( j6 m& J
PostMessage 将一条消息投递到指定窗口的消息队列
( A% z& O' i+ K+ k# b1 WPostThreadMessage 将一条消息投递给应用程序
2 x* w- o3 Q/ u0 GRegisterWindowMessage 获取分配给一个字串标识符的消息编号 6 z4 d+ Y4 l1 X, u! A: k. ~( }
ReplyMessage 答复一个消息
Y( ^# i; u( Q0 |SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口 ( e; q7 `6 m2 y* D9 z( o; e+ v
SendMessageCallback 将一条消息发给窗口
" }2 Z+ Y2 _' f' e' xSendMessageTimeout 向窗口发送一条消息 ! t7 e7 a$ l. o0 o* C5 T7 j
SendNotifyMessage 向窗口发送一条消息
W: i Q# ^- ?$ K7 g& { |# F3. API之文件处理函数 8 k4 I8 E: T4 a
CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等
# r. s$ C* M0 T/ ~2 }CompareFileTime 对比两个文件的时间 + l0 [* [2 l6 L5 \
CopyFile 复制文件
) q" L v9 C& i# cCreateDirectory 创建一个新目录 4 [3 v$ ^- E7 b$ n* N( v4 q* W0 a
CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台
2 g& S3 K, {+ J. c6 o7 a2 X7 i8 ]# F8 UCreateFileMapping 创建一个新的文件映射对象 & g# q( e3 ?+ W- ^+ [* w. u
DeleteFile 删除指定文件 : T9 B# ?$ {7 H; j. g' i$ Z
DeviceIoControl 对设备执行指定的操作
( v1 h! `# ]" _* X" HDosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值 1 q- t- M+ J; q. D+ K% d
FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值 0 {$ N7 B( o9 g2 P
FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间
) }1 J+ x, i9 Z( B3 u* xFileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构 3 m) R1 W6 a0 P/ x$ Q
FindClose 关闭由FindFirstFile函数创建的一个搜索句柄 + W/ ?3 \( S' ?1 E/ y0 l5 t! T" C
FindFirstFile 根据文件名查找文件
8 R# c8 j* E) F# p/ V( Y$ ]" lFindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件
/ O9 \% Q+ b" R0 ?& NFlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区
/ u) O9 J9 X7 A, E; C" ^$ M, |FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘 ( z0 K0 W5 r% n! L( j
GetBinaryType 判断文件是否可以执行
' ?, C: _+ L T2 Q W0 |) W$ o( NGetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数 " r2 W+ B* {+ x
GetCurrentDirectory 在一个缓冲区中装载当前目录 ; H6 A$ o+ U2 R# O: N
DWORD GetCurrentDirectory(
% x! Y: o2 u1 y) w DWORD nBufferLength, //缓冲区大小3 D, `; T+ J! K% |. }- m& K/ U/ }
LPSTR lpBuffer //缓冲区的首地址
( I) y! s4 ?- `. _6 p7 L( U' U );- V% M3 M* C0 S
GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量
) Z) f6 S+ r9 i2 z" `9 g8 ?8 JGetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息 ) [- g& d; I( @- x7 ?
GetDriveType 判断一个磁盘驱动器的类型
/ Q4 D9 V1 V6 k! J( B' J% DGetExpandedName 取得一个压缩文件的全名 ; u, ?( a' p9 |4 E2 V
GetFileAttributes 判断指定文件的属性
2 u/ Z x* `' l; g# j- FGetFileInformationByHandle 这个函数提供了获取文件信息的一种机制
9 W+ n2 X6 E: ~. U6 g; ^' bGetFileSize 判断文件长度
], m% O# }: B. C! L1 hGetFileTime 取得指定文件的时间信息
1 V+ I3 S9 |& q6 [* gGetFileType 在给出文件句柄的前提下,判断文件类型
@2 D% o+ _1 T( D _GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息 ' Q4 z- z8 x8 t
GetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区
: g" E. I' {% DGetFullPathName 获取指定文件的完整路径名
5 R/ x9 ^$ G5 B3 S+ DGetLogicalDrives 判断系统中存在哪些逻辑驱动器字母
& X* d! F( y/ RGetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径 7 @& o; T3 K6 z" A1 B
GetOverlappedResult 判断一个重叠操作当前的状态
+ R) M% Z% y) _2 v; ^GetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值 , B8 _2 W1 C, z$ Q) ^$ z% ~* p
GetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表
5 C& {; |9 w Q7 J$ S- tGetPrivateProfileString 为初始化文件中指定的条目取得字串
6 v4 O5 g4 F0 PGetProfileInt 取得win.ini初始化文件中指定条目的一个整数值 5 V% F% }9 f& A7 e4 N9 _
GetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表 . I. S- y6 K' g4 r+ S: y0 p; {
GetProfileString 为win.ini初始化文件中指定的条目取得字串
, q. ?2 s' Q7 Q' p) }* RGetShortPathName 获取指定文件的短路径名
6 g2 q8 G4 W8 a7 y+ v3 P" `GetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名
! E8 V% M% `# m+ p& g) k7 z IGetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用 + `; t. U8 ]) a5 c' {9 O6 _
GetTempPath 获取为临时文件指定的路径 8 J& f T2 h8 x8 ?. b! t
GetVolumeInformation 获取与一个磁盘卷有关的信息
9 y! e+ c, r$ k, |* |: q$ lGetWindowsDirectory 获取Windows目录的完整路径名 4 `- W- `( v4 V! _. U2 r
hread 参考lread
8 U. A* N8 ~3 _, w' G% Bhwrite 参考lwrite函数 0 M) d3 ^3 u; O4 }$ a: M4 c
lclose 关闭指定的文件 0 K8 T) [- t3 E, B4 s" ~6 E
lcreat 创建一个文件
) Z8 j8 m: v8 v) S. p5 wllseek 设置文件中进行读写的当前位置 6 o# h) Z9 V a% j& M6 B
LockFile 锁定文件的某一部分,使其不与其他应用程序共享
6 }& @1 K/ d* L# t: lLockFileEx 与LockFile相似,只是它提供了更多的功能 * ? j) L5 ]) E
lopen 以二进制模式打开指定的文件
5 P( y& T' p8 E# w# l, Hlread 将文件中的数据读入内存缓冲区
) p. w4 d7 E3 a5 {5 E {lwrite 将数据从内存缓冲区写入一个文件 & t7 G8 o% b% Q/ E
LZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件
: U) a9 W' J* ?7 ]1 ~. X3 t. \4 {: b$ [LZCopy 复制一个文件
: @% Z3 t- |, W5 j2 _LZInit 这个函数用于初始化内部缓冲区 7 h7 c: K" F* b
LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件 & V8 p- t) E5 a' ?6 A! H
LZRead 将数据从文件读入内存缓冲区
% E7 a: y7 e9 T7 ?LZSeek 设置一个文件中进行读写的当前位置 0 D$ G, F3 ~3 b$ y8 L! W
MapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间
; P7 o# ]$ h- m8 _* TMoveFile 移动文件 4 Z0 p/ F$ q/ H, W# Q
OpenFile 这个函数能执行大量不同的文件操作 * T" z m2 ?6 e- O7 q ?: N
OpenFileMapping 打开一个现成的文件映射对象
2 P. ^- n) \2 E4 Q/ I! qQueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况
2 |# t- I. \1 H Y7 kReadFile 从文件中读出数据
4 R8 N2 |( g# `( h3 N# K1 _ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调
6 X2 h9 G% Z! _9 kRegCloseKey 关闭系统注册表中的一个项(或键)
9 B: _3 @) y; r( I9 W; jRegConnectRegistry 访问远程系统的部分注册表 2 [9 P0 r7 W3 w9 z
RegCreateKey 在指定的项下创建或打开一个项
+ q; l' i# d9 b% b! URegCreateKeyEx 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数
' ?9 }1 T6 h' l3 GRegDeleteKey 删除现有项下方一个指定的子项
, G9 O+ z: h7 v, MRegDeleteValue 删除指定项下方的一个值
. F! E! w4 E+ n3 V7 }' p9 D7 I9 MRegEnumKey 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx
8 z' m9 d* g. S# Q4 T) T3 ARegEnumKeyEx 枚举指定项下方的子项
6 j' \4 ~, v0 y) r. |- O# zRegEnumValue 枚举指定项的值
$ M$ S$ i# w; D- H+ d" bRegFlushKey 将对项和它的子项作出的改动实际写入磁盘 : @9 N) t( w$ \: c
RegGetKeySecurity 获取与一个注册表项有关的安全信息
3 g% B) {$ E3 |( F3 |RegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息
: X5 p, {3 T0 Z& i5 S9 YRegNotifyChangeKeyValue 注册表项或它的任何一个子项发生变化时,用这个函数提供一种通知机制 6 Y- N9 ]# n( I9 T$ A# C
RegOpenKey 打开一个现有的注册表项 : s( ?, u1 y2 C: ?' H) @
RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数 * _! ?# _2 G( }& n9 B
RegQueryInfoKey 获取与一个项有关的信息
) D4 j7 i% k" v2 Z' h0 l) XRegQueryValue 取得指定项或子项的默认(未命名)值 ; \# Q4 _( g; O0 K4 V
RegQueryValueEx 获取一个项的设置值
7 N3 ]/ o& \) g; ^" x, dRegReplaceKey 用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息
" a! @ s! @" M/ @; F) e3 ~* \RegRestoreKey 从一个磁盘文件恢复注册表信息 . B* }$ c* s5 n8 b
RegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件
5 u% c% k# O( C3 c4 tRegSetKeySecurity 设置指定项的安全特性 ' K4 C! r4 k8 P. H: s
RegSetValue 设置指定项或子项的默认值
/ y! ^+ E& B) j$ HRegSetValueEx 设置指定项的值 2 ?: _3 z; H! x
RegUnLoadKey 卸载指定的项以及它的所有子项 ( o4 w9 j, J1 x* w
RemoveDirectory 删除指定目录 9 @8 r; {4 e! u
SearchPath 查找指定文件
2 R$ U8 r: Y3 l4 l3 ?: Y# X/ }7 vSetCurrentDirectory 设置当前目录 " g5 D6 B! T. z' v* ]! v. G
SetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾 & O4 G' e# Y/ A$ p. R& ?( `8 \; w! E
SetFileAttributes 设置文件属性
0 f1 J4 G- I3 c" P8 a" ]* Y9 X7 dSetFilePointer 在一个文件中设置当前的读写位置 & f0 U+ g$ ^& O' W9 B/ ~: n" T' {+ O
SetFileTime 设置文件的创建、访问及上次修改时间
" g8 M1 C4 R" E) _SetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果 ) M+ l: h) J( d
SetVolumeLabel 设置一个磁盘的卷标(Label) # W# T: y, e) @/ }9 L3 Q2 J# y
SystemTimeToFileTime 根据一个FILETIME结构的内容,载入一个SYSTEMTIME结构
. D1 s) a. O2 ]9 m4 HUnlockFile 解除对一个文件的锁定 # j s$ P, d9 h. z. V8 A5 q) \
UnlockFileEx 解除对一个文件的锁定
7 _: q' p, E2 H" a' U' G8 cUnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射
" H! a% H" q; YVerFindFile 用这个函数决定一个文件应安装到哪里
/ Q+ r* H% @- Q# AVerInstallFile 用这个函数安装一个文件
, B; e+ v5 w: q6 JVerLanguageName 这个函数能根据16位语言代码获取一种语言的名称 $ F9 y. O0 g& s) _
VerQueryValue 这个函数用于从版本资源中获取信息
& `: |5 l$ F+ D( T' D1 `WriteFile 将数据写入一个文件
5 ]0 R t3 F0 dWriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调
1 w5 ?' Z. Q: U5 S3 {WritePrivateProfileSection 为一个初始化文件(.ini)中指定的小节设置所有项名和值 7 a3 F8 X5 B5 k' A3 l5 U
WritePrivateProfileString 在初始化文件指定小节内设置一个字串 3 [' ~( c& \( _. M3 V
WriteProfileSection 为Win.ini初始化文件中一个指定的小节设置所有项名和值 1 e8 W3 P6 ]# c/ O+ b0 n
WriteProfileString 在Win.ini初始化文件指定小节内设置一个字串
. n1 l6 T+ B* y2 G& I4. API之打印函数 0 e2 r) R- m) \. ]# A2 r; v" k
AbortDoc 取消一份文档的打印 : q2 q8 D! G$ ~# B- @
AbortPrinter 删除与一台打印机关联在一起的缓冲文件 9 J$ b, v% w" i1 {$ j4 j
AddForm 为打印机的表单列表添加一个新表单 * \4 L$ p5 C! B. _* n& u
AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 $ o4 Y3 ^4 f' U4 L8 q9 `8 J
AddMonitor 为系统添加一个打印机监视器 5 z1 K1 Y) d/ p4 g8 z
AddPort 启动"添加端口"对话框,允许用户在系统可用端口列表中加入一个新端口 . V; t: c v. A& B0 V/ o
AddPrinter 在系统中添加一台新打印机 & ]) ]1 }" D" U5 l
AddPrinterConnection 连接指定的打印机
: E3 `- r& _1 x2 jAddPrinterDriver 为指定的系统添加一个打印驱动程序 " i J6 ?, |: n' m
AddPrintProcessor 为指定的系统添加一个打印处理器
- R3 ~8 P0 u. GAddPrintProvidor 为系统添加一个打印供应商 * F7 N$ d8 r8 I
AdvancedDocumentProperties 启动打印机文档设置对话框
1 D0 I) y' W/ k; S2 f- {' LClosePrinter 关闭一个打开的打印机对象
. ^+ D2 c1 V2 B" b5 h* CConfigurePort 针对指定的端口,启动一个端口配置对话框
m9 u3 ]/ G7 |- a" kConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接
X4 K8 ^9 p G" V" `) RDeleteForm 从打印机可用表单列表中删除一个表单 + a4 q8 l1 I: L- M' z+ Q" ^
DeleteMonitor 删除指定的打印监视器 . R: k% k/ o6 E. [ T2 Q4 E, M' w
DeletePort 启动"删除端口"对话框,允许用户从当前系统删除一个端口 ' W O, `! w/ u& f& E
DeletePrinter 将指定的打印机标志为从系统中删除
% s% I8 _+ n! w+ R9 T! sDeletePrinterConnection 删除与指定打印机的连接 . y0 O5 d% g ^- I" h! E
DeletePrinterDriver 从系统删除一个打印机驱动程序
* f5 l. x# _6 p }* O5 I& [DeletePrintProcessor 从指定系统删除一个打印处理器
' K& r C& m4 A+ Z8 T3 yDeletePrintProvidor 从系统中删除一个打印供应商
! O8 R. S X+ [, u n# C$ oDeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息
, ^, }* h2 g( C" F! h0 |4 G6 EDocumentProperties 打印机配置控制函数 / E9 w5 h4 Z5 E# c; z
EndDocAPI 结束一个成功的打印作业
' {& j6 C0 w# ?: FEndDocPrinter 在后台打印程序的级别指定一个文档的结束 " ?, B- m6 j/ d9 o. a
EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 3 |' [# t7 [2 m' ]; ~
EndPagePrinter 指定一个页在打印作业中的结尾
M6 t2 Z! R8 ]7 q& @/ k( SEnumForms 枚举一台打印机可用的表单
8 Y0 J9 `& s9 h) a3 ?EnumJobs 枚举打印队列中的作业 Y% t$ K5 M1 @: B
EnumMonitors 枚举可用的打印监视器 2 F2 O% N; \1 Q0 w/ W8 y
EnumPorts 枚举一个系统可用的端口 ! o4 l2 A5 b, N* z+ c6 m3 d! R0 p: _
EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 9 B0 S6 ~, b( a. d6 h
EnumPrinters 枚举系统中安装的打印机 & @; ~7 W5 |, w' a5 d
EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 . p$ V7 `' P2 G" q. X
EnumPrintProcessors 枚举系统中可用的打印处理器 . M- d d0 ?% x" u
Escape 设备控制函数
% m3 r1 v' W" u. J. }FindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 : k O* }4 y' M8 u
FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化
: v8 v- ^7 { ?2 F$ S" f7 H* oFindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因
% {" m5 S$ ^4 x- i7 lFreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 - t; R) X/ b7 u2 f7 n$ i
GetForm 取得与指定表单有关的信息
+ O3 ^4 E3 e Y( i/ p6 uGetJob 获取与指定作业有关的信息 5 B0 v3 ]3 I/ t- m. k9 H
GetPrinter 取得与指定打印机有关的信息 Y7 l5 Y% q4 j# @9 u2 \1 B
GetPrinterData 为打印机设置注册表配置信息
. I5 H% i% D0 YGetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息
+ g" ?: K3 p% ?5 q4 b0 g; sGetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么
4 u V( s! u9 t: o9 l* [: CGetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录
! ]' h& a( e& gOpenPrinter 打开指定的打印机,并获取打印机的句柄
9 ]0 P9 U4 c r1 kPrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 2 C9 m* b3 i: E/ | i& g3 I& v
PrinterProperties 启动打印机属性对话框,以便对打印机进行配置 ; z1 H |& ] z8 H+ ]
ReadPrinter 从打印机读入数据 : I0 H, ~/ x6 o6 j
ResetDC 重设一个设备场景 0 j$ n0 O2 D; b G) [5 G
ResetPrinter 改变指定打印机的默认数据类型及文档设置
8 O- w5 g( w& w. I& V* t& CScheduleJob 提交一个要打印的作业
# J+ a8 S& |* X7 L) w3 |SetAbortProc 为Windows指定取消函数的地址
. [( w* p. M. @# u, _% q+ rSetForm 为指定的表单设置信息 8 [: f' x* e, x& R
SetJob 对一个打印作业的状态进行控制 & M8 d2 ~# g) F% o7 F
SetPrinter 对一台打印机的状态进行控制 # \6 M' e4 K5 Q2 c7 [) L$ y! Y
SetPrinterData 设置打印机的注册表配置信息
2 S) w: ~- o2 y D) \ @1 i9 WStartDoc 开始一个打印作业
2 v! p3 ?9 ~+ S4 P& |4 qStartDocPrinter 在后台打印的级别启动一个新文档 1 o, F) [+ a& ~$ {
StartPage 打印一个新页前要先调用这个函数 + b& X& }- N. n7 i3 M3 e4 B
StartPagePrinter 在打印作业中指定一个新页的开始
2 S; P8 ?& ?. D3 q+ h1 wWritePrinter 将发送目录中的数据写入打印机
Y# m/ L. B4 s! ]0 \$ j1 Y, l5. API之文本和字体函数
& C) h& C1 B' t, s4 A& ~8 qAddFontResource 在Windows系统中添加一种字体资源
! _1 w: D* ]& Z% d/ o- YCreateFont 用指定的属性创建一种逻辑字体 4 H8 s, S) R( B) E
CreateFontIndirect 用指定的属性创建一种逻辑字体
" @3 ?7 _0 S4 X! O7 t0 }CreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统
7 h, f& c3 M" f6 DDrawText 将文本描绘到指定的矩形中
- z9 L6 j# Z+ P4 \1 c" z! M) ]4 @DrawTextEx 与DrawText相似,只是加入了更多的功能
3 \4 P$ d$ y8 t, b; n/ LEnumFontFamilies 列举指定设备可用的字体 4 o H2 Q4 o( F5 a- \" j3 T+ F
EnumFontFamiliesEx 列举指定设备可用的字体 % x/ P# v! c7 U
EnumFonts 列举指定设备可用的字体
" e* {+ D+ n1 |! P4 U& e( Z( X0 Z& dExtTextOut 经过扩展的文本描绘函数。也请参考SetTextAlign函数
. _ K" Z' O( O. wGetAspectRatioFilterEx 用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小 ; \; ?; y+ X! O2 u L8 f
GetCharABCWidths 判断TureType字体中一个或多个字符的A-B-C大小 % `6 [0 P- z y; m8 r
GetCharABCWidthsFloat 查询一种字体中一个或多个字符的A-B-C尺寸 2 Q/ P) g, ~! y" M( @! K6 a
GetCharacterPlacement 该函数用于了解如何用一个给定的字符显示一个字串
6 R5 q. c! I7 d- a, n& j s* TGetCharWidth 调查字体中一个或多个字符的宽度 " L* j) D( w) \3 a# B. z$ D2 @
GetFontData 接收一种可缩放字体文件的数据 8 d$ d9 C- N" s8 c
GetFontLanguageInfo 返回目前选入指定设备场景中的字体的信息 6 U( F8 _) @2 G: @& y* o
GetGlyphOutline 取得TureType字体中构成一个字符的曲线信息 ; o9 x" K8 a/ `
GetKerningPairs 取得指定字体的字距信息
+ O# w, O [+ u% ]6 jGetOutlineTextMetrics 接收与TureType字体内部特征有关的详细信息 - }* v$ S( G/ {; O
GetRasterizerCaps 了解系统是否有能力支持可缩放的字体 # z8 k8 ?- A" O5 K" P- a/ c
GetTabbedTextExtent 判断一个字串占据的范围,同时考虑制表站扩充的因素
* O! J/ I' E+ BGetTextAlign 接收一个设备场景当前的文本对齐标志 5 A' Z3 K2 G, R9 ]: s% ~0 h! s
GetTextCharacterExtra 判断额外字符间距的当前值 6 k; }( z; x3 G
GetTextCharset 接收当前选入指定设备场景的字体的字符集标识符
# _& F/ W8 G+ k% wGetTextCharsetInfo 获取与当前选定字体的字符集有关的详细信息 + a# b% W$ L) _! [% }3 {, |5 H1 P6 j
GetTextColor 判断当前字体颜色。通常也称为"前景色"
( a& J( m- a$ R( U# {/ f \GetTextExtentExPoint 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息 $ H8 D! D0 J" S* o0 j. q
GetTextExtentPoint 判断一个字串的大小(范围)
8 h' ?5 D! u3 o, L. [6 u/ U0 qGetTextFace 获取一种字体的字样名 ( Z* F9 l, }, ?
GetTextMetrics 获取与选入一种设备场景的物理字体有关的信息
2 Q$ E J2 c( Q1 h' Y) bGrayString 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态
# N3 h1 h2 H. c; I0 MPolyTextOut 描绘一系列字串 d. `4 g9 a3 ]2 u
RemoveFontResource 从Windows系统中删除一种字体资源 / T5 V' |1 V# G, R n
SetMapperFlags Windows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体
+ V1 V4 x% J8 s, dSetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置
J9 l+ R3 `6 x5 v3 R6 Q! f3 m" }! XSetTextCharacterExtra 描绘文本的时候,指定要在字符间插入的额外间距 ( Q6 B! o8 l- u$ m5 M% J; Y" j8 v
SetTextColor 设置当前文本颜色。这种颜色也称为"前景色"
9 C* g' r" G8 K, V( nSetTextJustification 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理
/ J I( v2 ~5 T* P1 c- y4 rTabbedTextOut 支持制表站的一个文本描绘函数 ' O9 f" S% i! i- {
TextOut 文本绘图函数 7 m8 L2 z1 w0 ~, A9 h/ N
WINGDIAPI BOOL WINAPI TextOut(1 z M8 j0 ?5 D3 P# Y$ |' J( S
HDC, //输出设备" e" x4 B' o' @$ f3 T
int, //输出的横坐标
0 A% Y# K% _9 ~% S* E6 U0 M# eint, //纵坐标8 e e5 W; e$ ?" u4 `% l
LPCSTR, //输出的文本str1 N Q1 [8 T- u
int); //文本的长度:lstrlen(str)
" b: g6 j) m. q G0 w6. API之菜单函数
/ k3 Q% E' ~# T. h( j+ }8 SAppendMenu 在指定的菜单里添加一个菜单项
' n; t1 K4 B/ ]6 JCheckMenuItem 复选或撤消复选指定的菜单条目
6 f' q) X- s( g! \5 H+ y) KCheckMenuRadioItem 指定一个菜单条目被复选成"单选"项目
, I& K. B* M2 E6 s GCreateMenu 创建新菜单 + I$ G6 x, s/ R. f1 w, R4 J
CreatePopupMenu 创建一个空的弹出式菜单 ! w9 a) [" C$ F1 n6 K1 P
DeleteMenu 删除指定的菜单条目
% Q0 G1 H1 G0 h# \ V+ k6 ]9 g* |DestroyMenu 删除指定的菜单 " G. N7 |0 [" I+ X+ z& k
DrawMenuBar 为指定的窗口重画菜单
0 F9 c9 u) s, v/ @9 e# tEnableMenuItem 允许或禁止指定的菜单条目 1 L3 R3 K8 {: |& v1 j1 n
GetMenu 取得窗口中一个菜单的句柄
' ? b3 M2 R0 I( {; v% }GetMenuCheckMarkDimensions 返回一个菜单复选符的大小
% v" F+ z" Q6 H; u7 P( OGetMenuContextHelpId 取得一个菜单的帮助场景ID ; ]6 ~2 g- o F6 T" d( }: g: |+ T
GetMenuDefaultItem 判断菜单中的哪个条目是默认条目
% P; g9 e3 m- W) o7 [& K5 ^GetMenuItemCount 返回菜单中条目(菜单项)的数量 - J# t x; j8 G7 G/ |! K/ T
GetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID
1 V( B# ^# J# H; j6 S* iGetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息 / R2 M9 Y) O# L0 [* U6 W5 P
GetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息 # U" ]# G q8 P. Z1 O1 j% U: |! O( R2 e
GetMenuState 取得与指定菜单条目状态有关的信息
! \- s! K' N1 c0 c4 m; F5 }5 rGetMenuString 取得指定菜单条目的字串
* |8 ~5 |( J: o& p4 b$ N5 WGetSubMenu 取得一个弹出式菜单的句柄,它位于菜单中指定的位置 + C9 ?$ j4 {# h \
GetSystemMenu 取得指定窗口的系统菜单的句柄 $ x% c g) F6 h: E! x
HiliteMenuItem 控制顶级菜单条目的加亮显示状态 % }! C3 @% r' v9 B/ j
InsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动 # X- B' q0 [% p7 m
InsertMenuItem 插入一个新菜单条目 ( W* s% D; ^3 W+ b, j
IsMenu 判断指定的句柄是否为一个菜单的句柄 1 T6 b, H! a9 U& z& k
LoadMenu 从指定的模块或应用程序实例中载入一个菜单 : p! L4 j7 [. Y$ d# @
LoadMenuIndirect 载入一个菜单
9 H/ N) e- g* O' c( vMenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点
: m2 m7 B- ]; b7 ^" ^" GModifyMenu 改变菜单条目
. T: F* K* B! FRemoveMenu 删除指定的菜单条目
7 o" R* |6 I5 L q( RSetMenu 设置窗口菜单
: @) O* _7 |% L& F/ ?# Q. NSetMenuContextHelpId 设置一个菜单的帮助场景ID
( I! _/ c, X% _SetMenuDefaultItem 将一个菜单条目设为默认条目
0 T" {3 H+ z' V' ?4 DSetMenuItemBitmaps 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√)
9 I8 X4 `+ @9 {; MSetMenuItemInfo 为一个菜单条目设置指定的信息
+ l- n: r0 D" L. _/ Z$ sTrackPopupMenu 在屏幕的任意地方显示一个弹出式菜单 + z" C# p9 S( M3 D- J: A# t0 y1 U
TrackPopupMenuEx 与TrackPopupMenu相似,只是它提供了额外的功能
4 X* A6 k/ C9 t5 z2 S0 z9 u& B$ I7. API之位图、图标和光栅运算函数 $ {2 C; _+ B: A, Y+ |0 I G5 X" ?
BitBlt 将一幅位图从一个设备场景复制到另一个
6 t! u6 J+ M1 Z* `9 ^( _6 h WINGDIAPI BOOL WINAPI BitBlt(
- t. z" n; J. J1 V3 hHDC, //目标HDC# \' S4 H0 v$ M( T# o. a3 X7 W0 N
int, //X1
- h+ c; a; F5 i; ^# c% g% H6 j1 h$ Nint, //Y1
6 X* o$ X: l1 R, n( L5 \' nint, //width
- z1 B$ r }. \7 O3 Dint, //height
; H6 L9 r& a& _% C9 O4 jHDC, //源HDC' F/ D5 M( y P8 o
int, //右边的距离* z& K0 K' } c( [* Z1 }7 a! u
int, //??8 [" e0 ?& _$ G7 r
DWORD); //拷贝方式:SRCCOPY|SRCPAINT|SRCAND|SRCINVERT|RCERASE|NOTSRCCOPY|NOTSRCERASE|MERGECOPY|MERGEPAINT|( Z& L7 ?; M+ Q ?% W
PATCOPY|PATPAINT|PATINVERT|DSTINVERT|BLACKNESS|WHITENESS/ R/ |' E4 r5 }8 y# z0 |
CopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序 . b% R' V( j) Z$ [
CopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作
- b& ~) p5 i/ i2 FCreateBitmap 按照规定的格式创建一幅与设备有关位图 ' Z+ w( W2 w% i- |* y2 T
CreateBitmapIndirect 创建一幅与设备有关位图 7 R0 M; Y; Y; E# h
CreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容
3 K2 [$ L9 Z4 E' ~CreateCursor 创建一个鼠标指针
+ d0 d( l. Q- ^4 {CreateDIBitmap 根据一幅与设备无关的位图创建一幅与设备有关的位图 ) W! A# V& Y2 W: F3 Q
CreateDIBSection 创建一个DIBSection
' |9 d; I0 G# t3 m; I: g9 n+ RCreateIcon 创建一个图标 $ N5 r1 O. Z: \1 C& v
CreateIconIndirect 创建一个图标
/ ]/ j8 A- F/ O0 J) s8 jDestroyCursor 清除指定的鼠标指针,并释放它占用的所有系统资源 `: Q: X& G; N) U! k4 D
DestroyIcon 清除图标
' }- {8 D: {8 @; @( yDrawIcon 在指定的位置画一个图标
& S7 l% R) ~) B6 S( t+ m" ?! l" ODrawIconEx 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能 + _: M# c: d2 |9 F2 J
ExtractAssociatedIcon 判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之 6 d5 k% R p. V' v# {
ExtractIcon 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来
5 X. k9 L# V1 t5 E3 R7 lGetBitmapBits 将来自位图的二进制位复制到一个缓冲区 : g n m. e' ?; {
GetBitmapDimensionEx 取得一幅位图的宽度和高度 0 m# u# D6 i! ]: d% W$ ]
GetDIBColorTable 从选入设备场景的DIBSection中取得颜色表信息 9 p5 S- M0 F- }( C0 ?
GetDIBits 将来自一幅位图的二进制位复制到一幅与设备无关的位图里 1 l# ^7 J: X, n f
GetIconInfo 取得与图标有关的信息
3 q) l% t; B2 D; Z& {* vGetStretchBltMode 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式 {% |- u7 X u% o! b: B/ U( G; U
LoadBitmap 从指定的模块或应用程序实例中载入一幅位图
1 w. p6 p' `* {0 [! P, [LoadCursor 从指定的模块或应用程序实例中载入一个鼠标指针 : F) j3 B+ A' Y. g" D' S) O1 [
LoadCursorFromFile 在一个指针文件或一个动画指针文件的基础上创建一个指针
' `- @/ {$ j& g, {" MLoadIcon 从指定的模块或应用程序实例中载入一个图标 1 F, c4 D) E0 w& O3 @/ K& c2 E8 X
LoadImage 载入一个位图、图标或指针 q2 Q( J- X( M. L: R- e
HANDLE LoadImageA(: Y h0 M @ ]
HINSTANCE, //当前实例句柄:AfxGetInstanceHandle()
. C6 c" `- D t- s LPCSTR, //资源所在的目录:c:\help.bmp5 A7 W1 B, |( v7 V% V
UINT, //类型:IMAGE_BITMAP|IMAGE_ICON|IMAGE_CURSOR|IMAGE_ENHMETAFILE0 i# s/ y6 g3 b0 s
int, //) i5 e" Y' |8 a+ s K
int, //
2 C' s& o' D& bUINT); //风格:LR_DEFAULTCOLOR|LR_MONOCHROME|LR_COLOR|LR_COPYRETURNORG|
# @7 G' y2 O: r$ O+ w7 QR_COPYDELETEORG|LR_LOADFROMFILE|LR_LOADTRANSPARENT|LR_DEFAULTSIZE|LR_VGACOLOR|; a$ k2 t' m( p5 w! N( J. S
LR_LOADMAP3DCOLORS|LR_CREATEDIBSECTION|LR_COPYFROMRESOURCE|LR_SHARED
$ @" p# J8 ^9 `8 w! t; E% h6 HMaskBlt 执行复杂的图象传输,同时进行掩模(MASK)处理
; A2 K2 ^+ u$ I, c6 V# b* J) O! nPatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景
9 I" X7 F/ |+ J, p+ S; cPlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理 7 [) G7 ]% o# E3 i
SetBitmapBits 将来自缓冲区的二进制位复制到一幅位图 1 B) K' F+ l: a1 g3 d( J) ~
SetBitmapDimensionEx 设置一幅位图的宽度。以一毫米的十分之一为单位 " A, A! N0 Y( i4 n- N$ e
SetDIBColorTable 设置选入设备场景的一个DIBSection的颜色表信息 ) ^: y B4 {+ `
SetDIBits 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里
+ ^# V% d3 E4 P/ iSetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备
- U, @$ f' e! i6 n4 l9 m& \SetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式
% e1 D& H) n9 d8 f! Z0 |) C5 a( J9 N1 gStretchBlt 将一幅位图从一个设备场景复制到另一个 + C6 J( H/ g6 X4 ~! @
StretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景
' F. K; f* P# @9 R8. API之绘图函数
3 r3 G* e: Q* B; H% _+ `AbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作 ' \7 K# C1 Z4 b6 U5 R
AngleArc 用一个连接弧画一条线 2 n# A5 Q) \! X5 | ]
Arc 画一个圆弧
/ f" V( n8 A" Q: r, K) I j$ oBeginPath 启动一个路径分支
! T$ K- E5 [9 |CancelDC 取消另一个线程里的长时间绘图操作 : ?. `4 T+ D* f, W) G3 N
Chord 画一个弦 & R2 A* l; s$ v6 V4 M' ]
CloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄 6 H+ S3 g( b# L3 i
CloseFigure 描绘到一个路径时,关闭当前打开的图形 2 m$ {. W+ T5 T- Y! Q) ^5 V% l
CloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄
; w( _) X: f3 _# UCopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝)
! z8 Q- S" @1 l& \' _, qCopyMetaFile 制作指定(标准)图元文件的一个副本
9 G, M* u% k0 N% q' ^CreateBrushIndirect 在一个LOGBRUSH数据结构的基础上创建一个刷子 8 t9 L) A. c ~& b
CreateDIBPatternBrush 用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案)
) @# V* x1 J3 z8 N$ nCreateEnhMetaFile 创建一个增强型的图元文件设备场景
7 X8 |; w$ g& E8 {' C9 S" NCreateHatchBrush 创建带有阴影图案的一个刷子 / m: ?" g8 e8 M. J6 L- I
CreateMetaFile 创建一个图元文件设备场景 : K9 \# M8 I1 q. h
CreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子 : l" e3 K8 D' h
CreatePen 用指定的样式、宽度和颜色创建一个画笔
/ v- Q7 w5 P" Q* h4 t2 aCreatePenIndirect 根据指定的LOGPEN结构创建一个画笔
) o9 g0 E0 D6 R. R% w+ hCreateSolidBrush 用纯色创建一个刷子 ; N% s K6 }# F% ]5 S5 E1 a
DeleteEnhMetaFile 删除指定的增强型图元文件 ! q. x# J7 k% \7 ~ u5 }( N" f
DeleteMetaFile 删除指定的图元文件 ( m2 \- S3 t( z! W2 E# C8 z# n
WINGDIAPI BOOL WINAPI DeleteObject(HGDIOBJ) 删除GDI对象,对象使用的所有系统资源都会被释放
; F% o+ W" T0 w9 P; ]9 u: zDrawEdge 用指定的样式描绘一个矩形的边框
( l2 ~* t9 @1 @& k7 @& E5 zDrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序 " j) O) G- D ?: W. S4 E5 l
DrawFocusRect 画一个焦点矩形
. ]. w4 m% X9 C- a; GDrawFrameControl 描绘一个标准控件
0 C6 M" g1 W5 xDrawState 为一幅图象或绘图操作应用各式各样的效果
- \( u/ ]% M2 `9 d2 x; VEllipse 描绘一个椭圆,由指定的矩形围绕 ; W( R1 H2 t* n, E* f9 V
EndPath 停止定义一个路径 : |0 F4 ^5 S$ D2 {4 U0 n4 k
EnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录
$ t) N' F8 m2 h& P0 S( b3 L. LEnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录 ) f" A' s6 y! Q
EnumObjects 枚举可随同指定设备场景使用的画笔和刷子 6 o: \! m+ G o o3 t
ExtCreatePen 创建一个扩展画笔(装饰或几何) % p1 `, s- |! ]: r7 r' x
ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域 8 `; A' r/ D0 l, J: r3 f9 Q4 f1 C
FillPath 关闭路径中任何打开的图形,并用当前刷子填充 + D1 ?1 P8 P/ D; T
FillRect 用指定的刷子填充一个矩形 , `+ [3 b1 o+ s, {+ ~* |0 m
FlattenPath 将一个路径中的所有曲线都转换成线段 0 y$ g+ J9 _8 J
FloodFill 用当前选定的刷子在指定的设备场景中填充一个区域 & M6 G S5 `$ L$ T7 Z5 f
FrameRect 用指定的刷子围绕一个矩形画一个边框
* C4 A- X9 Q. e+ nGdiComment 为指定的增强型图元文件设备场景添加一条注释信息 ' F. g$ T0 ^5 \8 {( s
GdiFlush 执行任何未决的绘图操作 % Q5 `9 M) R$ D6 O: U! B
GdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中
# B; O2 f0 [ E! }GdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列 . s6 S ~0 `9 O$ w5 a; b
GetArcDirection 画圆弧的时候,判断当前采用的绘图方向 , _; G/ l' u* F/ P2 V8 l2 x' p
GetBkColor 取得指定设备场景当前的背景颜色 * s( Y" V k2 r
GetBkMode 针对指定的设备场景,取得当前的背景填充模式 7 t1 z, P$ D9 R: c4 U6 t
GetBrushOrgEx 判断指定设备场景中当前选定刷子起点
1 A0 s; _. C9 l& _% R# Q" WGetCurrentObject 获得指定类型的当前选定对象
8 z# P7 B5 N/ h9 q5 oGetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置
9 d: F' b; i+ L+ NGetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄
! E6 `- \; r5 yGetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里
2 E c% @( V# o# p+ i0 _GetEnhMetaFileDescription 返回对一个增强型图元文件的说明
4 z/ N; a! u) T% c) c8 fGetEnhMetaFileHeader 取得增强型图元文件的图元文件头 ( b4 f5 \3 z9 ^' j
GetEnhMetaFilePaletteEntries 取得增强型图元文件的全部或部分调色板 - _! h' R) X) _" l( m$ g Y3 A
GetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄 ' Z; Y9 R5 k; q0 |3 f
GetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区
) }- _1 g8 W nGetMiterLimit 取得设备场景的斜率限制(Miter)设置
4 l! _5 M/ z N/ wGetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色
( k6 I7 Q6 {+ U' N1 |GetObjectAPI 取得对指定对象进行说明的一个结构 ( d8 v% L# B5 u! j7 R
GetObjectType 判断由指定句柄引用的GDI对象的类型 . }) }8 A# S6 j7 V
GetPath 取得对当前路径进行定义的一系列数据 1 Y# m! B/ ^: f# Z
GetPixel 在指定的设备场景中取得一个像素的RGB值
! W* C! v' i+ [2 OGetPolyFillMode 针对指定的设备场景,获得多边形填充模式
& E" u1 D# N/ _GetROP2 针对指定的设备场景,取得当前的绘图模式 ' K, ~+ a, T$ t- R# Q/ M6 D
GetStockObject 取得一个固有对象(Stock)
# F+ ^' y5 R) K4 i+ EGetSysColorBrush 为任何一种标准系统颜色取得一个刷子
6 s+ d, u' {. D% a# D0 u( o. TGetWinMetaFileBits 通过在一个缓冲区中填充用于标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件 ! A. y- z! y' e4 r' K5 l: Q
InvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形 ' w) s/ [7 L: L- V; i/ @
LineDDA 枚举指定线段中的所有点 ( S! b; r- W) Z7 b/ {! U* X2 q
LineTo 用当前画笔画一条线,从当前位置连到一个指定的点 7 k! Q( | {3 ^; n9 c) C' K, F
MoveToEx 为指定的设备场景指定一个新的当前画笔位置 ; n+ \1 ^, I" c' a1 t; g
PaintDesk 在指定的设备场景中描绘桌面墙纸图案
5 Q s9 j1 Q$ x9 TPathToRegion 将当前选定的路径转换到一个区域里
w: Y! I% X: a' oPie 画一个饼图
, ~, h& S, H |3 _3 uPlayEnhMetaFile 在指定的设备场景中画一个增强型图元文件 " N! h1 _8 `' H
PlayEnhMetaFileRecord 回放单独一条增强型图元文件记录 - H) R, t; }4 p, h8 T0 Q' O
PlayMetaFile 在指定的设备场景中回放一个图元文件 " t* M: `3 i4 a9 w; }
PlayMetaFileRecord 回放来自图元文件的单条记录 0 W y" T2 l# M; Z1 Q! d% R
PolyBezier 描绘一条或多条贝塞尔(Bezier)曲线
. E, \" n9 G" G; Q( ^PolyDraw 描绘一条复杂的曲线,由线段及贝塞尔曲线组成 " r3 H, l6 T; a9 b
Polygon 描绘一个多边形 8 r# _4 I3 A* Y3 Z
Polyline 用当前画笔描绘一系列线段
6 i" b1 Z: R3 ^! W5 j1 ~1 \PolyPolygon 用当前选定画笔描绘两个或多个多边形
( L9 H: ~7 V I4 K; oPolyPolyline 用当前选定画笔描绘两个或多个多边形 2 U4 N0 d/ A( a" B
Rectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充 k" S3 [; j9 n/ ~' g' ~
RoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充 ! L+ l) J; B& c3 N% ^. K# E
SelectClipPath 将设备场景当前的路径合并到剪切区域里
( _- V- J% u1 W$ oSelectObject 为当前设备场景选择图形对象 ' s8 O6 G( Z6 n
WINGDIAPI HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ);; E( S+ e5 }( i4 R+ N, f
SetArcDirection 设置圆弧的描绘方向 ; D& P- O, l% B( k# g
SetBkColor 为指定的设备场景设置背景颜色
% E1 T1 }* P, D% d" L' u5 d; aSetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式
0 G0 B5 a& t% C y8 n5 pSetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点
: z/ t7 r/ B# a1 N% GSetEnhMetaFileBits 用指定内存缓冲区内包含的数据创建一个增强型图元文件 ! r% ^( z6 F* r! L. \9 u3 W' j0 C
SetMetaFileBitsEx 用包含在指定内存缓冲区内的数据结构创建一个图元文件
' L: h: L0 f; k1 z# `+ E3 d) zSetMiterLimit 设置设备场景当前的斜率限制 & k1 V' _' n7 m1 b# L
SetPixel 在指定的设备场景中设置一个像素的RGB值
) Q- o% S; { ^1 n! H! t3 DSetPixelV 在指定的设备场景中设置一个像素的RGB值 1 S0 P8 E C. [
SetPolyFillMode 设置多边形的填充模式
6 {$ a# ^! }; v! dSetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致
; f- e- p w0 [" i7 f5 j3 |! \SetWinMetaFileBits 将一个标准Windows图元文件转换成增强型图元文件
" u/ ]. u- {& i j _' }6 t# DStrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域 1 Z1 G- @( j# v+ Y$ ?
StrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭 ( _/ A0 s# x% x9 {' U
UnrealizeObject 将一个刷子对象选入设备场景之前,如刷子的起点准备用SetBrushOrgEx修改,则必须先调用本函数 % o; G' R6 G* E, v4 L* c" f9 s
WidenPath 根据选定画笔的宽度,重新定义当前选定的路径 3 \. L# Q" f0 X1 i6 m2 X
9. API之设备场景函数 & p3 \! {! w7 M0 U H6 S) ^' w
CombineRgn 将两个区域组合为一个新区域
8 ^. r! Y0 Q' xCombineTransform 驱动世界转换。它相当于依顺序进行两次转换
: J% O# M( }; }1 ? M/ ?, t& N' JCreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景
' ~ T( S2 l/ X, nCreateDC 为专门设备创建设备场景
( ~1 \9 [5 l+ ?+ n. lCreateEllipticRgn 创建一个椭圆
/ W/ z# y! Y; ~ X5 D" hCreateEllipticRgnIndirect 创建一个内切于特定矩形的椭圆区域 9 N! b) Y2 h' q& g" O5 p: O3 u" B
CreateIC 为专用设备创建一个信息场景 " d; N3 l& h% M
CreatePolygonRgn 创建一个由一系列点围成的区域 ! O, g. b' P8 O! O9 h
CreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的
1 h- t% W: k) C& U: ~; ]& M- Z* DCreateRectRgn 创建一个矩形区域 $ ]4 `+ v3 I7 ~: l
CreateRectRgnIndirect 创建一个矩形区域 " K* G6 z/ Q, H8 Q
CreateRoundRectRgn 创建一个圆角矩形 0 [6 J/ s+ X9 s/ L
DeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源
( n1 A3 N; p* |2 o7 q5 `DPtoLP 将点阵从设备坐标转换到专用设备场景逻辑坐标 # C+ o# d( Q2 M: R, p; ^4 I" E
EqualRgn 确定两个区域是否相等
1 u9 O9 L, e( R# pExcludeClipRect 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图
& x: h6 o3 z7 V. e9 `; eExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域 * s4 L8 d G1 U: j" |3 k2 \/ N- l
ExtCreateRegion 根据世界转换修改区域
. Z* t( |- Z( b/ \& }9 b2 FExtSelectClipRgn 将指定区域组合到设备场景的当前剪裁区 6 e# q7 I' |1 h
FillRgn 用指定刷子填充指定区域 9 t+ E# |$ C' z7 k9 y
FrameRgn 用指定刷子围绕指定区域画一个外框
% _0 [; p# M( ?" l, }GetBoundsRect 获取指定设备场景的边界矩形
) J' Q, g& i; h& u* KGetClipBox 获取完全包含指定设备场景剪裁区的最小矩形
" s" `1 q& K( _; QGetClipRgn 获取设备场景当前剪裁区 . z6 c$ e E3 k. Y" F
GetDC 获取指定窗口的设备场景 + {% S' d/ Q- @
GetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项 : w: x4 `( c4 I: X
GetDCOrgEx 获取指定设备场景起点位置(以屏幕坐标表示) 5 d. P. |/ E- s5 D9 W4 y& s
GetDeviceCaps 根据指定设备场景代表的设备的功能返回信息 6 R$ K: J! j' U- D5 K: B
GetGraphicsMode 确定是否允许增强图形模式(世界转换) " `1 S) g2 A' q. x
GetMapMode 为特定设备场景调入映象模式 9 O- g% x$ { q" z& y( X
GetRegionData 装入描述一个区域信息的RgnData结构或缓冲区
- T. l+ H- E, k! r) ?; ~GetRgnBox 获取完全包含指定区域的最小矩形 2 k% B6 t, K; f! s! ?3 b
GetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新 8 T& [! G. ]6 r
GetViewportExtEx 获取设备场景视口(viewport)范围 ) s, ?0 D% j. i- u5 B# V: D/ I2 D( G
GetViewportOrgEx 获取设备场景视口起点 & j7 O' S# n0 ^1 o0 a e" {7 `0 ~1 I
GetWindowDC 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景 5 R7 o2 V$ s$ M+ I" r5 i* n3 y. w
GetWindowExtEx 获取指定设备场景的窗口范围 " }- Q6 N2 y/ W7 x* n6 L- M/ j E
GetWindowOrgEx 获取指定设备场景的逻辑窗口的起点 ( c2 u3 E6 _5 @ O/ O) ^' I
GetWindowRgn 获取窗口区域
& T; t, e9 N9 _% U, G: b8 v$ nGetWorldTransform 如果有世界转换,为设备场景获取当前世界转换
$ j- O' D" K* {9 T! `" _1 EIntersectClipRect 为指定设备定义一个新的剪裁区
& J% }) k% K8 a' S4 R0 _0 D) l* M/ CInvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画 $ x. M. |! s( U
InvertRgn 通过颠倒每个像素值反转设备场景指定区域
1 K! e* P3 u& \6 A0 }: g$ iLPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标
0 N a6 H% Z* \/ `" @ModifyWorldTransform 根据指定的模式修改世界转换
; E1 m: d& a& h' o0 z, A7 ~0 X6 x$ uOffsetClipRgn 按指定量平移设备场景剪裁区 - \1 T9 p7 x" O+ Z! j
OffsetRgn 按指定偏移量平移指定区域
! X6 a: L1 t! A$ K$ OOffsetViewportOrgEx 平移设备场景视口区域 7 x2 f% g. Q: t/ n' A' Y3 f
OffsetWindowOrgEx 平移指定设备场景窗口起点
! H5 X) r+ \, I8 p% NPaintRgn 用当前刷子背景色填充指定区域 : C$ n% B7 s$ }% ^3 N) p$ N
PtInRegion 确定点是否在指定区域内
% r) j% M7 `7 T' U4 {PtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内)
0 P' ~4 \. \' _6 o! P/ `% IRectInRegion 确定矩形是否有部分在指定区域内 7 L1 S; ^* D$ s
RectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内)
! N- h+ D( \- l0 g" [) O' ]& r7 IReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景 6 `5 w1 i8 r" Z
RestoreDC 从设备场景堆栈恢复一个原先保存的设备场景 6 f. L: K2 V$ f5 I w4 B ?
SaveDC 将指定设备场景状态保存到Windows设备场景堆栈
6 d6 b+ n( d: a% U% tScaleViewportExtEx 缩放设备场景视口的范围 / h9 c9 D* y8 P
ScaleWindowExtEx 缩放指定设备场景窗口范围 ( }3 {/ Z% a0 I: k
ScrollDC 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形 $ S% ~8 Z( y. t6 r+ ^9 N% @
SelectClipRgn 为指定设备场景选择新的剪裁区 2 l' f( ?: s+ W4 y: l) ?: _5 b
SetBoundsRect 设置指定设备场景的边界矩形 9 ]9 ^# f, B, w* H/ r+ I& O/ C
SetGraphicsMode 允许或禁止增强图形模式,以提供某些支持(包括世界转换)
4 S7 {& g5 u* G. VSetMapMode 设置指定设备场景的映射模式 ' |% @0 g+ C0 S6 @; w3 N8 c" _& W- `2 q
SetRectRgn 设置区域为指定的矩形 3 V) K$ h0 r6 J
SetViewportExtEx 设置设备场景视口范围
, o# E$ i! ^$ Q; _0 C& |2 S! jSetViewportOrgEx 设置设备场景视口起点 / V$ R8 G2 h+ c& d8 D! l
SetWindowExtEx 设置指定设备场景窗口范围
3 O" B7 S0 ~1 C. n) o5 m1 MSetWindowOrgEx 设置指定设备场景窗口起点
0 V6 E+ @/ n% G0 kSetWindowRgn 设置窗口区域
7 A2 p) z7 }1 [8 hSetWorldTransform 设置世界转换
% _% l" p, p% H" g: N! T. s8 c5 IValidateRgn 激活窗口中指定区域,把它从刷新区移走
. q5 Q( J! j4 m, y7 J% \6 ^WindowFromDC 取回与某一设备场景相关的窗口的句柄
* i" K+ W/ x9 d, W, [5 G5 G& {10. API之硬件与系统函数
8 @ a+ [; o/ z$ t" l. q+ J4 YActivateKeyboardLayout 激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义
. E" r4 {7 {$ Y+ i6 LBeep 用于生成简单的声音 2 F1 y6 f' ^! l' e5 } K# N/ Z9 ~5 z
CharToOem 将一个字串从ANSI字符集转换到OEM字符集
! Z- i; G( N: }" v3 WClipCursor 将指针限制到指定区域
' Z. w' f4 q; A0 ]) F) JConvertDefaultLocale 将一个特殊的地方标识符转换成真实的地方ID
5 O# M8 d* E' _* l* y4 oCreateCaret 根据指定的信息创建一个插入符(光标),并将它选定为指定窗口的默认插入符 8 p1 j, E, U& j! V* u
DestroyCaret 清除(破坏)一个插入符 : A9 M7 } A9 G) O4 u! l
EnumCalendarInfo 枚举在指定"地方"环境中可用的日历信息
6 A. L+ |4 Y& ^) `EnumDateFormats 列举指定的"当地"设置中可用的长、短日期格式 ! O& l) `, U8 L3 A
EnumSystemCodePages 枚举系统中已安装或支持的代码页 , R( n" B# j; j5 Y, r# S% J
EnumSystemLocales 枚举系统已经安装或提供支持的"地方"设置 % S* e( e1 u7 k
EnumTimeFormats 枚举一个指定的地方适用的时间格式 * R5 G$ v, \: I1 ]0 d* ^$ |& H
ExitWindowsEx 退出windows,并用特定的选项重新启动
( a: ]- r( G+ [; l WINUSERAPI BOOL WINAPI ExitWindowsEx(
# U' a' C4 t: s! XUINT uFlags, //EWX_LOGOFF|EWX_REBOOT|EWX_FORCE|EWX_POWEROFF|EWX_FORCEIFHUNG
' q# A- ]7 W% L; n- w4 W7 z1 H) F DWORD dwReserved); //06 U' F! X w- r: N7 J1 ~
ExpandEnvironmentStrings 扩充环境字串
) }- F- w0 Q2 M' p& ?FreeEnvironmentStrings 翻译指定的环境字串块
& g; J F/ l3 z. c9 a4 o3 rGetACP 判断目前正在生效的ANSI代码页
3 n$ @8 U$ {# h+ w" o: ]" r6 rGetAsyncKeyState 判断函数调用时指定虚拟键的状态 , Y G3 G) t* m/ h0 H
GetCaretBlinkTime 判断插入符光标的闪烁频率
; l4 K6 s. v4 s3 k3 F* d6 e/ O" QGetCaretPos 判断插入符的当前位置
5 C4 Y( j9 c/ M2 F( wGetClipCursor 取得一个矩形,用于描述目前为鼠标指针规定的剪切区域 7 r* Q# H9 `( v6 P( A K
GetCommandLine 获得指向当前命令行缓冲区的一个指针
0 y8 t" @$ y6 tGetComputerName 取得这台计算机的名称
0 y1 t# }2 w# I3 QGetCPInfo 取得与指定代码页有关的信息 2 Z2 X4 E9 b- ?
GetCurrencyFormat 针对指定的"地方"设置,根据货币格式格式化一个数字 / q. v4 @& k. @* Y0 \* Y D
GetCursor 获取目前选择的鼠标指针的句柄 5 t, y1 ]$ ?- V- A5 r4 U
GetCursorPos 获取鼠标指针的当前位置
1 U6 |7 E5 A9 O7 NGetDateFormat 针对指定的"当地"格式,对一个系统日期进行格式化
" [) d) G' K" _5 a) hGetDoubleClickTime 判断连续两次鼠标单击之间会被处理成双击事件的间隔时间 ; h4 O1 ]) R, G$ x* y8 p
GetEnvironmentStrings 为包含了当前环境字串设置的一个内存块分配和返回一个句柄 - L! ^: M5 L/ z7 ~/ {; _$ F
GetEnvironmentVariable 取得一个环境变量的值
2 r; c( G4 O x! e6 _# WGetInputState 判断是否存在任何待决(等待处理)的鼠标或键盘事件
" o( s; s) P2 {& V% h2 t$ {9 LGetKBCodePage 由GetOEMCP取代,两者功能完全相同
& `4 a6 ?' Q, K1 V0 o5 j4 L' ZGetKeyboardLayout 取得一个句柄,描述指定应用程序的键盘布局
7 u# `$ e8 P/ ]* ~GetKeyboardLayoutList 获得系统适用的所有键盘布局的一个列表
3 e; P* W' Q: VGetKeyboardLayoutName 取得当前活动键盘布局的名称
[! K$ ~( h6 g/ V% {/ O4 F+ eGetKeyboardState 取得键盘上每个虚拟键当前的状态 # ~" |+ ?) g- B) j
GetKeyboardType 了解与正在使用的键盘有关的信息 8 G- o g; I3 A, U
GetKeyNameText 在给出扫描码的前提下,判断键名 6 S9 K' q% Y2 d, X
GetKeyState 针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态 ) ^! s" x+ n$ H% N! ?3 O
GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息 " K' |; H' e) }! D
GetLocaleInfo 取得与指定"地方"有关的信息
( P/ ~- j+ c- f9 jGetLocalTime 取得本地日期和时间
# R4 [0 M) S6 ]8 |GetNumberFormat 针对指定的"地方",按特定的格式格式化一个数字 4 ]. l" w2 j; Z. w9 ]5 s4 S
GetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页
1 X! P) p# t9 n+ Z7 ZGetQueueStatus 判断应用程序消息队列中待决(等待处理)的消息类型 3 N* |& l) J, }: S3 f- M& I
GetSysColor 判断指定windows显示对象的颜色 * L [& X1 j; c
GetSystemDefaultLangID 取得系统的默认语言ID
/ s5 U4 H! N4 [ z* F& m. UGetSystemDefaultLCID 取得当前的默认系统"地方"
" W) U8 ~% C5 c8 L1 ]8 ~GetSystemInfo 取得与底层硬件平台有关的信息
A* s+ P) m( G1 V% mGetSystemMetrics 返回与windows环境有关的信息
6 [6 i! j* v9 Y- t6 u, SGetSystemPowerStatus 获得与当前系统电源状态有关的信息 . e4 Z9 M; U3 D+ H* d g
GetSystemTime 取得当前系统时间,这个时间采用的是"协同世界时间"(即UTC,也叫做GMT)格式 9 Z7 }- x* Q% i* A' R
GetSystemTimeAdjustment 使内部系统时钟与一个外部的时钟信号源同步 ! Z* G# G" V" v5 D5 u8 R& H. Q; o
GetThreadLocale 取得当前线程的地方ID ; k: F7 Z y- q1 K2 Q, Q
GetTickCount 用于获取自windows启动以来经历的时间长度(毫秒)
. S0 H, Q2 A9 f; G9 g5 @GetTimeFormat 针对当前指定的"地方",按特定的格式格式化一个系统时间
2 K+ x; z( _* A. yGetTimeZoneInformation 取得与系统时区设置有关的信息
0 ^' I+ e, s# q2 N' k' f7 uGetUserDefaultLangID 为当前用户取得默认语言ID
% b# q7 I+ k" Q* }GetUserDefaultLCID 取得当前用户的默认"地方"设置 . h6 P9 r F% h% U# r9 C/ w4 m
GetUserName 取得当前用户的名字
& N1 k: G( b+ [* m$ m: r% s* GGetVersion 判断当前运行的Windows和DOS版本
+ |3 R! j7 Y6 P2 A2 _8 NGetVersionEx 取得与平台和操作系统有关的版本信息
8 \" W, r q5 b. LHideCaret 在指定的窗口隐藏插入符(光标)
) |" f& o; h* f. B: f. {+ AIsValidCodePage 判断一个代码页是否有效
' B' K( ~% N* K. bIsValidLocale 判断地方标识符是否有效
: A* o1 B. k8 S2 fkeybd_event 这个函数模拟了键盘行动
* a* h* q6 z4 n. g wLoadKeyboardLayout 载入一个键盘布局 " M- E5 F* O+ n& S
MapVirtualKey 根据指定的映射类型,执行不同的扫描码和字符转换 5 y: L/ r( y6 [* N( H' }" R
MapVirtualKeyEx 根据指定的映射类型,执行不同的扫描码和字符转换
1 s! x; W! [ F. v2 X4 sMessageBeep 播放一个系统声音。系统声音的分配方案是在控制面板里决定的
3 c, W9 A; u) ^4 v" K6 k) omouse_event 模拟一次鼠标事件 * E$ q% {$ ~+ z C
OemKeyScan 判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态 ) P6 |8 |0 m0 J8 A! Z! Z6 U2 U
OemToChar 将OEM字符集的一个字串转换到ANSI字符集
, U; o6 {' R& _1 g% P% HSetCaretBlinkTime 指定插入符(光标)的闪烁频率
$ _0 D& k L4 Q! @5 r' hSetCaretPos 指定插入符的位置
6 M+ h% Q, U- S" D4 i, @0 ]7 ^9 NSetComputerName 设置新的计算机名
5 C& T5 A) j! |, ~+ |SetCursor 将指定的鼠标指针设为当前指针
$ a! }; D) E9 y! T2 u$ H' K9 C5 x9 ]SetCursorPos 设置指针的位置 % q- Q; Y% V! O
SetDoubleClickTime 设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间
+ Z9 \1 Y& E" P/ O* E: o* fSetEnvironmentVariable 将一个环境变量设为指定的值
' r# R4 z1 t4 c- xSetKeyboardState 设置每个虚拟键当前在键盘上的状态 , _' m) P% a5 |% X) y
SetLocaleInfo 改变用户"地方"设置信息
, m# Q- G5 B; \* Y lSetLocalTime 设置当前地方时间 5 E- ?- [8 t! _) p2 J) z X3 I1 `( F4 J& o
SetSysColors 设置指定窗口显示对象的颜色
& t: _( y$ z+ Y" H! WSetSystemCursor 改变任何一个标准系统指针
+ x: u0 H0 ^/ o5 J' jSetSystemTime 设置当前系统时间 & b# a F: c1 q7 j. H
SetSystemTimeAdjustment 定时添加一个校准值使内部系统时钟与一个外部的时钟信号源同步 $ l) F% M6 _/ F- E8 l+ m1 @
SetThreadLocale 为当前线程设置地方 ) U# P1 o* R. z0 z1 k( J
SetTimeZoneInformation 设置系统时区信息 * h0 o* a& j% i' X c: ~
ShowCaret 在指定的窗口里显示插入符(光标) 0 {4 f' C# g0 o( o7 v
ShowCursor 控制鼠标指针的可视性
5 l# M; T+ `/ o1 C' k8 ~; Z% BSwapMouseButton 决定是否互换鼠标左右键的功能 ( Y8 j3 v# V$ r/ |7 H
SystemParametersInfo 获取和设置数量众多的windows系统参数
5 S( f# t, ? y; ESystemTimeToTzSpecificLocalTime 将系统时间转换成地方时间 % G8 T- z: d9 }) Z) {* q& [2 ^
ToAscii 根据当前的扫描码和键盘信息,将一个虚拟键转换成ASCII字符
( f2 ~3 _4 v, n8 I. X# \% cToUnicode 根据当前的扫描码和键盘信息,将一个虚拟键转换成Unicode字符 ' a: L ^! a* l M. ]6 b) A8 H
UnloadKeyboardLayout 卸载指定的键盘布局
5 w- D0 `4 j) H/ ?9 k7 `- v7 J' SVkKeyScan 针对Windows字符集中一个ASCII字符,判断虚拟键码和Shift键的状态
4 |3 R( T9 r' b+ a a+ i11. API之进程和线程函数 ; q3 q5 o6 m" W1 x6 m0 x1 D% w( c
CancelWaitableTimer 这个函数用于取消一个可以等待下去的计时器操作 6 Q# H6 c' G3 c# S/ c( G) m m
CallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用
% M9 C) v6 W3 |4 A$ P% [& q4 }ConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个命名管道连接
" ]* W" _2 H& K1 ?/ g! d8 jCreateEvent 创建一个事件对象 . \/ S; l6 D Q6 X- \
CreateMailslot 创建一个邮路。返回的句柄由邮路服务器使用(收件人) 9 S- I) o+ |7 j) H) X# f2 S+ t! x
CreateMutex 创建一个互斥体(MUTEX) ' t: Q3 ]: Y0 k4 \6 ]1 C3 Q
CreateNamedPipe 创建一个命名管道。返回的句柄由管道的服务器端使用
! d& Y# t$ ^ F3 W0 ACreatePipe 创建一个匿名管道 # d! w- d% `/ z
CreateProcess 创建一个新进程(比如执行一个程序)
, G2 o2 h0 H% _9 TCreateSemaphore 创建一个新的信号机
- a# p, W% j3 d+ H( E) E* ?CreateWaitableTimer 创建一个可等待的计时器对象
I1 o2 R0 k4 c& W- RDisconnectNamedPipe 断开一个客户与一个命名管道的连接 - U& |. A( O8 P, \. W. A' z
DuplicateHandle 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄
$ F* G7 x1 ] E% t) vExitProcess 中止一个进程
- h. q: H8 |0 [/ s; e: `! ~FindCloseChangeNotification 关闭一个改动通知对象
/ l. v; d" X; |: u5 yFindExecutable 查找与一个指定文件关联在一起的程序的文件名 - N2 l7 H& W) D: a4 y9 t0 c Q7 Y
FindFirstChangeNotification 创建一个文件通知对象。该对象用于监视文件系统发生的变化
. W: H& F% Q$ yFindNextChangeNotification 重设一个文件改变通知对象,令其继续监视下一次变化 - u8 P6 _% M7 ]. _* Y5 x
FreeLibrary 释放指定的动态链接库 7 L" Q5 {7 m, }7 }4 B8 I
GetCurrentProcess 获取当前进程的一个伪句柄
! w% a/ R8 y1 K( M2 a" I" iGetCurrentProcessId 获取当前进程一个唯一的标识符
: m y1 K k6 X7 U8 o6 y' WGetCurrentThread 获取当前线程的一个伪句柄 9 x! |, n" R" G2 X
GetCurrentThreadId 获取当前线程一个唯一的线程标识符 0 Q7 a7 g) N/ E; b0 w
GetExitCodeProces 获取一个已中断进程的退出代码
% j' e& Q* I$ k! J, _GetExitCodeThread 获取一个已中止线程的退出代码
8 ~, T7 U* H$ c, l0 MGetHandleInformation 获取与一个系统对象句柄有关的信息 0 m1 }- @: {& j1 l+ |2 S
GetMailslotInfo 获取与一个邮路有关的信息
. l( I7 m/ q+ g; }6 ~4 ~9 L# o( }GetModuleFileName 获取一个已装载模板的完整路径名称
" D8 x ^" c% r5 m# I- x! ?. MGetModuleHandle 获取一个应用程序或动态链接库的模块句柄 : A6 j4 q0 i' ~2 i: q# M, |
GetModuleHandleA(LPCSTR lpModuleName);/ d# [7 |6 S: b' Y
GetPriorityClass 获取特定进程的优先级别 2 b, T# u4 {+ u/ K9 m. @
GetProcessShutdownParameters 调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况 ! x! p0 T$ d" P& {
GetProcessTimes 获取与一个进程的经过时间有关的信息 + W, d- J4 E, \# O
GetProcessWorkingSetSize 了解一个应用程序在运行过程中实际向它交付了多大容量的内存
0 D4 K0 ]/ J# C, \9 N2 m! U8 J# zGetSartupInfo 获取一个进程的启动信息 2 ^5 D! A6 T% ^: n
GetThreadPriority 获取特定线程的优先级别
# ]+ }) w+ ]' F0 }. e6 {GetTheardTimes 获取与一个线程的经过时间有关的信息
- v9 }1 O x! ^8 x% tGetWindowThreadProcessId 获取与指定窗口关联在一起的一个进程和线程标识符
3 D0 t! @7 \0 A2 CLoadLibrary 载入指定的动态链接库,并将它映射到当前进程使用的地址空间
- ~ w/ n9 o' Z% g( [ ?# FLoadLibraryEx 装载指定的动态链接库,并为当前进程把它映射到地址空间 9 Q- N8 }# i+ _; ]/ f0 n
LoadModule 载入一个Windows应用程序,并在指定的环境中运行 - X" P* r) N/ ~. m
MsgWaitForMultipleObjects 等侯单个对象或一系列对象发出信号。如返回条件已经满足,则立即返回 7 u. i: S1 T% ?; n4 p0 v/ Q+ z4 l
SetPriorityClass 设置一个进程的优先级别
0 f& T2 Q7 K! QSetProcessShutdownParameters 在系统关闭期间,为指定进程设置他相对于其它程序的关闭顺序
\4 r1 h" o8 B; a. |- ^. ]SetProcessWorkingSetSize 设置操作系统实际划分给进程使用的内存容量 $ H8 F' l( E ]7 q
SetThreadPriority 设定线程的优先级别 ! ?" s1 N$ y7 T7 l0 q# G4 @
ShellExecute 查找与指定文件关联在一起的程序的文件名
7 C. a& u- r% T1 \: uTerminateProcess 结束一个进程
% T t L( [5 ]1 l- i- c' ]: S% ]) ^2 NWinExec 运行指定的程序 9 G" G+ w7 O9 w1 h
12. API之控件与消息函数 & x* m; ]1 H& r! d4 F) E: n
AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 % a4 d' p" r' s4 u0 z$ b
AnyPopup 判断屏幕上是否存在任何弹出式窗口
5 I- N* a' w( yArrangeIconicWindows 排列一个父窗口的最小化子窗口 6 p/ @7 j9 J; t
AttachThreadInput 连接线程输入函数 0 a! c2 U# i1 @7 n$ i% W
BeginDeferWindowPos 启动构建一系列新窗口位置的过程
. X8 g+ }8 X: YBringWindowToTop 将指定的窗口带至窗口列表顶部 3 Y E7 j/ x5 f0 r! |
CascadeWindows 以层叠方式排列窗口 0 e+ V0 V: J3 U2 u5 ~! y8 S
ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄
3 k/ X2 p0 I2 Y3 [" zClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标 m1 S' \! c* ?) R) |1 r/ c
CloseWindow 最小化指定的窗口 7 e8 I# X; k, P+ j8 Q0 y) E
CopyRect 矩形内容复制 / x4 `& B: `7 ^8 W! f# e& O, I
DeferWindowPos 该函数为特定的窗口指定一个新窗口位置 1 i1 c! w- T% H
DestroyWindow 清除指定的窗口以及它的所有子窗口 ( K$ |1 h: j) |. g/ @
DrawAnimatedRects 描绘一系列动态矩形
* k0 D. D% g) q, [7 r5 {; `EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入
8 c% O/ X8 I" P5 W/ u0 dEndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态
% o6 B! o# `3 Z0 aEnumChildWindows 为指定的父窗口枚举子窗口
8 Z- Q4 N, \& c6 \5 Q* t( r7 aEnumThreadWindows 枚举与指定任务相关的窗口 ' j# U# ]: P2 Y7 W
EnumWindows 枚举窗口列表中的所有父窗口 ) } ^/ W. Y: `( l- b1 W4 Z( r0 _
EqualRect 判断两个矩形结构是否相同
, B1 ~- j. H) zFindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口 / |& }, b3 u2 [3 V
FindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口
5 p. C- f @; ^. G+ qFlashWindow 闪烁显示指定窗口
$ C& E3 F% e" O" B8 [GetActiveWindow 获得活动窗口的句柄 7 F* W* l; c6 b: {- b5 l5 G
GetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收) 9 K) `7 q% I) k9 ]" L7 X
GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息
6 U/ z, Y. R7 D4 [& x# U7 [& [GetClassLong 取得窗口类的一个Long变量条目
) c6 n2 V, i$ k' mGetClassName 为指定的窗口取得类名 0 {4 W9 A9 Z5 ~* ^/ p4 J$ L9 y' T
GetClassWord 为窗口类取得一个整数变量 . k3 t- t! j8 ?3 ~; L
GetClientRect 返回指定窗口客户区矩形的大小 $ h S k _; `2 e) B
GetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄 ' c! y1 E2 z+ I: z/ P
GetFocus 获得拥有输入焦点的窗口的句柄 6 t/ Z7 J* |0 |* H5 f5 X
GetForegroundWindow 获得前台窗口的句柄 6 g/ N) S$ _/ b: C1 h6 s
GetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄
6 W4 E: { E$ P" ~8 W0 H: Y& r- ZGetParent 判断指定窗口的父窗口
1 S- f+ y9 F* i0 NGetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄 6 M. p0 k7 z c1 Z
GetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分 # [3 ?9 H- g7 ]2 G x B
GetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系
) P$ p/ p/ b3 u3 mGetWindowContextHelpId 取得与窗口关联在一起的帮助场景ID
0 j2 c( h( P# d- xGetWindowLong 从指定窗口的结构中取得信息
/ k3 i. e$ W9 bGetWindowPlacement 获得指定窗口的状态及位置信息 1 b3 B8 o3 Z3 A# x: p. D
GetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内 6 l P1 k% Z8 F1 c' c; [! j& g
GetWindowText 取得一个窗体的标题(caption)文字,或者一个控件的内容 9 Z6 u) z3 O: z8 I% L, F9 V! u* M+ d
GetWindowTextLength 调查窗口标题文字或控件内容的长短 2 G# N. b v9 P5 r/ `6 U9 V+ ~
GetWindowWord 获得指定窗口结构的信息 % A* a0 z( q8 ]* I" J
InflateRect 增大或减小一个矩形的大小 / ]/ d5 J8 `5 f! d) y' D
IntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集
3 y, Q8 u; v: W# b3 ]InvalidateRect 屏蔽一个窗口客户区的全部或部分区域 ; ?! @+ _/ D; G# u2 T
IsChild 判断一个窗口是否为另一窗口的子或隶属窗口 2 X t% a, {/ h* R& R8 r8 \
IsIconic 判断窗口是否已最小化
; J5 [# D: H& z; h! T, V+ Q' CIsRectEmpty 判断一个矩形是否为空 1 ^5 D: l: D1 C o$ F& R1 e5 x
IsWindow 判断一个窗口句柄是否有效
! |% N. P, j. O1 g+ IIsWindowEnabled 判断窗口是否处于活动状态
; R: t; f! L4 ` G& j* O% J5 GIsWindowUnicode 判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字 - A! r; R" B' g- W6 L: I6 ?
IsWindowVisible 判断窗口是否可见 ) i% Q- K- d5 L- H0 e: o
IsZoomed 判断窗口是否最大化
* H I. H4 ?" g$ ZLockWindowUpdate 锁定指定窗口,禁止它更新 ; J$ K% T0 U) |; R$ u6 P. e9 A5 g
MapWindowPoints 将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统 + f+ a! Q8 H5 [* C( v
MoveWindow 改变指定窗口的位置和大小 # U0 v# w& ]) g) i$ |# y0 c$ U( ^
OffsetRect 通过应用一个指定的偏移,从而让矩形移动起来 * N* ?* I$ Q$ C1 {
OpenIcon 恢复一个最小化的程序,并将其激活
; M4 S9 M/ n l( kPtInRect 判断指定的点是否位于矩形内部 - K( P- O& v }0 B0 a
RedrawWindow 重画全部或部分窗口
) O( S9 N$ W2 j% X/ k n/ U' z- eReleaseCapture 为当前的应用程序释放鼠标捕获 % R. M) q( E- m) L
ScreenToClient 判断屏幕上一个指定点的客户区坐标
4 s' [9 d! m! a5 u9 SScrollWindow 滚动窗口客户区的全部或一部分
. ], R) _! R9 A: Y* s: L) s$ NScrollWindowEx 根据附加的选项,滚动窗口客户区的全部或部分 + O7 s9 Z7 L% F( U! ]
SetActiveWindow 激活指定的窗口
- T: F) E4 n/ @+ y FSetCapture 将鼠标捕获设置到指定的窗口
6 a2 N: q! Q1 s" ^6 V4 mSetClassLong 为窗口类设置一个Long变量条目 - S" \* \6 b. d; O
SetClassWord 为窗口类设置一个条目 $ v# Z) ^. K" }
SetFocusAPI 将输入焦点设到指定的窗口。如有必要,会激活窗口 4 ~9 n9 A- |+ v; ]+ J# p
SetForegroundWindow 将窗口设为系统的前台窗口
% n6 E a7 m) T' c5 {1 f, C2 j" pSetParent 指定一个窗口的新父 4 S: N/ T, p" O0 I6 o7 T
SetRect 设置指定矩形的内容 $ N5 Z4 Y: h& F; A. Z
SetRectEmpty 将矩形设为一个空矩形 ) h2 Y6 j( X2 _3 i7 F- t
SetWindowContextHelpId 为指定的窗口设置帮助场景(上下文)ID + S! U/ [2 n3 ?9 B6 b
SetWindowLong 在窗口结构中为指定的窗口设置信息
# p. Z5 g( e( S! ^SetWindowPlacement 设置窗口状态和位置信息
o3 k/ f' M+ ?7 y: oSetWindowPos 为窗口指定一个新位置和状态 2 ?. f: l* Z# q# m0 m4 x. J
SetWindowText 设置窗口的标题文字或控件的内容 5 S9 s) `8 p; x h7 Z
SetWindowWord 在窗口结构中为指定的窗口设置信息
$ A- B3 w! V8 G: h6 XShowOwnedPopups 显示或隐藏由指定窗口所有的全部弹出式窗口
: J( M, R' j, h n2 A0 W4 @ShowWindow 控制窗口的可见性 $ i' _0 ^% u% L- ]; ?- K
ShowWindowAsync 与ShowWindow相似
$ I2 E) D# d8 { bSubtractRect 装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果
, \1 T1 o. d* I DTileWindows 以平铺顺序排列窗口 3 s* k. u ]2 b) _2 m: p/ T# [8 ]
UnionRect 装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect联合起来的结果
0 A0 | {# _9 O! y* W4 s8 ?: mUpdateWindow 强制立即更新窗口
: G9 n1 d S# [, k( I( |+ cValidateRect 校验窗口的全部或部分客户区
; R5 _4 _" V: b; u/ _) U# kWindowFromPoint 返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口
- |. H2 |. S( N5 z6 e8 L高级音频函数—参看《VC++ 编程指南.chm》11.6' U7 w1 W) h3 v |
Windows提供了三个特殊的播放声音的高级音频函数:MessageBeep、PlaySound和sndPlaySound。这三个函数可以满足播放波形声音的一般需要,但它们播放的WAVE文件(波形声音文件)的大小不能超过100KB,如果要播放较大的WAVE文件,则应该使用MCI服务。
! q: d' D- Q4 j1 e% @9 d0 D BOOL MessageBeep(UINT uType);
+ v1 D3 }! |7 X该函数主要用来播放系统报警声音。系统报警声音是由用户在控制面板中的声音(Sounds)程序中定义的,或者在WIN.INI的[sounds]段中指定。
' E' X; P3 ^; p1 v0 v$ |2 f参数uType说明了告警级,如下表所示。若成功则函数返回TRUE。
8 v" ]5 [5 B- f8 C/ J级别
' W0 t/ \9 e" W | 描述
8 K2 Q' ] s, [ | -1
# m; e& m H0 j" q- F | 从机器的扬声器中发出蜂鸣声。
$ e5 g+ I2 V" m7 l4 O7 O0 p+ `% x: ? | MB_ICONASTERISK & B, B# D g9 k" s" H
| 播放由SystemAsterisk定义的声音。
1 C' R9 B% l p/ z! u* ] | MB_ICONEXCLAMATION 0 t# ~2 J. W& O
| 播放由SystemExclamation定义的声音。 : _& o# i2 c8 g* r' h: V& ^* b7 D
| MB_ICONHAND
/ _) Q+ U8 s, s/ l, m5 E/ D0 t | 播放由SystemHand定义的声音。
* V# M- Y8 y6 T0 `9 E | MB_ICONQUESTION ' w& N0 Y. p' T) i4 e
| 播放由SystemQuestion定义的声音。 6 ^4 w" Q: E7 o8 _ H4 a1 J
| MB_OK
: V) J4 P7 f0 w; N8 J! V7 x | 播放由SystemDefault定义的声音 - K' \5 ?" j" c+ V! k; C. F
| BOOL PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);$ g( K5 V* A- z# t
参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。3 M8 ?0 r' H$ |) r
参数hmod是应用程序的实例句柄,当播放WAV资源时要用到该参数,否则它必须为NULL。
& b& ^. {# X, p8 [+ T参数fdwSound是标志的组合,如下表所示。若成功则函数返回TRUE,否则返回FALSE。2 {, m/ J! p* f
标志 $ V0 d: X) m! @! l2 n1 x
| 含义 $ L$ R/ |( o* B
| SND_APPLICATION
, [& ~' y8 X6 p1 F | 用应用程序指定的关联来播放声音。 ) Q8 [5 g% p! I8 H. ?# l
| SND_ALIAS
& |5 W" J# u$ u/ X- o5 W | pszSound参数指定了注册表或WIN.INI中的系统事件的别名。 ( B8 G" Y8 `* ^& ?5 \4 @3 Y
| SND_ALIAS_ID
. z, h' b6 ? H% Y: ] | pszSound参数指定了预定义的声音标识符。 ( }6 F/ g3 I( }+ }: c: q! d
| SND_ASYNC
8 c4 Z. M; Q8 N | 用异步方式播放声音,PlaySound函数在开始播放后立即返回。
7 w. v$ |) @7 h9 s- I0 z | SND_FILENAME * O: l e2 ]; T$ r+ V; r4 D7 i
| pszSound参数指定了WAVE文件名。 - L p% w/ s6 P$ s* t, b* A, C
| SND_LOOP
; F4 f$ d9 p- f ?+ H | 重复播放声音,必须与SND_ASYNC标志一块使用。 1 v2 h% c+ ^- e/ w
| SND_MEMORY " T4 B' P: \$ N6 W/ j! Z
| 播放载入到内存中的声音,此时pszSound是指向声音数据的指针。 8 {0 x' T; C6 x, G! i' d0 h
| SND_NODEFAULT # r+ S8 H' S( o) p, f: @
| 不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。 + n, A1 M/ V: ?. N8 p% e
| SND_NOSTOP : L1 B3 [/ U2 A" R
| PlaySound不打断原来的声音播出并立即返回FALSE。
- O$ R7 y: A1 g | SND_NOWAIT
2 X! S7 S9 F7 H$ o! g | 如果驱动程序正忙则函数就不播放声音并立即返回。 / E' K6 i' d) X( [% f- S' z# X
| SND_PURGE 8 _. F: i. x0 A
| 停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。
# D8 d S+ v* t& w7 d( i5 S | SND_RESOURCE " \3 ~( `- j3 w2 R8 [
| pszSound参数是WAVE资源的标识符,这时要用到hmod参数。 # K& K7 {/ H9 ^, H8 |
| SND_SYNC 0 O8 q/ Y9 Z5 N& D; _& E/ k6 z
| 同步播放声音,在播放完后PlaySound函数才返回。
4 @( r* x" U5 [/ y, W& e | BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound);! C* B7 C' S% ]+ j$ |1 j
函数sndPlaySound的功能与PlaySound类似,但少了一个参数。除了不能指定资源名字外,参数lpszSound与PlaySound的是一样的。
) ^7 v( n# B& ?1 PMCI播放( J1 N' M4 r( f g! n: z: X/ A
所有的MCI命令字符串都是通过多媒体API函数mciSendString传递给MCI的,该函数的声明为:( b& y$ n; H L9 Q1 l0 q9 J
MCIERROR mciSendString(
Z5 h! I- s3 x/ P9 o8 VLPCTSTR lpszCommand, //MCI命令字符串
9 U6 E( r6 F U5 @5 ?' J3 Z2 [ ILPTSTR lpszReturnString, //存放反馈信息的缓冲区
6 }2 a5 x% e) h' K9 zUINT cchReturn, //缓冲区的长度
( @- u, J+ {' iHANDLE hwndCallback //回调窗口的句柄,一般为NULL
8 Q/ l6 q9 j: D3 o); //若成功则返回0,否则返回错误码。. V" v( `6 t) E1 N3 c
该函数返回的错误码可以用mciGetErrorString函数进行分析,该函数的声明为:/ G) I* `# b# R. o4 b9 Y& B' q9 K% F
BOOL mciGetErrorString(% k/ e/ K6 X" m N
DWORD fdwError, //函数mciSendString或mciSendCommand返回的错误码
! W8 w" @7 f) Z. m9 RLPTSTR lpszErrorText, //接收描述错误的字符串的缓冲区
5 c. i3 W ]& w# h7 n" `* I) vUINT cchErrorText //缓冲区的长度& I6 x/ H& H, r% m
);. h: c( \# v1 q; R
|
|