|
原文:http://www.cnblogs.com/cltsq/articles/api.html; C0 R7 B) Q7 s7 u8 b& Z& @
1. API之网络函数 ^. t3 O. l9 D/ I: N+ P0 g' {4 q; {
WNetAddConnection 创建同一个网络资源的永久性连接 5 V0 [5 G) A4 v' \
WNetAddConnection2 创建同一个网络资源的连接
& K! }( |5 |2 A7 j" `( {( n2 f, V, aWNetAddConnection3 创建同一个网络资源的连接
1 P, e' \# v7 K5 N$ SWNetCancelConnection 结束一个网络连接 a k' U& J6 c, T6 Q8 n8 T( }* _
WNetCancelConnection2 结束一个网络连接 1 H4 \9 C- B; J. f- k7 Z9 ]
WNetCloseEnum 结束一次枚举操作
& t& A8 O. }4 L: S- g7 |. wWNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接
# w3 S; ~& _, z, N, dWNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接
5 N- M* d- t8 @+ u' dWNetEnumResource 枚举网络资源 8 C9 U' U; [8 ^' m2 |) m S
WNetGetConnection 获取本地或已连接的一个资源的网络名称 # {: q3 @* K1 U# I# N$ M, g
WNetGetLastError 获取网络错误的扩展错误信息
% Q) q4 M( M& }% vWNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称 " g+ y$ o8 V/ S% B$ }8 O
WNetGetUser 获取一个网络资源用以连接的名字 7 Q* O: d( n3 f8 g' o3 {9 v
WNetOpenEnum 启动对网络资源进行枚举的过程 " D; T) e( f: Y! A: w
2. API之消息函数 5 ?# u4 c# b" {, M# k
BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口 $ \' F$ x+ {# r+ B P; n: V" I
GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 & F! C0 _+ J! B- D* x
GetMessageTime 取得消息队列中上一条消息处理完毕时的时间
5 W# U) E T' y2 m$ l9 uPostMessage 将一条消息投递到指定窗口的消息队列 - K4 u1 X3 c9 k; l1 g( [ @
PostThreadMessage 将一条消息投递给应用程序 0 z0 a( v) W4 P1 l4 C7 Q
RegisterWindowMessage 获取分配给一个字串标识符的消息编号 5 H$ @% {6 I$ E1 t, X
ReplyMessage 答复一个消息 - n4 r" A/ n( o2 E/ p
SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口
# [' U; Q; K. B3 L+ _SendMessageCallback 将一条消息发给窗口
- @. p, }1 ~$ |' wSendMessageTimeout 向窗口发送一条消息
/ K* a: M& N$ ~' d+ h2 sSendNotifyMessage 向窗口发送一条消息
1 b: P) _$ U( d1 l, V+ N3. API之文件处理函数
0 {8 M' z1 `8 s* ]4 X6 o+ l( W+ ]* v# wCloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 % n! i8 u( a9 z4 z
CompareFileTime 对比两个文件的时间
9 k9 ^& ?. N/ hCopyFile 复制文件
3 R' n; o( r2 o; e0 V8 U% G& gCreateDirectory 创建一个新目录
- r9 ~5 C% [" O6 UCreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台
, X, \" Y& e/ z( pCreateFileMapping 创建一个新的文件映射对象 0 t+ I7 R" C0 W& W, |" U% z
DeleteFile 删除指定文件 $ S1 |; _' M% f; P9 B, w% g- J
DeviceIoControl 对设备执行指定的操作 & d, X: |: K" Z' a5 n
DosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值
! K! N- L, H$ G! H1 G, u: `FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值 : w, k' _7 U M) T
FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间
$ h- _' q* G, @* E# MFileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构
6 h* I0 j$ x; M0 R- L! XFindClose 关闭由FindFirstFile函数创建的一个搜索句柄
# ~4 ~( i* p" u$ t s7 \& k6 cFindFirstFile 根据文件名查找文件 . Q4 I- X, W! Z: t* a, q: a
FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件
, G% m4 b/ b. D: A7 f9 P1 mFlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区
/ J. B. J1 E0 S+ W; {FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘 9 e" t) I* m. Q0 c6 Z
GetBinaryType 判断文件是否可以执行 & y( @: f t$ m6 n/ `$ A8 S/ Y3 ~
GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数 : x9 _; T. [ k1 M* `# R
GetCurrentDirectory 在一个缓冲区中装载当前目录
( [# A& _9 k3 H8 i4 cDWORD GetCurrentDirectory(" l! c( n& k; M! n u
DWORD nBufferLength, //缓冲区大小! n, F- V, M3 H
LPSTR lpBuffer //缓冲区的首地址
+ ]% i9 c2 `% q7 c+ q) n2 n );* b' K7 a; b+ Y" X
GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量 ' Q& z0 E+ z. p$ U( j
GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息
, K3 Y/ ^2 p& _ @GetDriveType 判断一个磁盘驱动器的类型 . E2 u% v) J# i
GetExpandedName 取得一个压缩文件的全名 % Y6 |6 ~, x/ W7 v- T3 O
GetFileAttributes 判断指定文件的属性
; ^ f, z: I w+ OGetFileInformationByHandle 这个函数提供了获取文件信息的一种机制
& k2 i8 P# U, i- KGetFileSize 判断文件长度
" C% Z& _# Y. ?GetFileTime 取得指定文件的时间信息 ) E6 P2 F$ v n+ N
GetFileType 在给出文件句柄的前提下,判断文件类型 ) J5 W- S5 ` ?! z0 ~- q: L
GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息
3 h- w" S0 s7 Q# ?6 ~( [8 oGetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区
8 @8 `0 N3 v @GetFullPathName 获取指定文件的完整路径名
& r* f; x; W/ ?: b ]GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母 * Y8 s: O: k7 K4 @9 t5 q
GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径
1 O2 q" \+ T) J# m, ^! l! J6 PGetOverlappedResult 判断一个重叠操作当前的状态 4 C) O5 c% z! b, ^
GetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值 " T+ }: Z. D) {( x: t E6 x
GetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表 8 Y4 `% w1 G& Q$ a- ^" t6 _
GetPrivateProfileString 为初始化文件中指定的条目取得字串 % D" a, e% _4 a5 c7 w5 n
GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值 : S: v4 X: ^! s$ I4 q. M0 X
GetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表 : `: N! j, g3 ]/ X, ~; E% X0 p4 o+ o
GetProfileString 为win.ini初始化文件中指定的条目取得字串 , a2 |6 l8 j4 s+ v4 m
GetShortPathName 获取指定文件的短路径名 5 |" _' O, H/ w) a* t
GetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名 2 M1 h: H0 T+ Z8 Q1 J
GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用 / j* j7 l" b) w+ S. {) G
GetTempPath 获取为临时文件指定的路径 2 O4 R8 G, ~' l( Z3 }8 }+ T
GetVolumeInformation 获取与一个磁盘卷有关的信息
+ H( e& g4 B0 x6 i1 NGetWindowsDirectory 获取Windows目录的完整路径名 % |& y: L: m; S+ J" w" M# c
hread 参考lread G' f4 ?( l* f* d1 j! z
hwrite 参考lwrite函数 ) ]9 F" r6 J9 v' t V9 q( v
lclose 关闭指定的文件 : h! Q, a: Z0 M- A0 [7 y& Z
lcreat 创建一个文件 8 p* \) r) |/ O. H3 f6 J6 j9 h2 F
llseek 设置文件中进行读写的当前位置
3 A7 t6 R9 X- c, KLockFile 锁定文件的某一部分,使其不与其他应用程序共享
! F/ B9 H. d7 Z; p2 X: pLockFileEx 与LockFile相似,只是它提供了更多的功能
) L. U$ u' m$ D1 b% o4 Zlopen 以二进制模式打开指定的文件 ( q' A! R4 Q) G$ }2 d
lread 将文件中的数据读入内存缓冲区
" Z9 P+ ^7 i1 Y3 P3 i! Y9 ilwrite 将数据从内存缓冲区写入一个文件
4 L0 I" ^* Q1 Y* Q, _% u. xLZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件 , i, \' [: [9 Z
LZCopy 复制一个文件
! \" l0 y j! s! D1 P# ?LZInit 这个函数用于初始化内部缓冲区 $ m" ]3 l: f0 Y3 {8 c, G8 ~, n3 G
LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件
0 J2 b5 ^" C8 M6 c; }7 h' mLZRead 将数据从文件读入内存缓冲区
' y4 `" p7 X+ w+ I6 VLZSeek 设置一个文件中进行读写的当前位置
8 j7 [' {1 ~6 D/ Q2 i6 j$ CMapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间
$ W% _7 g8 z" aMoveFile 移动文件 4 Y+ M6 o, F) q o
OpenFile 这个函数能执行大量不同的文件操作
" s" L& ~" f) F% d. _OpenFileMapping 打开一个现成的文件映射对象
' O5 g1 R+ z- c7 E- IQueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况 2 g& I* x; r9 u. A/ }5 X
ReadFile 从文件中读出数据 . o2 P9 ^6 c( l; K# S8 y
ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调 / I2 S; M: A$ J% V
RegCloseKey 关闭系统注册表中的一个项(或键) ( q# f' _* R7 P# G
RegConnectRegistry 访问远程系统的部分注册表 1 b7 W" C! K* l" A$ ]5 A' c
RegCreateKey 在指定的项下创建或打开一个项
- c8 Y2 U8 B6 {1 l9 F) oRegCreateKeyEx 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数
+ E% c: @7 Z! |" P O) {, WRegDeleteKey 删除现有项下方一个指定的子项
6 f6 O. Z+ ^/ _/ W" Z) JRegDeleteValue 删除指定项下方的一个值
4 j5 t2 z, m: A3 F8 J) o3 w- zRegEnumKey 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx
, L/ j+ ~ P# J8 d$ C, }/ e0 T* x* VRegEnumKeyEx 枚举指定项下方的子项 , \2 n4 s* A: _: g' E! Z
RegEnumValue 枚举指定项的值 * t. K3 s/ ?# U
RegFlushKey 将对项和它的子项作出的改动实际写入磁盘 3 w4 P0 ?* R! S* s% S2 J0 m g; ~
RegGetKeySecurity 获取与一个注册表项有关的安全信息 + y6 ~; y' U/ r9 p* h6 f7 F4 J
RegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息
4 x# M, P) U4 f7 M/ W o/ [RegNotifyChangeKeyValue 注册表项或它的任何一个子项发生变化时,用这个函数提供一种通知机制 " V. h; ?2 u) y4 x1 v
RegOpenKey 打开一个现有的注册表项 8 v: ~: k' N2 I: }5 ^( v5 g
RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数 # W2 `6 Z* `' G T0 i* g
RegQueryInfoKey 获取与一个项有关的信息
1 V2 @3 A# @3 M" Z& h' Z- I: uRegQueryValue 取得指定项或子项的默认(未命名)值
5 t) v) u6 Y" N' O9 A% ^RegQueryValueEx 获取一个项的设置值 0 P) B1 j3 D. O0 o0 X" o0 {5 I
RegReplaceKey 用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息 * [1 _2 x# D. Z
RegRestoreKey 从一个磁盘文件恢复注册表信息
; b5 K5 u3 L+ _$ a% s+ u+ | ]( cRegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件
5 S6 s* K* o9 Z9 y4 hRegSetKeySecurity 设置指定项的安全特性 2 [* W( b; S* H$ q
RegSetValue 设置指定项或子项的默认值
. W- h, V& \* E* O: eRegSetValueEx 设置指定项的值 ' x* Y) r. `( t
RegUnLoadKey 卸载指定的项以及它的所有子项 8 n* ~7 K3 U6 d1 x1 h$ @+ e
RemoveDirectory 删除指定目录 / i$ x- I- M0 ^& G& a; P
SearchPath 查找指定文件 4 h7 X5 b7 }4 `' |! `$ S4 M+ H
SetCurrentDirectory 设置当前目录
' y0 p0 h. Q3 l- E zSetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾 # P3 \! n6 a) ~/ i. |3 V6 n
SetFileAttributes 设置文件属性 ! Z5 R! C" \4 |' [) M$ a
SetFilePointer 在一个文件中设置当前的读写位置 % O) \6 ~. i/ L3 ~. m1 n5 T. t; T+ N6 {
SetFileTime 设置文件的创建、访问及上次修改时间
7 \; f8 Z8 _8 G$ d8 t7 K. zSetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果
( ?* H( M5 j7 J& wSetVolumeLabel 设置一个磁盘的卷标(Label)
0 f1 v" T! o0 o: sSystemTimeToFileTime 根据一个FILETIME结构的内容,载入一个SYSTEMTIME结构 ; _9 J8 B/ F( M$ `/ W- a
UnlockFile 解除对一个文件的锁定
* V* Z; ], _4 { R# u$ CUnlockFileEx 解除对一个文件的锁定
: y! k2 p0 \& X! S7 zUnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射
]- R. R/ m9 z D4 c M3 BVerFindFile 用这个函数决定一个文件应安装到哪里
* ^9 X! F7 i; K( V. @; d+ @) CVerInstallFile 用这个函数安装一个文件 % _; S' N; n$ a) Q. {6 m/ g
VerLanguageName 这个函数能根据16位语言代码获取一种语言的名称
( T) Y4 q/ h) A* |VerQueryValue 这个函数用于从版本资源中获取信息
y% N: v8 }/ C- B! rWriteFile 将数据写入一个文件 ( Q2 Q4 M6 ?+ z
WriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调 1 }0 D v3 U* f
WritePrivateProfileSection 为一个初始化文件(.ini)中指定的小节设置所有项名和值 3 j* v v3 |( j) }( a2 h8 L$ w# G) {
WritePrivateProfileString 在初始化文件指定小节内设置一个字串 5 V& b6 W$ h& t3 m
WriteProfileSection 为Win.ini初始化文件中一个指定的小节设置所有项名和值
" R, w0 V: V' }WriteProfileString 在Win.ini初始化文件指定小节内设置一个字串
, O \" A7 G- C1 N! Q" }, s* S* a4. API之打印函数 @3 `# H) q/ p: ]
AbortDoc 取消一份文档的打印
A% a) y. X' B. Y# i7 V8 TAbortPrinter 删除与一台打印机关联在一起的缓冲文件
`3 r8 S' p; x5 ^4 ^AddForm 为打印机的表单列表添加一个新表单
$ u; u3 }: i: H9 DAddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号
9 |! _9 {0 w9 OAddMonitor 为系统添加一个打印机监视器 $ I5 m9 `9 D- a. T/ G8 ]5 h
AddPort 启动"添加端口"对话框,允许用户在系统可用端口列表中加入一个新端口
- v0 ?/ r( d& UAddPrinter 在系统中添加一台新打印机 , f0 x8 h1 W- |, @- A2 I3 L- `
AddPrinterConnection 连接指定的打印机 : p% N7 g { h7 g( p1 l, i6 }
AddPrinterDriver 为指定的系统添加一个打印驱动程序
3 V# n+ r$ B$ D1 z3 lAddPrintProcessor 为指定的系统添加一个打印处理器 + Q8 L+ @$ t c& T: A, r" ], \
AddPrintProvidor 为系统添加一个打印供应商 * r+ b' t+ D7 y' H3 `$ H3 V2 `
AdvancedDocumentProperties 启动打印机文档设置对话框
0 C2 m+ \$ d4 ?( nClosePrinter 关闭一个打开的打印机对象 / p: _: _2 R! [: _$ T
ConfigurePort 针对指定的端口,启动一个端口配置对话框
/ h( D# z" \$ W! W8 j VConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 ; a9 F5 h$ t, k/ f
DeleteForm 从打印机可用表单列表中删除一个表单 1 y6 g" n' b+ m
DeleteMonitor 删除指定的打印监视器 0 G$ h! e) |$ b0 n! n% J
DeletePort 启动"删除端口"对话框,允许用户从当前系统删除一个端口 + P) c) i w. }& u& n* y$ i
DeletePrinter 将指定的打印机标志为从系统中删除 / o: w0 C" d2 B: k+ P, T
DeletePrinterConnection 删除与指定打印机的连接 ' |7 E F, j& b# N( z
DeletePrinterDriver 从系统删除一个打印机驱动程序 9 e$ Z# \6 D+ q' D
DeletePrintProcessor 从指定系统删除一个打印处理器 & n E; M6 N- F, T- c
DeletePrintProvidor 从系统中删除一个打印供应商 / y& F$ @3 d* y, L
DeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息
6 }* z w0 Q5 J; D) i# J( }5 N0 CDocumentProperties 打印机配置控制函数 , \/ k! K: f5 z: {
EndDocAPI 结束一个成功的打印作业
* `' U. n3 |; K0 t5 V4 n* O1 PEndDocPrinter 在后台打印程序的级别指定一个文档的结束
5 \8 t! h; t4 a7 s: @3 [7 t# TEndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页
0 Z: s) E6 T# P) G3 aEndPagePrinter 指定一个页在打印作业中的结尾
% r9 v" T t$ FEnumForms 枚举一台打印机可用的表单 N! f9 S( X( G. t
EnumJobs 枚举打印队列中的作业
- N' X0 h! [$ j1 X9 `, z9 J5 eEnumMonitors 枚举可用的打印监视器 ; A7 }5 w- w) {1 t
EnumPorts 枚举一个系统可用的端口 " D' d) F, h; Y$ z# p$ n" s
EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 $ i. h; I) j* u. L7 v
EnumPrinters 枚举系统中安装的打印机 ' S& A6 j! m2 [
EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 0 W, }6 S# J5 a5 M
EnumPrintProcessors 枚举系统中可用的打印处理器 # p* y1 h" B) [
Escape 设备控制函数 % e3 s% z# @; m
FindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 ' L# R- A( L. W) a. d; o( @8 x
FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 7 ~7 X P: r9 I0 B1 e
FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 * I4 d- a7 J9 I
FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 5 X6 z3 a' j- ?6 |, ^
GetForm 取得与指定表单有关的信息
8 t6 P8 ^% J- u% MGetJob 获取与指定作业有关的信息 5 i4 I$ g6 m( t( x* m2 L+ K( m
GetPrinter 取得与指定打印机有关的信息
! g, ]% ]7 l0 \9 i' [GetPrinterData 为打印机设置注册表配置信息
8 a2 F* O& A+ tGetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 8 e/ g N3 j3 r, a; c
GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么
& X5 D& b% \- r$ r6 DGetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录
; d; E- [; x* I! |OpenPrinter 打开指定的打印机,并获取打印机的句柄
7 b/ C3 j2 _4 y% `PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 , Y2 M2 N( i: R2 p. n6 `
PrinterProperties 启动打印机属性对话框,以便对打印机进行配置
6 r/ t1 v2 [) B I" k+ @+ J% }& cReadPrinter 从打印机读入数据 % t" p5 n8 \( E D2 \9 {
ResetDC 重设一个设备场景
& ^% k7 W( ?+ @4 ~7 ?8 g4 mResetPrinter 改变指定打印机的默认数据类型及文档设置 . z7 [. E$ ?+ D( t7 r
ScheduleJob 提交一个要打印的作业 2 r1 ?8 [, J7 f# ~1 ~% Z$ Z
SetAbortProc 为Windows指定取消函数的地址 + a @0 m8 \' W1 z* c' ?2 x. @
SetForm 为指定的表单设置信息 0 K; j0 q: z. Z7 q" O
SetJob 对一个打印作业的状态进行控制
" {, w) {( D! C a* V. _SetPrinter 对一台打印机的状态进行控制
* w! b' e4 V/ k3 D$ I1 ySetPrinterData 设置打印机的注册表配置信息
2 ~& s" C0 m {$ \ @' BStartDoc 开始一个打印作业 . C5 c6 K# M1 j9 \! |
StartDocPrinter 在后台打印的级别启动一个新文档
* C, ~7 K- L! R) ?- u, C7 VStartPage 打印一个新页前要先调用这个函数 % Z, X+ X5 x6 g% b) H9 I
StartPagePrinter 在打印作业中指定一个新页的开始 0 z& `7 Z5 J3 X5 P
WritePrinter 将发送目录中的数据写入打印机 7 ~+ ^6 t' g1 U C4 n8 W0 x2 i
5. API之文本和字体函数
4 [/ u9 c4 G- o# g. VAddFontResource 在Windows系统中添加一种字体资源 4 Z, `! ~; R3 j9 I6 F) i! Z
CreateFont 用指定的属性创建一种逻辑字体 # b* t$ U& L8 K2 h& ?! _
CreateFontIndirect 用指定的属性创建一种逻辑字体
% y( D, \3 \& {# K9 D. Y+ UCreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统
1 _4 B1 d$ x5 Z* e# Y; O( u! XDrawText 将文本描绘到指定的矩形中 6 u) ^, j' s) ?# O6 t2 e4 P3 c: ?
DrawTextEx 与DrawText相似,只是加入了更多的功能 0 m* b+ d9 C' |5 j. {$ G' L
EnumFontFamilies 列举指定设备可用的字体
$ { ` R: x( Q1 t: xEnumFontFamiliesEx 列举指定设备可用的字体
( [) H8 G8 d# H$ j A4 g+ [EnumFonts 列举指定设备可用的字体
; U" ?4 p9 C) c# v) V9 v# ^ExtTextOut 经过扩展的文本描绘函数。也请参考SetTextAlign函数 u( X+ E$ g7 B2 S) | h
GetAspectRatioFilterEx 用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小 2 S# J* ^; b4 z' w K U
GetCharABCWidths 判断TureType字体中一个或多个字符的A-B-C大小 2 V5 W: k5 y4 J# S8 a: s
GetCharABCWidthsFloat 查询一种字体中一个或多个字符的A-B-C尺寸 # d P% _! v! H* l6 f3 J* C
GetCharacterPlacement 该函数用于了解如何用一个给定的字符显示一个字串
/ t. l! l* l/ C! R7 OGetCharWidth 调查字体中一个或多个字符的宽度 % q8 t1 p$ `, g) U9 B/ {
GetFontData 接收一种可缩放字体文件的数据
& O! c o" R+ a* P) j. pGetFontLanguageInfo 返回目前选入指定设备场景中的字体的信息
, x, x* e. O7 |& H1 |GetGlyphOutline 取得TureType字体中构成一个字符的曲线信息
: O7 m! `+ x4 p2 j |0 i+ x7 ^GetKerningPairs 取得指定字体的字距信息 ' ]2 E' r0 y% U X; j6 g7 |
GetOutlineTextMetrics 接收与TureType字体内部特征有关的详细信息
4 J0 E: E7 [4 w8 N8 ~GetRasterizerCaps 了解系统是否有能力支持可缩放的字体
4 r" \$ c" v$ [ p% GGetTabbedTextExtent 判断一个字串占据的范围,同时考虑制表站扩充的因素 - r: ?) P2 J, B' F+ d& F/ Q
GetTextAlign 接收一个设备场景当前的文本对齐标志 7 k' P/ z4 h( b& P9 T1 Y
GetTextCharacterExtra 判断额外字符间距的当前值
) _. L+ j; d0 P0 w) J! `GetTextCharset 接收当前选入指定设备场景的字体的字符集标识符 5 J, i4 Q& x, u# B' Z$ a
GetTextCharsetInfo 获取与当前选定字体的字符集有关的详细信息 ! J1 c8 ~ d# S* |8 X: m8 S( h
GetTextColor 判断当前字体颜色。通常也称为"前景色" + G! b& f" ]- v) s/ G. D$ S
GetTextExtentExPoint 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息
" Y' k2 T" c7 v3 K5 u% WGetTextExtentPoint 判断一个字串的大小(范围)
9 K+ [. ^. d+ M$ H* J, i2 p9 V: LGetTextFace 获取一种字体的字样名 7 k( O# S i, q8 J" s2 C
GetTextMetrics 获取与选入一种设备场景的物理字体有关的信息
6 P. d4 g" X$ g7 `8 T$ bGrayString 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态 3 C' `3 }2 ^) R1 c
PolyTextOut 描绘一系列字串
+ ^4 J5 `+ Q. o5 j5 j5 Y& F8 y0 ^RemoveFontResource 从Windows系统中删除一种字体资源
8 S4 g- p+ O; S, E6 C% G$ s: M3 RSetMapperFlags Windows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体
. s+ X. o( n. A# J8 ?8 mSetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置
" g/ ^( c2 d8 a) J0 YSetTextCharacterExtra 描绘文本的时候,指定要在字符间插入的额外间距
$ Y3 P# ]: L+ ]- f3 `5 F. Q& xSetTextColor 设置当前文本颜色。这种颜色也称为"前景色"
) u j" R% ?* t# X; A/ K1 cSetTextJustification 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理 + J# `4 o6 Y3 t! k& c
TabbedTextOut 支持制表站的一个文本描绘函数
+ ]6 S# L! k# w- z1 kTextOut 文本绘图函数 1 n) H5 |7 H9 S4 k- O
WINGDIAPI BOOL WINAPI TextOut(
2 a9 W( l% V5 F* d. y. s$ VHDC, //输出设备
4 A' ?: R$ ]; R9 B4 N/ |3 K- Mint, //输出的横坐标/ j" M1 c0 P! Q) I
int, //纵坐标
! p9 h$ s0 H+ d2 \) g0 f QLPCSTR, //输出的文本str4 m0 O& ^& }1 Q( w6 J+ {" j5 w
int); //文本的长度:lstrlen(str)' b: T. P" z8 Y1 K: R
6. API之菜单函数
) i) V: b6 O& n cAppendMenu 在指定的菜单里添加一个菜单项 . i/ F9 V% B5 v) s
CheckMenuItem 复选或撤消复选指定的菜单条目
1 E3 [* N- X9 a7 J& _* d' OCheckMenuRadioItem 指定一个菜单条目被复选成"单选"项目
# T' [, @9 N5 Y3 H7 x+ dCreateMenu 创建新菜单
" S- F ]1 n" Z+ ~) rCreatePopupMenu 创建一个空的弹出式菜单
/ X2 Y8 X' N8 y9 TDeleteMenu 删除指定的菜单条目 / t) c1 @; F3 a t9 M6 N5 _
DestroyMenu 删除指定的菜单
_6 u/ b/ p* ~. k' E9 {$ F% R+ B% XDrawMenuBar 为指定的窗口重画菜单 & ]! S% [9 h6 i* r# y+ a4 q
EnableMenuItem 允许或禁止指定的菜单条目 , l1 N& s& S, `3 l# Q, @1 @
GetMenu 取得窗口中一个菜单的句柄 4 j$ b) p/ n* E6 ~
GetMenuCheckMarkDimensions 返回一个菜单复选符的大小
! E, K1 d( P- ~% dGetMenuContextHelpId 取得一个菜单的帮助场景ID . Y/ f8 X5 x3 _1 d g
GetMenuDefaultItem 判断菜单中的哪个条目是默认条目 . S, w& [( V# _# j! Q6 {
GetMenuItemCount 返回菜单中条目(菜单项)的数量 2 V3 M2 v6 W" }- W8 { k* h& f# b% s; q
GetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID
+ {; e$ |6 B3 l: \, v* fGetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息
- V5 U& r) h/ j& _6 i ~GetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息 1 c6 o9 s' j+ W1 b3 Z9 s/ w3 q
GetMenuState 取得与指定菜单条目状态有关的信息
' a9 U. T% ^6 ^; HGetMenuString 取得指定菜单条目的字串
& l! u+ j0 @2 s+ [ f% E3 ?GetSubMenu 取得一个弹出式菜单的句柄,它位于菜单中指定的位置 0 x: ] w$ X0 Q, D9 e& ~+ Y8 i
GetSystemMenu 取得指定窗口的系统菜单的句柄 5 R" v7 G% ^ e h4 E
HiliteMenuItem 控制顶级菜单条目的加亮显示状态
& f) Q) Z p$ @* S% F; ]InsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动
0 {! O$ x9 d. d+ t0 q+ ~( u2 rInsertMenuItem 插入一个新菜单条目 ( D" a; {: j9 A( D% Z5 }
IsMenu 判断指定的句柄是否为一个菜单的句柄 " n5 N! x2 C- {, R! x! z6 o. O
LoadMenu 从指定的模块或应用程序实例中载入一个菜单 3 e/ v7 ?0 @! \+ `
LoadMenuIndirect 载入一个菜单 G! T5 w$ b7 S
MenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点
! C7 c9 n% N4 a3 L% d( WModifyMenu 改变菜单条目
8 c# T9 y* W0 R WRemoveMenu 删除指定的菜单条目 4 k; V) }$ X+ N3 Y: w& N. O
SetMenu 设置窗口菜单
/ A2 k3 p" B8 Z- A; L1 v, |5 nSetMenuContextHelpId 设置一个菜单的帮助场景ID - M! E! J- z7 m8 `
SetMenuDefaultItem 将一个菜单条目设为默认条目
) R8 Z8 G: K+ x- CSetMenuItemBitmaps 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√) & T% B4 |5 C) Y* n! N, l
SetMenuItemInfo 为一个菜单条目设置指定的信息 3 c" Z9 R' E0 {" C/ m
TrackPopupMenu 在屏幕的任意地方显示一个弹出式菜单 & x! U$ f5 S6 a" d3 ^7 l# u2 P( N
TrackPopupMenuEx 与TrackPopupMenu相似,只是它提供了额外的功能 - J$ |. c3 Z5 B
7. API之位图、图标和光栅运算函数 + _ t" c" }, c2 {
BitBlt 将一幅位图从一个设备场景复制到另一个
) ? T2 j( k) V# C8 X" G0 s! z WINGDIAPI BOOL WINAPI BitBlt(
' z- W' L! P! s; I" t' L( FHDC, //目标HDC
6 L9 m* F: f7 K# j# pint, //X1& R3 N# f) R2 S& U
int, //Y18 P% O4 K3 [; O0 g) Z8 p
int, //width, S) B7 ?: R" b
int, //height2 W) e& H7 C2 L
HDC, //源HDC% W c/ O1 e. W2 R- Y* _
int, //右边的距离
2 E/ f; m: x1 H) Bint, //??
1 C& |: R7 i# u+ r) g' QDWORD); //拷贝方式:SRCCOPY|SRCPAINT|SRCAND|SRCINVERT|RCERASE|NOTSRCCOPY|NOTSRCERASE|MERGECOPY|MERGEPAINT|$ M! s5 f+ Z' x$ n' f
PATCOPY|PATPAINT|PATINVERT|DSTINVERT|BLACKNESS|WHITENESS* ~. t6 P* C! T4 Q1 x
CopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序
$ e% {5 Q T7 p3 vCopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作 & R0 q! n' G9 c
CreateBitmap 按照规定的格式创建一幅与设备有关位图
- r. ]) y! |3 ^1 YCreateBitmapIndirect 创建一幅与设备有关位图
2 Y" C3 ~& j4 E5 T4 Z. W0 }CreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容 $ G5 h4 L2 | \. o
CreateCursor 创建一个鼠标指针
5 g) B& G9 A6 j# RCreateDIBitmap 根据一幅与设备无关的位图创建一幅与设备有关的位图 2 x4 Y! | K) K' w
CreateDIBSection 创建一个DIBSection
( W' r6 U! f7 ]4 ]1 [, sCreateIcon 创建一个图标
$ G7 n9 r2 X" Y7 PCreateIconIndirect 创建一个图标 % x" H7 u, k8 G/ v4 ^1 J. N% X1 l
DestroyCursor 清除指定的鼠标指针,并释放它占用的所有系统资源
. P8 M/ V+ W' G! U* n5 \7 ZDestroyIcon 清除图标
& Y* O9 v; L l# o+ ~2 D5 h: [% yDrawIcon 在指定的位置画一个图标
$ n8 R. D% x9 I _DrawIconEx 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能 / w/ n' Y4 x; S" t! D2 |
ExtractAssociatedIcon 判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之 & ^) q9 Z, g) `
ExtractIcon 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来 " P9 J9 ?* g& f1 E
GetBitmapBits 将来自位图的二进制位复制到一个缓冲区 8 R: Q* Q# e0 t9 w+ z7 O4 j
GetBitmapDimensionEx 取得一幅位图的宽度和高度
- X/ h8 w' V; [( A9 R2 X zGetDIBColorTable 从选入设备场景的DIBSection中取得颜色表信息
/ q/ C/ f5 b, V& pGetDIBits 将来自一幅位图的二进制位复制到一幅与设备无关的位图里
; V3 a" A. [" R# T. E; g" K0 W. MGetIconInfo 取得与图标有关的信息
1 F7 k& p8 _# |GetStretchBltMode 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式
2 r X) L% [; v% v( _* OLoadBitmap 从指定的模块或应用程序实例中载入一幅位图 ' A; o$ I8 p# l8 ~% Y. k5 T' M& d: i
LoadCursor 从指定的模块或应用程序实例中载入一个鼠标指针
8 V5 \3 t4 ?( i/ {) r2 z T# X9 _LoadCursorFromFile 在一个指针文件或一个动画指针文件的基础上创建一个指针 ; t3 o3 ?2 H! P
LoadIcon 从指定的模块或应用程序实例中载入一个图标
* k! r7 @# [2 q/ @% l5 K- I+ p: D4 kLoadImage 载入一个位图、图标或指针 j/ }, J/ n( b1 Y' M& d* t, d; i
HANDLE LoadImageA(
5 a. P _" m; f9 i" k9 EHINSTANCE, //当前实例句柄:AfxGetInstanceHandle()
2 x0 x2 j: S" l: k% _3 D LPCSTR, //资源所在的目录:c:\help.bmp$ c7 u) |$ w3 ~5 J9 F1 A
UINT, //类型:IMAGE_BITMAP|IMAGE_ICON|IMAGE_CURSOR|IMAGE_ENHMETAFILE
# |1 v9 V/ r& H* x/ G int, /// c o1 t/ B: M. l, y% ]1 ?1 r ^
int, //2 W8 z- O, @& T0 M' u/ Z
UINT); //风格:LR_DEFAULTCOLOR|LR_MONOCHROME|LR_COLOR|LR_COPYRETURNORG|
J8 O# R) N z0 G6 Z5 T( h* z$ z3 E/ z8 jR_COPYDELETEORG|LR_LOADFROMFILE|LR_LOADTRANSPARENT|LR_DEFAULTSIZE|LR_VGACOLOR|
% A- S( r& ]! vLR_LOADMAP3DCOLORS|LR_CREATEDIBSECTION|LR_COPYFROMRESOURCE|LR_SHARED, c/ R5 E/ q5 G! F% E6 I$ f
MaskBlt 执行复杂的图象传输,同时进行掩模(MASK)处理
$ ^5 {% W; B" f5 d0 M: UPatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景
. }+ x; X( @5 XPlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理
1 F8 ~* k( ]! p0 K1 G8 e! eSetBitmapBits 将来自缓冲区的二进制位复制到一幅位图 0 Y' e4 B4 K( m/ c% v
SetBitmapDimensionEx 设置一幅位图的宽度。以一毫米的十分之一为单位 # c7 y! |# H: U) Z! y1 z" ^, ?/ ?
SetDIBColorTable 设置选入设备场景的一个DIBSection的颜色表信息
" c* w7 x2 l; k- \% qSetDIBits 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里
$ b' `# k% |- P" V! uSetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备 5 a' t: n( u. J( b$ e
SetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式
$ u, n: }# d& [. Z! ~+ i g! E, YStretchBlt 将一幅位图从一个设备场景复制到另一个 , P! ~3 k, t& I# I; s& r
StretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景 ; A/ i7 D2 Y9 {4 y7 S. [
8. API之绘图函数
E7 ]5 b+ Q! r. H% lAbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作 : {5 G( D& {7 _5 l5 I
AngleArc 用一个连接弧画一条线
0 {6 A( H I+ Q& k& F+ r. y" RArc 画一个圆弧
* a/ Y _# Y; O" @BeginPath 启动一个路径分支 1 R* i6 y x+ N% U! p
CancelDC 取消另一个线程里的长时间绘图操作 $ P( t& f( S8 ~9 ?: g
Chord 画一个弦
( b* F+ O5 M+ H0 lCloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄
. T# A$ ?4 I9 U$ s& R- u0 _+ f1 ICloseFigure 描绘到一个路径时,关闭当前打开的图形
& }; \( o$ t( S- ~8 B, i& z4 f- L& OCloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄 % U Q _- d, C1 S
CopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝)
" b. y6 T. _7 t3 w" aCopyMetaFile 制作指定(标准)图元文件的一个副本 * J' [1 Z$ ^' j3 T$ V
CreateBrushIndirect 在一个LOGBRUSH数据结构的基础上创建一个刷子 4 A& A, b/ ?" ^! D% b
CreateDIBPatternBrush 用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案) 9 |4 L7 t L2 j# T! Z3 F& `
CreateEnhMetaFile 创建一个增强型的图元文件设备场景 , K5 `- \6 i. H1 f+ k8 f5 n3 R
CreateHatchBrush 创建带有阴影图案的一个刷子 9 J( b6 S z: K, _
CreateMetaFile 创建一个图元文件设备场景
( T, e% ]% Y+ S+ \ w* k8 DCreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子 3 I& e: K# _4 ^
CreatePen 用指定的样式、宽度和颜色创建一个画笔 ( \6 {# x# k- `) H B
CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔
/ R7 {# Y! ~. o2 d5 MCreateSolidBrush 用纯色创建一个刷子
; B6 y4 @+ ?9 Y: C3 H: s6 MDeleteEnhMetaFile 删除指定的增强型图元文件 ' M; s. E/ @# N" ]9 b6 w7 V' t0 W
DeleteMetaFile 删除指定的图元文件 ) u7 l) w" B: ~9 d4 ]$ E6 G! \& [
WINGDIAPI BOOL WINAPI DeleteObject(HGDIOBJ) 删除GDI对象,对象使用的所有系统资源都会被释放
8 ?0 H* G' a2 I" pDrawEdge 用指定的样式描绘一个矩形的边框 ) E! m1 h! I1 N, Z# ]
DrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序 * D+ c' Q$ U1 d( `- j. n# G' B
DrawFocusRect 画一个焦点矩形 8 a1 L4 J/ r/ v
DrawFrameControl 描绘一个标准控件 7 i) G) h5 p& B2 w2 x3 V
DrawState 为一幅图象或绘图操作应用各式各样的效果
( T& h0 C- z; e' h* X; n7 o- \( l: AEllipse 描绘一个椭圆,由指定的矩形围绕 8 N- j4 D h5 k* |: c
EndPath 停止定义一个路径
0 \9 {! t1 E: x* H" PEnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录 8 ?3 x0 B' Q) E1 t0 L2 t; w6 T
EnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录 . T: T! c. S* B1 A0 r) \
EnumObjects 枚举可随同指定设备场景使用的画笔和刷子
- i/ P. M* \& f% [- K/ TExtCreatePen 创建一个扩展画笔(装饰或几何) 2 G/ g1 F+ P# v$ Q/ v% Q
ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域 ! w j, ^- Y, V
FillPath 关闭路径中任何打开的图形,并用当前刷子填充
! R+ ]+ h% ~: b/ m9 r fFillRect 用指定的刷子填充一个矩形
/ L3 t6 w3 p+ q! x5 O) X. }FlattenPath 将一个路径中的所有曲线都转换成线段
% p$ }0 @, [0 k$ H8 ~; f2 kFloodFill 用当前选定的刷子在指定的设备场景中填充一个区域 ) J6 S# f2 P; p0 w% f
FrameRect 用指定的刷子围绕一个矩形画一个边框 ( l; x& ?! i2 P4 D3 t; Z
GdiComment 为指定的增强型图元文件设备场景添加一条注释信息 - O" K( l. Y! ?) }5 K
GdiFlush 执行任何未决的绘图操作 4 p% B z3 y: F
GdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中
! [+ }/ q! R( b1 H8 M( F* v) c. XGdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列
5 y. H$ W( R3 t1 UGetArcDirection 画圆弧的时候,判断当前采用的绘图方向 ; \+ D1 q$ u: ~' U* e
GetBkColor 取得指定设备场景当前的背景颜色
, Z. A; ?) {9 gGetBkMode 针对指定的设备场景,取得当前的背景填充模式
8 n4 z+ b- j+ F* m2 V r$ aGetBrushOrgEx 判断指定设备场景中当前选定刷子起点 ; |( M8 N5 {& u/ U
GetCurrentObject 获得指定类型的当前选定对象
2 v; {2 p3 H6 S& YGetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置
% e( D4 K+ d4 B" {GetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄 : E- @5 \/ v9 D$ }$ ^% h
GetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里
" r, B$ w0 u. o/ b$ mGetEnhMetaFileDescription 返回对一个增强型图元文件的说明 ' t }5 H' g6 B+ j' |- K
GetEnhMetaFileHeader 取得增强型图元文件的图元文件头 * N' u# W( s2 T* ]5 l
GetEnhMetaFilePaletteEntries 取得增强型图元文件的全部或部分调色板
& h5 f6 X. x( K$ QGetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄
! o# w4 B+ d% \$ C% j) rGetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区 % m& n' e/ f1 v5 r) V# t
GetMiterLimit 取得设备场景的斜率限制(Miter)设置 : @$ I5 e8 Y% i$ S5 V! u% j
GetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色
1 @1 N& k1 n2 ^$ N- UGetObjectAPI 取得对指定对象进行说明的一个结构
7 n% [; K. Z) iGetObjectType 判断由指定句柄引用的GDI对象的类型
* f1 o* [7 k) u4 ^GetPath 取得对当前路径进行定义的一系列数据
1 x1 E. v6 a- x9 n1 @0 nGetPixel 在指定的设备场景中取得一个像素的RGB值
- [5 o, ~! ~& z! n4 O- T9 QGetPolyFillMode 针对指定的设备场景,获得多边形填充模式 / ~5 K3 J! k0 X3 H' y, ~
GetROP2 针对指定的设备场景,取得当前的绘图模式 ) n4 }" H4 [" Z8 r h3 p
GetStockObject 取得一个固有对象(Stock) ( h* q" d) j/ N& Y
GetSysColorBrush 为任何一种标准系统颜色取得一个刷子 3 _% M+ J5 Y, D
GetWinMetaFileBits 通过在一个缓冲区中填充用于标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件 + o; ]. P1 T& ^3 k7 J* ~
InvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形
* h8 s& X# A% L3 j4 X( q' iLineDDA 枚举指定线段中的所有点 3 r/ N2 A1 O r0 b3 w
LineTo 用当前画笔画一条线,从当前位置连到一个指定的点 ( l3 \5 r) ^) s- y/ m* d
MoveToEx 为指定的设备场景指定一个新的当前画笔位置 0 Y$ c4 Z+ j. N: N: h, J
PaintDesk 在指定的设备场景中描绘桌面墙纸图案
4 b$ t% S& X. C2 M+ k* {5 j- Y9 GPathToRegion 将当前选定的路径转换到一个区域里 + }, K6 i0 ]! P" ^0 E! h6 h
Pie 画一个饼图 % `5 Y" L* C1 s9 I4 Y
PlayEnhMetaFile 在指定的设备场景中画一个增强型图元文件
/ D% e. ?/ S2 Z- `% ~& [4 lPlayEnhMetaFileRecord 回放单独一条增强型图元文件记录
/ F; I; Q2 ^. }3 W' f7 P" u1 A; V& M9 g9 OPlayMetaFile 在指定的设备场景中回放一个图元文件
$ G8 Z; T9 s+ g; e6 ^8 rPlayMetaFileRecord 回放来自图元文件的单条记录
$ L7 S0 i4 `" x6 F$ G1 {$ L6 @0 ZPolyBezier 描绘一条或多条贝塞尔(Bezier)曲线 8 `! u0 b0 v* t- ?
PolyDraw 描绘一条复杂的曲线,由线段及贝塞尔曲线组成
( D5 y7 g7 L: p! G0 LPolygon 描绘一个多边形
! [, [4 r; Y4 ^Polyline 用当前画笔描绘一系列线段 : I. ^9 p7 L! {3 s! G% ?
PolyPolygon 用当前选定画笔描绘两个或多个多边形 & U @% s% }- G. ]* w* b4 V
PolyPolyline 用当前选定画笔描绘两个或多个多边形
+ r8 m8 ~0 P+ Y# }4 r% c! L7 [; mRectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充
: |0 z; _9 I$ T, b; U5 Y8 Z4 FRoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充 2 C R8 E; }) N* ]
SelectClipPath 将设备场景当前的路径合并到剪切区域里
5 @( `0 W! ]: V+ V+ OSelectObject 为当前设备场景选择图形对象 ! ^4 N" ^5 u( {) \
WINGDIAPI HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ);$ a. d) H( S) v; b1 T7 i; k
SetArcDirection 设置圆弧的描绘方向 - l* G; b% L, ?. c8 U) F5 G
SetBkColor 为指定的设备场景设置背景颜色 % S- g6 u! x1 ?+ W( U+ ^: S
SetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式
7 P8 o! |/ i2 [+ X% C- ^3 HSetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点
9 ~4 W: W! K" O7 jSetEnhMetaFileBits 用指定内存缓冲区内包含的数据创建一个增强型图元文件 $ U6 w* Z" \% W c) `0 c: G( h0 b
SetMetaFileBitsEx 用包含在指定内存缓冲区内的数据结构创建一个图元文件
0 `5 u' i6 _6 }8 d) `( i$ n# g" MSetMiterLimit 设置设备场景当前的斜率限制 - u1 t% B* i% h* s. g8 @- a; c6 D& U
SetPixel 在指定的设备场景中设置一个像素的RGB值
% u0 Z$ L6 ^* F' ?SetPixelV 在指定的设备场景中设置一个像素的RGB值 : a. E& N( r/ V* ^% S
SetPolyFillMode 设置多边形的填充模式
4 M9 z1 [; m) P4 H7 C9 v* mSetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致
0 H0 d6 m+ b y" K0 a8 vSetWinMetaFileBits 将一个标准Windows图元文件转换成增强型图元文件 / d* _/ p# N. S1 @3 x) q) q
StrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域
1 P1 C! `; n% Z$ oStrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭 ! |) l4 ^/ Y9 t
UnrealizeObject 将一个刷子对象选入设备场景之前,如刷子的起点准备用SetBrushOrgEx修改,则必须先调用本函数
/ K: B$ \+ f* C: F' KWidenPath 根据选定画笔的宽度,重新定义当前选定的路径
, s1 ~+ u; V# @% O _9. API之设备场景函数 & l4 F/ z4 \, U
CombineRgn 将两个区域组合为一个新区域
$ O3 Y" H+ j8 H) d, ^CombineTransform 驱动世界转换。它相当于依顺序进行两次转换 & k; a; S1 i/ ~, l$ [
CreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景
! Q3 G/ o) p9 b2 w4 }. w' bCreateDC 为专门设备创建设备场景
# W6 n8 G' u# `) FCreateEllipticRgn 创建一个椭圆
, r6 d" G/ j* w- pCreateEllipticRgnIndirect 创建一个内切于特定矩形的椭圆区域
1 m2 \' X; P' L: }CreateIC 为专用设备创建一个信息场景
% T7 \3 h- s: A7 K9 \CreatePolygonRgn 创建一个由一系列点围成的区域 ; E. E, B' t- H2 i" b4 j- S
CreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的 1 {. X+ y% w3 B
CreateRectRgn 创建一个矩形区域
; W% B( w5 R* O3 s1 u1 ^CreateRectRgnIndirect 创建一个矩形区域 % @: ~: _% }) w# ?: Z; J# j
CreateRoundRectRgn 创建一个圆角矩形
9 c1 C- w9 ?. E- eDeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源 $ }" O) C' Z/ _! \
DPtoLP 将点阵从设备坐标转换到专用设备场景逻辑坐标
( v" _3 T4 R! T5 G' B" ]4 gEqualRgn 确定两个区域是否相等
( d6 m8 n8 g i* Z0 H5 m0 u; ~ExcludeClipRect 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图 , a8 s8 u3 w' d' R* L$ g+ d
ExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域
' q0 L, X9 q' WExtCreateRegion 根据世界转换修改区域 ( Y& S7 _6 q& q6 b- P
ExtSelectClipRgn 将指定区域组合到设备场景的当前剪裁区
/ z3 A8 V M8 L, V: sFillRgn 用指定刷子填充指定区域 . Z5 }# v2 _) a8 Z
FrameRgn 用指定刷子围绕指定区域画一个外框
& V" C0 Q( C* |6 D2 ^4 Z+ G/ i' VGetBoundsRect 获取指定设备场景的边界矩形
& T$ _9 M/ j3 M* }# nGetClipBox 获取完全包含指定设备场景剪裁区的最小矩形 ! Z# w7 \" M; e% v/ O
GetClipRgn 获取设备场景当前剪裁区
! e5 J2 w% M G& `0 nGetDC 获取指定窗口的设备场景
6 [8 Z+ U& D8 V9 cGetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项 8 x$ V6 {5 H; o" C3 Y
GetDCOrgEx 获取指定设备场景起点位置(以屏幕坐标表示)
* r4 C' a3 Y9 N% Z3 S1 rGetDeviceCaps 根据指定设备场景代表的设备的功能返回信息 1 y$ ?; n9 g, q( ?
GetGraphicsMode 确定是否允许增强图形模式(世界转换) * K2 v) F3 _/ _% M8 }: J m! {
GetMapMode 为特定设备场景调入映象模式
, R! ]% M! i! TGetRegionData 装入描述一个区域信息的RgnData结构或缓冲区
) w# w d$ c0 |4 z) f6 A8 KGetRgnBox 获取完全包含指定区域的最小矩形
" l4 h* u$ y. ~ z9 s. I" Y! ZGetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新 - |& o6 a8 V, }2 X
GetViewportExtEx 获取设备场景视口(viewport)范围
1 O( l: F" n1 U+ W5 ]4 o" C$ xGetViewportOrgEx 获取设备场景视口起点 / X9 D" s x. X; j7 M
GetWindowDC 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景
" E" z: l) V6 @* ? ?: w3 g' @GetWindowExtEx 获取指定设备场景的窗口范围
% P. m9 D% _/ K E/ {GetWindowOrgEx 获取指定设备场景的逻辑窗口的起点 ; c, _5 O: x- r2 v+ K
GetWindowRgn 获取窗口区域 # f( B$ k) Z9 N3 }( \ M
GetWorldTransform 如果有世界转换,为设备场景获取当前世界转换
) f2 x) h: @2 l. ?# JIntersectClipRect 为指定设备定义一个新的剪裁区
0 W% H' ]+ O. D5 M; r, aInvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画
8 c* I: e6 _, u! l/ V1 PInvertRgn 通过颠倒每个像素值反转设备场景指定区域
! m/ F" A5 V- a8 ~LPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标 # K, X0 N7 O; _9 u. @
ModifyWorldTransform 根据指定的模式修改世界转换 " @+ s' O4 z& _4 p
OffsetClipRgn 按指定量平移设备场景剪裁区 8 v. F; m8 F5 v& J. N) ?
OffsetRgn 按指定偏移量平移指定区域 6 E$ e3 a. G/ C' V# T3 A' }2 C1 s
OffsetViewportOrgEx 平移设备场景视口区域
" }5 R9 N; B2 s& E yOffsetWindowOrgEx 平移指定设备场景窗口起点
+ L: ]1 g, z. w, d. {PaintRgn 用当前刷子背景色填充指定区域
5 C7 {; d5 ^* ?$ e0 a1 [/ xPtInRegion 确定点是否在指定区域内
7 i2 S* T8 A! [; O$ l. _8 z* K9 aPtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内) + O6 K- q, Q* T! ^) M
RectInRegion 确定矩形是否有部分在指定区域内 " P% N/ Z9 J) u) K5 g
RectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内)
1 X" T; w4 R& u2 v- L! W; H UReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景
6 e3 V. S, F3 ?" x- ~9 @' ~RestoreDC 从设备场景堆栈恢复一个原先保存的设备场景 / M2 J# k/ P( t# I
SaveDC 将指定设备场景状态保存到Windows设备场景堆栈
5 Z' A5 s- y; y: i8 U0 Y8 V4 I1 |ScaleViewportExtEx 缩放设备场景视口的范围
+ f) Z5 b( a, c9 y- M2 ^ScaleWindowExtEx 缩放指定设备场景窗口范围
$ p8 x: [* e- Q! K/ I( H; _ xScrollDC 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形 3 T1 i; f- @2 ^2 c8 ?
SelectClipRgn 为指定设备场景选择新的剪裁区 v* E) O% M; }
SetBoundsRect 设置指定设备场景的边界矩形
2 n1 `8 v2 }# lSetGraphicsMode 允许或禁止增强图形模式,以提供某些支持(包括世界转换) ; ^/ R: R5 {( P$ m4 Z
SetMapMode 设置指定设备场景的映射模式
~1 n% i5 p% R5 q: y8 oSetRectRgn 设置区域为指定的矩形 7 I" { J$ o* y/ G! C, ?
SetViewportExtEx 设置设备场景视口范围 8 I3 p" M2 y9 f
SetViewportOrgEx 设置设备场景视口起点
4 G9 N+ _$ \) O1 PSetWindowExtEx 设置指定设备场景窗口范围 3 J; e+ ~* |. q
SetWindowOrgEx 设置指定设备场景窗口起点
. S( U- \( }4 Z2 b( y6 JSetWindowRgn 设置窗口区域
: z/ R# y) A& M. z) hSetWorldTransform 设置世界转换 4 \! u) E$ `! N5 {7 p
ValidateRgn 激活窗口中指定区域,把它从刷新区移走 5 e( h# ?# o, t- C/ m T# y) }
WindowFromDC 取回与某一设备场景相关的窗口的句柄
- W8 ?1 }) `4 D: R( e10. API之硬件与系统函数 & c$ o- w0 a3 u9 Z1 ^8 P, E3 ~# K5 n1 Q- G( @
ActivateKeyboardLayout 激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义 5 r4 i4 M! @7 p/ j. j& u
Beep 用于生成简单的声音
" _6 t) u9 U9 {' c* ]5 ZCharToOem 将一个字串从ANSI字符集转换到OEM字符集
! q: i9 l" a) lClipCursor 将指针限制到指定区域 ; }; L- d- C$ ^' H# n: ^
ConvertDefaultLocale 将一个特殊的地方标识符转换成真实的地方ID : v% q, R2 W9 j: o+ g0 D
CreateCaret 根据指定的信息创建一个插入符(光标),并将它选定为指定窗口的默认插入符 / ^3 y, G5 D" b# ?1 f; w% G
DestroyCaret 清除(破坏)一个插入符
4 v1 `4 [- `) a, u' X; _7 d3 VEnumCalendarInfo 枚举在指定"地方"环境中可用的日历信息
" ~/ S% l9 o6 V8 w2 [! I* W' IEnumDateFormats 列举指定的"当地"设置中可用的长、短日期格式 : `9 u' `* }4 B2 B2 }
EnumSystemCodePages 枚举系统中已安装或支持的代码页
4 C; S$ a* W6 P% gEnumSystemLocales 枚举系统已经安装或提供支持的"地方"设置
$ _6 S- y4 t' g# {8 V7 h3 REnumTimeFormats 枚举一个指定的地方适用的时间格式 $ F. l; S8 c/ H2 i( Q' x9 X# P, y
ExitWindowsEx 退出windows,并用特定的选项重新启动 4 F9 b- ^' X- K/ g
WINUSERAPI BOOL WINAPI ExitWindowsEx(- ? d, v0 x0 L/ P
UINT uFlags, //EWX_LOGOFF|EWX_REBOOT|EWX_FORCE|EWX_POWEROFF|EWX_FORCEIFHUNG
' H7 A0 }" R3 t4 D w4 M# L DWORD dwReserved); //0
8 u1 ?, v8 j8 |* D1 oExpandEnvironmentStrings 扩充环境字串 ! J1 K" o1 }3 {. s& {; {
FreeEnvironmentStrings 翻译指定的环境字串块
& l% M5 n! Y& M8 Y- VGetACP 判断目前正在生效的ANSI代码页
( {2 U7 ^ e1 k. u1 ^" {* {$ [GetAsyncKeyState 判断函数调用时指定虚拟键的状态 ! F8 _) e2 V1 _. Q. Y# _
GetCaretBlinkTime 判断插入符光标的闪烁频率
& `# N8 L! m# {; w0 o' NGetCaretPos 判断插入符的当前位置
5 q" }; W* O# H& o9 L6 t6 YGetClipCursor 取得一个矩形,用于描述目前为鼠标指针规定的剪切区域 # A) T: r+ r. _4 E7 k8 N! r7 b
GetCommandLine 获得指向当前命令行缓冲区的一个指针
_: Z! R# H) qGetComputerName 取得这台计算机的名称 5 z+ F3 |: B1 l& o5 J
GetCPInfo 取得与指定代码页有关的信息 " G3 d' W3 {* ^: k4 F. O4 ^- }
GetCurrencyFormat 针对指定的"地方"设置,根据货币格式格式化一个数字 " q' _. T9 z( Q) ?" G* w# S- `
GetCursor 获取目前选择的鼠标指针的句柄 8 q3 ^; R( s! b( M0 R9 A/ t* h) p) Z
GetCursorPos 获取鼠标指针的当前位置 0 d* V, H* z v
GetDateFormat 针对指定的"当地"格式,对一个系统日期进行格式化
( g- r2 k$ C4 `3 C9 `GetDoubleClickTime 判断连续两次鼠标单击之间会被处理成双击事件的间隔时间 - @. N* T, Z! Z+ C: [. I" d: P
GetEnvironmentStrings 为包含了当前环境字串设置的一个内存块分配和返回一个句柄
2 `9 J' i6 y' I& Y" n1 l7 L+ M5 dGetEnvironmentVariable 取得一个环境变量的值 ! ~5 @, S7 w8 ?/ b
GetInputState 判断是否存在任何待决(等待处理)的鼠标或键盘事件 : S% b, L0 R- m4 \
GetKBCodePage 由GetOEMCP取代,两者功能完全相同
; w& M. k4 d% P$ {' S, b# \# mGetKeyboardLayout 取得一个句柄,描述指定应用程序的键盘布局
6 L9 Q: O8 C f: \6 K7 l1 r" IGetKeyboardLayoutList 获得系统适用的所有键盘布局的一个列表
- n- F/ G& t( s, Q- {; YGetKeyboardLayoutName 取得当前活动键盘布局的名称
7 U H6 d+ P U/ N7 U# ]7 |8 [GetKeyboardState 取得键盘上每个虚拟键当前的状态 2 W0 P6 Q- u: X r
GetKeyboardType 了解与正在使用的键盘有关的信息 0 \( q$ D) u' }( R0 d- \, F
GetKeyNameText 在给出扫描码的前提下,判断键名 ! t; S0 w. a5 G9 K6 I/ s, X
GetKeyState 针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态
& Z! F+ v2 p6 N" RGetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息
+ X! K' b/ u1 `6 P: hGetLocaleInfo 取得与指定"地方"有关的信息 7 h5 U% c4 r+ C0 }/ j+ e' B
GetLocalTime 取得本地日期和时间 ) [+ I# v3 o4 h4 J4 N. f% Y6 f- Y
GetNumberFormat 针对指定的"地方",按特定的格式格式化一个数字
; h* _# n0 L7 _, z# IGetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页
1 V% m/ A# x# t+ yGetQueueStatus 判断应用程序消息队列中待决(等待处理)的消息类型 " x) m+ o( z6 W/ j+ q
GetSysColor 判断指定windows显示对象的颜色 3 d" d: C* Z, J9 R
GetSystemDefaultLangID 取得系统的默认语言ID
2 ]" H2 Z4 u- f% @$ m! EGetSystemDefaultLCID 取得当前的默认系统"地方" ' \5 o- F4 j, @! ]3 f; K9 f
GetSystemInfo 取得与底层硬件平台有关的信息
0 V/ w* s4 W; F9 Q& pGetSystemMetrics 返回与windows环境有关的信息 7 D5 y- @3 T5 C0 A
GetSystemPowerStatus 获得与当前系统电源状态有关的信息 & l# g( S b( i- p5 i
GetSystemTime 取得当前系统时间,这个时间采用的是"协同世界时间"(即UTC,也叫做GMT)格式 5 I. V6 b( @7 [* M$ h2 B
GetSystemTimeAdjustment 使内部系统时钟与一个外部的时钟信号源同步 + t' e/ {: M5 C" i) G& m
GetThreadLocale 取得当前线程的地方ID
0 l3 j5 l3 } vGetTickCount 用于获取自windows启动以来经历的时间长度(毫秒)
7 |# V8 I* t) s- u& lGetTimeFormat 针对当前指定的"地方",按特定的格式格式化一个系统时间
6 T2 M" n( d7 k, n* ^( ~9 CGetTimeZoneInformation 取得与系统时区设置有关的信息 ) ~& K% Y+ O: a1 ]& |
GetUserDefaultLangID 为当前用户取得默认语言ID
, i0 I0 G- V' }; _/ ^7 A/ xGetUserDefaultLCID 取得当前用户的默认"地方"设置 ! ?+ Y( M8 M$ m0 e3 p* [
GetUserName 取得当前用户的名字 * ~* n. v9 d* V4 p7 j5 m
GetVersion 判断当前运行的Windows和DOS版本 ) f& K6 O% y3 |; G+ f+ J
GetVersionEx 取得与平台和操作系统有关的版本信息
" y6 g# O2 B0 L' j; C- RHideCaret 在指定的窗口隐藏插入符(光标)
1 f9 f9 t& |: [; N+ @$ xIsValidCodePage 判断一个代码页是否有效
M4 O& D0 @$ R! F* \IsValidLocale 判断地方标识符是否有效 $ J! D3 K- v! Z
keybd_event 这个函数模拟了键盘行动
/ A% t/ b/ S8 H1 oLoadKeyboardLayout 载入一个键盘布局
. {* E# [ X' u3 E) fMapVirtualKey 根据指定的映射类型,执行不同的扫描码和字符转换 9 h! X" W) {2 v( z8 ]7 P
MapVirtualKeyEx 根据指定的映射类型,执行不同的扫描码和字符转换
" Y5 k; N' S* QMessageBeep 播放一个系统声音。系统声音的分配方案是在控制面板里决定的
& x# O( ^" s% ?6 x. C% V& ^mouse_event 模拟一次鼠标事件
9 r: }/ k. m1 EOemKeyScan 判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态 : U. j f5 j* s, \6 w2 y/ y
OemToChar 将OEM字符集的一个字串转换到ANSI字符集 , F' P+ B o: c) A
SetCaretBlinkTime 指定插入符(光标)的闪烁频率 ( e& u) j: Q& x' N* }
SetCaretPos 指定插入符的位置 / D i3 o( w" _, B2 g
SetComputerName 设置新的计算机名
# \ [& J) O/ ?' O7 i# E9 @, m2 HSetCursor 将指定的鼠标指针设为当前指针 : i/ u- y. O3 z; Y; g
SetCursorPos 设置指针的位置 R/ o6 c- N- o$ N
SetDoubleClickTime 设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间 / R! k; u' }$ T4 W6 J
SetEnvironmentVariable 将一个环境变量设为指定的值 & I* W9 K7 N4 V5 M
SetKeyboardState 设置每个虚拟键当前在键盘上的状态
+ {4 C* ^9 m+ U7 m$ [" dSetLocaleInfo 改变用户"地方"设置信息
; x0 z6 P* V7 y# \6 H: rSetLocalTime 设置当前地方时间 0 [0 J4 W+ ]5 C: ^9 p
SetSysColors 设置指定窗口显示对象的颜色 8 j- o7 R; [# ]5 }) N
SetSystemCursor 改变任何一个标准系统指针
! L9 r0 D& J. G3 FSetSystemTime 设置当前系统时间
9 Y4 J9 m0 P/ Q* Z# F* k: }6 lSetSystemTimeAdjustment 定时添加一个校准值使内部系统时钟与一个外部的时钟信号源同步 . Q* `5 o' V5 U+ I, {* Y/ N5 F/ N- a
SetThreadLocale 为当前线程设置地方
5 y6 i% E6 G O, C: v" bSetTimeZoneInformation 设置系统时区信息 $ n+ H; l; u! e
ShowCaret 在指定的窗口里显示插入符(光标) * R. J- |' B( H2 o9 r
ShowCursor 控制鼠标指针的可视性
4 ~; G0 @. ]' s) y$ ]2 JSwapMouseButton 决定是否互换鼠标左右键的功能
( l6 j$ O) m- P! I5 ]5 [SystemParametersInfo 获取和设置数量众多的windows系统参数 6 }% k, u& e( O, i( K
SystemTimeToTzSpecificLocalTime 将系统时间转换成地方时间 8 a4 C' V9 b7 d6 m
ToAscii 根据当前的扫描码和键盘信息,将一个虚拟键转换成ASCII字符 ( f: B/ g; X& i
ToUnicode 根据当前的扫描码和键盘信息,将一个虚拟键转换成Unicode字符
- k9 t! V9 T% Q S; F& _ nUnloadKeyboardLayout 卸载指定的键盘布局
9 p( r n: n6 v3 [+ e# kVkKeyScan 针对Windows字符集中一个ASCII字符,判断虚拟键码和Shift键的状态
* f6 G/ P) j: r- ^4 x* L11. API之进程和线程函数 5 Z8 ~7 R: \8 g( L2 ?
CancelWaitableTimer 这个函数用于取消一个可以等待下去的计时器操作 ! Q$ N5 N. {7 S$ P7 C1 n, N( y
CallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用
* H h( N9 n) D8 i" pConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个命名管道连接 . [7 N- q4 y+ K# {; _
CreateEvent 创建一个事件对象
: E- \8 n0 {' JCreateMailslot 创建一个邮路。返回的句柄由邮路服务器使用(收件人) : ~/ b# G, ?& } C- J
CreateMutex 创建一个互斥体(MUTEX)
# Z( y; L) L6 i) YCreateNamedPipe 创建一个命名管道。返回的句柄由管道的服务器端使用 7 T! T8 ^6 x0 W
CreatePipe 创建一个匿名管道
. O9 Q4 S0 B/ a5 fCreateProcess 创建一个新进程(比如执行一个程序)
1 T' b& [ c0 S* @4 L: d4 DCreateSemaphore 创建一个新的信号机
0 h5 |+ y, u3 H% HCreateWaitableTimer 创建一个可等待的计时器对象
/ G6 j: u1 N5 E% L% B- {DisconnectNamedPipe 断开一个客户与一个命名管道的连接 3 s' {+ g c8 b
DuplicateHandle 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄
) o* w5 { ~6 ~# ^% eExitProcess 中止一个进程 ( R( \/ P3 G+ m! u- L0 S8 P, D9 p
FindCloseChangeNotification 关闭一个改动通知对象
1 U i1 U2 K) D' T! P8 eFindExecutable 查找与一个指定文件关联在一起的程序的文件名 / Z+ K) P _+ \
FindFirstChangeNotification 创建一个文件通知对象。该对象用于监视文件系统发生的变化
( N% r& j- g* m" m6 @4 l Q% h: B* fFindNextChangeNotification 重设一个文件改变通知对象,令其继续监视下一次变化
% F$ N. d0 d0 lFreeLibrary 释放指定的动态链接库
$ p: ]8 l* U/ y! @6 ]8 rGetCurrentProcess 获取当前进程的一个伪句柄 9 n% F( A; N3 P7 K' ^' @5 ?( B
GetCurrentProcessId 获取当前进程一个唯一的标识符
( k5 W* M2 R( j" H } [GetCurrentThread 获取当前线程的一个伪句柄 : l" |9 f# u l
GetCurrentThreadId 获取当前线程一个唯一的线程标识符 $ P- z# p$ Z% f$ \* L4 B7 y
GetExitCodeProces 获取一个已中断进程的退出代码
1 _- i9 O4 z! p9 zGetExitCodeThread 获取一个已中止线程的退出代码 ; t! S7 x- f7 A7 x
GetHandleInformation 获取与一个系统对象句柄有关的信息 ' r# v8 V. L" T' |0 t" k f
GetMailslotInfo 获取与一个邮路有关的信息 0 F( |% H8 [( b+ o$ ~
GetModuleFileName 获取一个已装载模板的完整路径名称 4 i* k1 l* T0 \" N/ t
GetModuleHandle 获取一个应用程序或动态链接库的模块句柄
6 A$ D# U1 Z4 K. x) h GetModuleHandleA(LPCSTR lpModuleName);
2 F5 y. u% _+ L" g2 b+ ^GetPriorityClass 获取特定进程的优先级别 / D9 D9 |* f0 X( U* |
GetProcessShutdownParameters 调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况 ' C7 G( Y$ {* u2 [8 M
GetProcessTimes 获取与一个进程的经过时间有关的信息
; i% v5 n6 Y$ ~$ N8 uGetProcessWorkingSetSize 了解一个应用程序在运行过程中实际向它交付了多大容量的内存 2 A% A0 }5 {& l9 E* I
GetSartupInfo 获取一个进程的启动信息 $ n1 w. ?( B/ P0 s! r% T
GetThreadPriority 获取特定线程的优先级别
0 K9 g0 O. @1 m1 K; |; b& AGetTheardTimes 获取与一个线程的经过时间有关的信息
/ s8 B4 w a5 ?' G4 F4 }GetWindowThreadProcessId 获取与指定窗口关联在一起的一个进程和线程标识符
0 A1 h) D6 G1 [& n4 iLoadLibrary 载入指定的动态链接库,并将它映射到当前进程使用的地址空间
3 p4 ]( Z/ x' C# i* a" J6 tLoadLibraryEx 装载指定的动态链接库,并为当前进程把它映射到地址空间 - P1 }) p# d- Y) U% z) z: {1 I
LoadModule 载入一个Windows应用程序,并在指定的环境中运行 7 K/ D3 X6 ^5 e: {! A2 u* q
MsgWaitForMultipleObjects 等侯单个对象或一系列对象发出信号。如返回条件已经满足,则立即返回
4 y; |% C* I4 J T6 \8 {SetPriorityClass 设置一个进程的优先级别 $ M3 h5 f& L& j! _. e4 ]
SetProcessShutdownParameters 在系统关闭期间,为指定进程设置他相对于其它程序的关闭顺序 / `0 N. {) n! \; J; r5 N
SetProcessWorkingSetSize 设置操作系统实际划分给进程使用的内存容量 i3 G& N8 K. ?8 y
SetThreadPriority 设定线程的优先级别
4 Q0 I2 I3 `5 rShellExecute 查找与指定文件关联在一起的程序的文件名 6 ~8 E# H8 ?1 \. W* Z& m
TerminateProcess 结束一个进程
5 G) Q: d+ o: J# A1 j( K; SWinExec 运行指定的程序
/ j: Y; a! s4 O# n" z( f12. API之控件与消息函数
8 H$ N' U1 F$ B! T' j$ p% o) ]AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小
! A$ N6 N2 m& J; @( E1 oAnyPopup 判断屏幕上是否存在任何弹出式窗口 : o: M. J) p5 S6 e, t
ArrangeIconicWindows 排列一个父窗口的最小化子窗口 " p4 N: H2 Z) u7 G
AttachThreadInput 连接线程输入函数
2 q% F5 e, y9 D+ UBeginDeferWindowPos 启动构建一系列新窗口位置的过程 3 a1 S& b L, J H1 i- y+ m( [! Y! ~
BringWindowToTop 将指定的窗口带至窗口列表顶部 1 V5 _- b. V/ c, f5 X
CascadeWindows 以层叠方式排列窗口 2 n9 l. n* u/ p
ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄
( Q. y1 B# r# I$ W7 ^* E* VClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标
: F5 n: q! _; ]1 E# [CloseWindow 最小化指定的窗口 6 y: R" A% M( ]/ r4 C# x
CopyRect 矩形内容复制 , }4 ?9 c' D ` `. a7 h
DeferWindowPos 该函数为特定的窗口指定一个新窗口位置
% p: Q( D" y, _4 I0 W" T6 a# f" yDestroyWindow 清除指定的窗口以及它的所有子窗口 7 O' B* f7 i8 {5 M7 d4 n( e
DrawAnimatedRects 描绘一系列动态矩形 ; h6 ~' K: W0 m0 x* L
EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入 9 D# V! X$ l4 Z
EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态 : x4 x4 A% O' u" h! @8 y9 x
EnumChildWindows 为指定的父窗口枚举子窗口
' ~1 j j5 P: FEnumThreadWindows 枚举与指定任务相关的窗口
+ r8 l2 `" t! z1 Z. F4 iEnumWindows 枚举窗口列表中的所有父窗口
. N$ q, R5 x# C+ s. U& l$ X. MEqualRect 判断两个矩形结构是否相同
/ b, e( H. |" t9 s& ?/ U9 c$ oFindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口 " M/ T. `- O/ h
FindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口
" B5 P1 \! \4 O7 x; NFlashWindow 闪烁显示指定窗口 ! ~( S" Q, ^9 P& O) B
GetActiveWindow 获得活动窗口的句柄 / `! z$ W2 h( \% M7 n& m
GetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收) ; t+ C6 z. r$ N/ N8 l) h- q- m
GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息 5 o, H# U2 A2 U5 V/ y" g/ v
GetClassLong 取得窗口类的一个Long变量条目
C' m8 x8 \- D' h0 CGetClassName 为指定的窗口取得类名 2 M# e/ Y1 r' [+ i- a0 Z
GetClassWord 为窗口类取得一个整数变量 ) T, c$ a5 R3 A4 X J
GetClientRect 返回指定窗口客户区矩形的大小 ( V% h, B4 M) m o' f5 ?3 |5 v
GetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄 4 a+ K/ h% |& D3 H+ \' m4 \( m. ~2 ?
GetFocus 获得拥有输入焦点的窗口的句柄 : b1 \% a2 F8 A- R; x
GetForegroundWindow 获得前台窗口的句柄 3 U0 k, U6 ?! n
GetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄 6 F7 `' l" U! F/ \3 z
GetParent 判断指定窗口的父窗口 $ q/ r: |9 h. o! z
GetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄
% q0 q9 \5 t! F; ~7 P/ ]GetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分 1 {; f- ^! c1 P6 k/ s- B- R
GetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系 + j& l. n( F& a J$ ^$ M+ |9 Q
GetWindowContextHelpId 取得与窗口关联在一起的帮助场景ID
" t% ?9 p. d" H$ O3 ?/ i( SGetWindowLong 从指定窗口的结构中取得信息
/ `1 z, t2 ~( @$ s iGetWindowPlacement 获得指定窗口的状态及位置信息
! B- T* ^, I- v$ U. F7 @GetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内
" H5 `+ }+ L" dGetWindowText 取得一个窗体的标题(caption)文字,或者一个控件的内容
6 }+ ]8 m4 ?6 m3 s! Y7 e ~GetWindowTextLength 调查窗口标题文字或控件内容的长短
4 p" h5 z# {; ]GetWindowWord 获得指定窗口结构的信息 ; \4 g$ X& x$ e; o
InflateRect 增大或减小一个矩形的大小 , P; }8 B3 c' P$ h: l9 ]
IntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集 3 Q1 i7 u! |( a
InvalidateRect 屏蔽一个窗口客户区的全部或部分区域 3 v$ ~. }( h1 p0 m: A: T5 a) n
IsChild 判断一个窗口是否为另一窗口的子或隶属窗口
5 ~& { c c7 `: N5 G- lIsIconic 判断窗口是否已最小化 * ~. a q) ]& \8 O; a9 m
IsRectEmpty 判断一个矩形是否为空
1 S1 n5 o4 w8 ~IsWindow 判断一个窗口句柄是否有效 ) q* o4 m; Y* U
IsWindowEnabled 判断窗口是否处于活动状态 $ F! c6 T; B: b t* ] E
IsWindowUnicode 判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字 6 K3 o) r3 h& N; f: v* U
IsWindowVisible 判断窗口是否可见 3 q8 T& X8 D f" Q3 s( }6 L
IsZoomed 判断窗口是否最大化
1 f! g2 w) g. ?LockWindowUpdate 锁定指定窗口,禁止它更新 & w8 x6 d, l% U
MapWindowPoints 将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统 5 e6 @6 s5 I2 c3 |& u: a8 p
MoveWindow 改变指定窗口的位置和大小
% | t2 e' G) x6 `/ ?3 v7 M( U& jOffsetRect 通过应用一个指定的偏移,从而让矩形移动起来
8 e1 k8 s) z& n6 X* FOpenIcon 恢复一个最小化的程序,并将其激活
2 \& b" \# v! M$ P0 \/ Z, n1 hPtInRect 判断指定的点是否位于矩形内部
# _4 O; w' s9 X- u( e; gRedrawWindow 重画全部或部分窗口
r% o; o3 B& w3 E3 j. DReleaseCapture 为当前的应用程序释放鼠标捕获
- Z# T2 i+ y7 e% z! HScreenToClient 判断屏幕上一个指定点的客户区坐标
8 G4 Q5 p( G0 L: U+ ]ScrollWindow 滚动窗口客户区的全部或一部分 & [. L" }* T. E" _, x5 n1 H# y8 e
ScrollWindowEx 根据附加的选项,滚动窗口客户区的全部或部分
$ Q6 j8 |) e+ B" {% N7 h* C1 SSetActiveWindow 激活指定的窗口
# z5 {# f( ^0 ^SetCapture 将鼠标捕获设置到指定的窗口 ( w6 i1 Q" v3 @7 u
SetClassLong 为窗口类设置一个Long变量条目
2 b$ U6 e; V4 i6 \SetClassWord 为窗口类设置一个条目
F/ J6 j/ M) RSetFocusAPI 将输入焦点设到指定的窗口。如有必要,会激活窗口 9 R0 N, B$ \6 l
SetForegroundWindow 将窗口设为系统的前台窗口
& e! N8 y2 G, f/ BSetParent 指定一个窗口的新父
% z6 N' e# {- \, t) ^SetRect 设置指定矩形的内容 4 i- \0 j# U7 M1 w/ g
SetRectEmpty 将矩形设为一个空矩形
5 f% V* _0 c. g0 HSetWindowContextHelpId 为指定的窗口设置帮助场景(上下文)ID
, ]9 s* p" P( WSetWindowLong 在窗口结构中为指定的窗口设置信息 - Y( @" w6 n' K: i- f5 n/ M
SetWindowPlacement 设置窗口状态和位置信息 ' |5 r( z: K! u5 e+ v4 F! Q# A
SetWindowPos 为窗口指定一个新位置和状态
& Y" |2 K/ Q* {$ M1 D. A4 p; vSetWindowText 设置窗口的标题文字或控件的内容 % n& A! T' |( W+ p4 G5 |3 b
SetWindowWord 在窗口结构中为指定的窗口设置信息
3 T! C* R3 O4 |ShowOwnedPopups 显示或隐藏由指定窗口所有的全部弹出式窗口 ( }8 \/ c2 R+ p( y4 V& Z
ShowWindow 控制窗口的可见性
8 _/ J8 l v0 F% M/ i" ~: [1 ?ShowWindowAsync 与ShowWindow相似
; _9 y f1 C( FSubtractRect 装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果 ! |5 ^' s, I7 x3 K
TileWindows 以平铺顺序排列窗口 5 z A0 f' p. B& m! Z7 G b
UnionRect 装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect联合起来的结果
/ c/ S% Z; n; Q7 [UpdateWindow 强制立即更新窗口 4 |. K0 a1 ]1 Q1 \, H4 u R# @
ValidateRect 校验窗口的全部或部分客户区
6 I$ `( X z( J. }& c! jWindowFromPoint 返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口
8 e7 T/ c: s, _高级音频函数—参看《VC++ 编程指南.chm》11.6+ E2 \/ m2 v9 S8 R3 a. a
Windows提供了三个特殊的播放声音的高级音频函数:MessageBeep、PlaySound和sndPlaySound。这三个函数可以满足播放波形声音的一般需要,但它们播放的WAVE文件(波形声音文件)的大小不能超过100KB,如果要播放较大的WAVE文件,则应该使用MCI服务。
! a# w( c+ F4 u( r* z BOOL MessageBeep(UINT uType);0 u( A0 M& ~5 s. d, I$ x4 r
该函数主要用来播放系统报警声音。系统报警声音是由用户在控制面板中的声音(Sounds)程序中定义的,或者在WIN.INI的[sounds]段中指定。# r! s" D5 b1 ?7 S& `2 b7 d- Y( f( J
参数uType说明了告警级,如下表所示。若成功则函数返回TRUE。: f7 X- q/ R% |, |5 P2 h
级别 / b) I. g3 K6 V5 D, l# q
| 描述 ( H, {& s7 B$ `6 {% T6 P+ y' i4 `, a
| -1 5 A6 J* e, v; G0 n3 g
| 从机器的扬声器中发出蜂鸣声。
; a& f! |. z" J6 I) B/ r | MB_ICONASTERISK
, W3 F( W# |2 |0 Y8 f | 播放由SystemAsterisk定义的声音。
' |0 f$ h9 ^, a( T6 F+ \ | MB_ICONEXCLAMATION / l- F+ i1 q5 j1 f
| 播放由SystemExclamation定义的声音。
/ S/ F! V; S; O) ^$ [4 m | MB_ICONHAND
4 e% i; t5 K8 a( o4 q6 \; Q& K | 播放由SystemHand定义的声音。 . @. }) w5 w4 Y4 s X) A
| MB_ICONQUESTION
% f% U4 K. Q( g6 o/ E5 v- R1 K) r | 播放由SystemQuestion定义的声音。 2 t9 e# c5 W( O9 j+ i6 W8 u$ H8 \
| MB_OK
. z; @& {. f; f9 A$ ] | 播放由SystemDefault定义的声音 9 ~3 E6 z: @, n% _
| BOOL PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);- E( C2 |4 M, [% b
参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。7 S! D& p9 n1 q! h B
参数hmod是应用程序的实例句柄,当播放WAV资源时要用到该参数,否则它必须为NULL。8 k2 R; A! C* e Q& \" t. |
参数fdwSound是标志的组合,如下表所示。若成功则函数返回TRUE,否则返回FALSE。
d2 W% I! x( |2 e标志 " `3 ?+ _: b. J% g
| 含义 3 O/ S+ o/ _1 M! Z
| SND_APPLICATION & V+ W5 E0 w0 j7 n
| 用应用程序指定的关联来播放声音。 4 C" e* {- g h
| SND_ALIAS
% d" w6 t% O) M% V | pszSound参数指定了注册表或WIN.INI中的系统事件的别名。 ' `" b: ^# ]; J R9 ^. t
| SND_ALIAS_ID
1 M/ d% H. ?9 F0 E5 I | pszSound参数指定了预定义的声音标识符。 0 d3 h+ u4 c: c! v/ b
| SND_ASYNC 8 L3 L% Z' s& f9 l
| 用异步方式播放声音,PlaySound函数在开始播放后立即返回。
- W i' [) x) `; U. n! C0 L! a | SND_FILENAME
) B$ h8 d7 o" I2 x L/ ` | pszSound参数指定了WAVE文件名。 " o+ P" u; f+ [! i7 }
| SND_LOOP
- x1 H- R, e Z | 重复播放声音,必须与SND_ASYNC标志一块使用。
) n! m. F# ?9 r; O+ ^, ^: ?! { | SND_MEMORY
0 U. J5 j3 ]! P) Z4 u3 w+ A: b | 播放载入到内存中的声音,此时pszSound是指向声音数据的指针。
5 V- x Y! ? m! n1 |+ v- k) C/ {5 S | SND_NODEFAULT 4 Z/ M5 ]& C7 ^3 D, E
| 不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。
( L) i& M) g8 f) N& A9 `* b | SND_NOSTOP
) d& F1 R9 q# G8 S" p | PlaySound不打断原来的声音播出并立即返回FALSE。 2 T) L0 b1 D \2 N" n2 n, R
| SND_NOWAIT 8 E8 @' u: K: m. T( F, T7 \" s
| 如果驱动程序正忙则函数就不播放声音并立即返回。 % u7 s! T k2 \3 n+ j% Z: f* T* f f
| SND_PURGE
* y. @. Z$ r/ g, A3 i) a# v | 停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。 , \6 N& @2 u2 z, u4 [& ^ A+ B
| SND_RESOURCE $ @" E0 n4 N! J8 _) Q
| pszSound参数是WAVE资源的标识符,这时要用到hmod参数。
; [1 d4 p9 a+ t, C | SND_SYNC
% H( `* K, E* H: W+ t4 J. j | 同步播放声音,在播放完后PlaySound函数才返回。 - R) i! P# P& v) G2 Y
| BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound);
2 n% J. L1 ?9 r/ }1 @' f: U" Q1 F函数sndPlaySound的功能与PlaySound类似,但少了一个参数。除了不能指定资源名字外,参数lpszSound与PlaySound的是一样的。2 M5 F$ d3 ]% z5 J( ]7 {
MCI播放
7 `1 ^' j% G; \: k8 l. k& z( t所有的MCI命令字符串都是通过多媒体API函数mciSendString传递给MCI的,该函数的声明为:' F# z, N% W. g' l- I
MCIERROR mciSendString(
. d0 L% G" a$ bLPCTSTR lpszCommand, //MCI命令字符串
8 `& v1 a$ n: T8 {: W: C; ZLPTSTR lpszReturnString, //存放反馈信息的缓冲区
% h( \# |% R/ ~! f! n2 R/ |UINT cchReturn, //缓冲区的长度4 h/ V# e8 E- X4 q9 z
HANDLE hwndCallback //回调窗口的句柄,一般为NULL
- S' `: f6 t' \4 N- q1 y1 ]; e); //若成功则返回0,否则返回错误码。" `" i/ @' Q, V
该函数返回的错误码可以用mciGetErrorString函数进行分析,该函数的声明为:/ f* ^; x9 q- A6 p/ a. ]- k
BOOL mciGetErrorString(
2 i2 B8 O/ U# {1 n" ?3 g2 a, aDWORD fdwError, //函数mciSendString或mciSendCommand返回的错误码* i& o7 f! o, h! `+ J! t
LPTSTR lpszErrorText, //接收描述错误的字符串的缓冲区
- V: i; Z" O" FUINT cchErrorText //缓冲区的长度1 v ]4 A3 a% o- O9 D6 S
);
$ S4 F7 |$ T; E1 z |
|