|
原文:http://www.cnblogs.com/cltsq/articles/api.html9 `. J* i! J: D
1. API之网络函数
, t) S& p6 Q) vWNetAddConnection 创建同一个网络资源的永久性连接 6 R+ X/ t- z# ~. K7 I
WNetAddConnection2 创建同一个网络资源的连接
) d6 ], W* k. y+ L* oWNetAddConnection3 创建同一个网络资源的连接 . v2 d, S3 W' U c# O4 c( `
WNetCancelConnection 结束一个网络连接
+ L9 J0 G F% m. U- I1 B- F. V1 FWNetCancelConnection2 结束一个网络连接 + q% u V) t2 D6 R
WNetCloseEnum 结束一次枚举操作 ( [- L* q: x8 e' l. Z0 g7 M
WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接
3 }3 D; ]$ Q) a) j3 c! v+ w( dWNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 ) W, V+ f0 c$ \' e
WNetEnumResource 枚举网络资源 ) f }9 `0 I, n# G# {2 V2 {4 y
WNetGetConnection 获取本地或已连接的一个资源的网络名称 9 K% v, \! b4 O
WNetGetLastError 获取网络错误的扩展错误信息
6 i( k! {' K# \% G2 nWNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称
9 a E/ p6 v. s" HWNetGetUser 获取一个网络资源用以连接的名字
5 h. L0 N0 C' G- ]. eWNetOpenEnum 启动对网络资源进行枚举的过程
4 m' E* V5 z' w% z4 ~& S; L7 Y$ p2. API之消息函数 $ y2 x( w2 D& P6 P5 z
BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口
- S& {$ |1 c9 f- q+ \GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置
% W# p2 S. f! n1 eGetMessageTime 取得消息队列中上一条消息处理完毕时的时间
- Q7 z& r) q# x/ T4 OPostMessage 将一条消息投递到指定窗口的消息队列
" G$ b8 X. g f3 ^PostThreadMessage 将一条消息投递给应用程序
c" K$ M' i3 F, ]& p5 [RegisterWindowMessage 获取分配给一个字串标识符的消息编号
3 O8 h# C1 c5 Z' eReplyMessage 答复一个消息
4 h* O: K( n3 Y6 R( h4 n& PSendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口 5 O" T2 W8 U& Z8 m# v9 p5 q
SendMessageCallback 将一条消息发给窗口
, w( `) U$ v. X2 Z, t. ~SendMessageTimeout 向窗口发送一条消息 $ T; z6 A: E! ~, ?8 L
SendNotifyMessage 向窗口发送一条消息
; I+ w) @4 W- w. [3. API之文件处理函数
% w8 |: ?1 v9 s' R) r _CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 7 K. r2 K& j5 z8 N5 m7 Z# o4 B9 D( K$ D
CompareFileTime 对比两个文件的时间
- B. f B- S; y1 [# E ACopyFile 复制文件 5 _8 O6 l( I/ h$ _, a" L
CreateDirectory 创建一个新目录
* K! w' v( `" g( F+ uCreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台 # Z4 C, j# `* V3 k
CreateFileMapping 创建一个新的文件映射对象
; B( Q! S$ U$ W% L* FDeleteFile 删除指定文件
' M& t4 ~4 a4 SDeviceIoControl 对设备执行指定的操作 ) S% q! m) E: T( l
DosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值
g. g' W# z& J8 d* U) q- O' ?' \# M0 w, \FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值
" F7 M) T/ F- V4 Z) QFileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间
) g' G+ d( F, \. J% JFileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构 4 S8 j* f$ P/ v7 b; h& f4 K. } ^
FindClose 关闭由FindFirstFile函数创建的一个搜索句柄 ' X! ~# ^' C7 L5 F( c, K
FindFirstFile 根据文件名查找文件 8 t& X4 v& y2 N1 k: F) r2 ~
FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件
$ a; \3 P2 k \/ K! yFlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区
1 e- l* P+ k( ]" f7 [; E; [FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘
; F& u: g% V; @GetBinaryType 判断文件是否可以执行 $ ~6 j8 D; B. g: y6 _- M7 T. i# ~
GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数
5 P! b6 [5 N- j, SGetCurrentDirectory 在一个缓冲区中装载当前目录
1 H8 S+ U, ~6 i/ n# T( Q& {& Y7 sDWORD GetCurrentDirectory(
; W. n6 a; }: Y# _% T DWORD nBufferLength, //缓冲区大小
8 r/ t. e: N$ [5 R g4 m+ ]7 V. l3 p LPSTR lpBuffer //缓冲区的首地址. |8 i% m! ], y8 W
);( E/ K. ~$ F5 E% j+ }. ? z' v
GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量
[* t, F( @/ q* `8 U; C1 _0 @GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息
* t! H- d' o" x+ }GetDriveType 判断一个磁盘驱动器的类型
1 e: [& r+ N {8 xGetExpandedName 取得一个压缩文件的全名
4 G: G$ f4 C# e" V& O7 IGetFileAttributes 判断指定文件的属性 0 `2 ^3 a% I- J' S' p' u$ i
GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制
& c6 p3 r0 u6 G! S+ PGetFileSize 判断文件长度
4 C( [- Z. L) b( yGetFileTime 取得指定文件的时间信息
' U% `5 U/ m9 x+ `. f- U1 O5 ^GetFileType 在给出文件句柄的前提下,判断文件类型 ! H1 C% W# h) G9 K
GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息 5 g# l. {' B9 v/ m
GetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区
0 H2 f, [5 b' U2 o, {GetFullPathName 获取指定文件的完整路径名
: F2 q) k! B& D* aGetLogicalDrives 判断系统中存在哪些逻辑驱动器字母 ; S6 X! ]7 ^) W7 W" Y: F* [ K
GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径
; f; m9 e+ }' S' Y3 I+ w' FGetOverlappedResult 判断一个重叠操作当前的状态
Q3 ^8 P/ n4 g( P0 }GetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值 0 Y4 p2 [8 N g# @ A
GetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表
6 |3 n, a+ W* EGetPrivateProfileString 为初始化文件中指定的条目取得字串
( C; G* P" ~% k2 f5 y2 d7 ?' ~1 ~GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值
# l% x! j0 C" W# K6 m8 r5 W+ {GetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表
2 l5 I, i0 C5 H3 _5 X! e* ZGetProfileString 为win.ini初始化文件中指定的条目取得字串 + V( d. I& Y9 W% r* E
GetShortPathName 获取指定文件的短路径名
|* U i1 v$ J* I1 p$ MGetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名 4 k& N' Q K% n0 i6 M4 b
GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用 6 r4 c7 q D4 x9 l$ j( P
GetTempPath 获取为临时文件指定的路径 5 f& ?9 Y4 U( ~- b
GetVolumeInformation 获取与一个磁盘卷有关的信息
+ C, j' r+ }( x8 t l) }GetWindowsDirectory 获取Windows目录的完整路径名 {1 S8 `+ t' X% }' F
hread 参考lread . ^5 }6 i ?$ s
hwrite 参考lwrite函数 3 @, {/ ~ H5 Z
lclose 关闭指定的文件 , V6 G0 N c7 `2 i" d/ d
lcreat 创建一个文件
( J5 z7 {( r7 U) t9 y' Rllseek 设置文件中进行读写的当前位置 ; ~5 z2 r7 ^( S8 Q. _( W( ~ D. ]1 d
LockFile 锁定文件的某一部分,使其不与其他应用程序共享
4 `! X a' N6 f- m; r2 N: g/ RLockFileEx 与LockFile相似,只是它提供了更多的功能 ( z1 t9 n- }' C a4 f" L& s
lopen 以二进制模式打开指定的文件
3 X% X* W, }. ^: v S. mlread 将文件中的数据读入内存缓冲区 : N, g e) Y6 s
lwrite 将数据从内存缓冲区写入一个文件
# u- O. m0 X' M' ZLZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件
4 d& z# D9 _1 }( k$ NLZCopy 复制一个文件 8 }4 A0 N+ q! H. v- D
LZInit 这个函数用于初始化内部缓冲区 ; c1 t& G, Q: E/ P7 M4 x
LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件 4 w( n& K8 E& ^( e6 w; A! E
LZRead 将数据从文件读入内存缓冲区 5 N- j5 d! }4 F6 D
LZSeek 设置一个文件中进行读写的当前位置 3 F9 ^, l3 e4 c6 l3 f& x
MapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间 / _- u+ o6 `. [3 P' i4 t( }( q7 r
MoveFile 移动文件 . Q+ D. G T7 }0 Y1 T
OpenFile 这个函数能执行大量不同的文件操作 8 a m+ k* x- @0 ~5 v6 z$ f! O" F6 o
OpenFileMapping 打开一个现成的文件映射对象
6 t' L, R; G+ V: ?/ F8 R7 iQueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况 - o+ a7 e( r: k! O' ~. t7 Y \( |. L
ReadFile 从文件中读出数据
n4 H0 e7 K0 FReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调 * l% p* r4 ?) Q
RegCloseKey 关闭系统注册表中的一个项(或键)
3 R' d% [/ I; a; w: V" K% ?RegConnectRegistry 访问远程系统的部分注册表
. O3 {& N( ~# W! J nRegCreateKey 在指定的项下创建或打开一个项
. [& e$ m" O" ~4 r% v: mRegCreateKeyEx 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数
" [% @2 { ]4 |% _0 uRegDeleteKey 删除现有项下方一个指定的子项 % m* O a4 b" }0 F) B
RegDeleteValue 删除指定项下方的一个值 * f* _8 z5 s5 a8 }
RegEnumKey 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx
: a. T2 R1 d' p, R7 tRegEnumKeyEx 枚举指定项下方的子项 Y# v; W* E! v4 X* n
RegEnumValue 枚举指定项的值
: Y$ `8 d! ^, b9 |& {; BRegFlushKey 将对项和它的子项作出的改动实际写入磁盘 3 T, ~* ~/ H1 P( i% l6 f$ i. D1 R
RegGetKeySecurity 获取与一个注册表项有关的安全信息 5 }: G% ] [2 T0 B0 d7 L5 N% t
RegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息 ' \' h% g: S3 A
RegNotifyChangeKeyValue 注册表项或它的任何一个子项发生变化时,用这个函数提供一种通知机制 ) X. _ }" ^2 |! t+ r
RegOpenKey 打开一个现有的注册表项 ! \( M1 Y3 o7 d- g4 {( ^0 r
RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数 ' e" G* x7 @& T8 s, F
RegQueryInfoKey 获取与一个项有关的信息 & g" i4 [& V* c8 [
RegQueryValue 取得指定项或子项的默认(未命名)值 0 h" k+ T4 a* G* o- c8 S8 {% J
RegQueryValueEx 获取一个项的设置值
* f/ g% C! v0 l0 `6 YRegReplaceKey 用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息
% V" i1 g. {8 f* O$ g$ \RegRestoreKey 从一个磁盘文件恢复注册表信息
% m' O/ t9 z7 H/ URegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件 & o1 q) ^1 z$ n
RegSetKeySecurity 设置指定项的安全特性 ' W0 i# x: i& {) }% M+ ^
RegSetValue 设置指定项或子项的默认值 5 W/ I% M- s4 C" ?/ F
RegSetValueEx 设置指定项的值
1 i! I" f7 F4 p, }- k6 G. SRegUnLoadKey 卸载指定的项以及它的所有子项 - N& Z4 |5 N: Q, }4 K* o
RemoveDirectory 删除指定目录 , b5 _" \+ n8 F1 Q
SearchPath 查找指定文件
9 P' Z0 o. @9 L0 {1 L8 ySetCurrentDirectory 设置当前目录 7 k8 m: a: K4 w" U* J6 V; c
SetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾 ( v3 t. X+ C4 X. C
SetFileAttributes 设置文件属性 / G5 V1 z3 t! @$ N( m7 V
SetFilePointer 在一个文件中设置当前的读写位置 $ p4 p( I/ v |1 j: k5 ^ Q8 r
SetFileTime 设置文件的创建、访问及上次修改时间
2 d; c* a3 t s. }, K* y1 ?) ^SetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果
, `/ `' }7 B/ `SetVolumeLabel 设置一个磁盘的卷标(Label)
* A# M& I. j0 w. }# x# u i; cSystemTimeToFileTime 根据一个FILETIME结构的内容,载入一个SYSTEMTIME结构
- F( _: {7 L9 b* ~UnlockFile 解除对一个文件的锁定
; }7 X* L( l; N6 ^3 \! _UnlockFileEx 解除对一个文件的锁定 & z% U5 V ]; f! z i1 v
UnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射 ) ~! u7 R1 g% P9 Y
VerFindFile 用这个函数决定一个文件应安装到哪里
* K) n/ a( T' W9 @1 k$ QVerInstallFile 用这个函数安装一个文件
& V+ X: p! ^. _+ P1 }VerLanguageName 这个函数能根据16位语言代码获取一种语言的名称 " _0 ~( W# k" E: H) w
VerQueryValue 这个函数用于从版本资源中获取信息
1 q* w1 Y3 L$ S- N, VWriteFile 将数据写入一个文件
. S1 d' p& C$ I8 QWriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调 ( E2 T+ J: q& s% I9 _7 v6 e
WritePrivateProfileSection 为一个初始化文件(.ini)中指定的小节设置所有项名和值
# h% |. n- r) P" Z* G. h6 C8 w1 HWritePrivateProfileString 在初始化文件指定小节内设置一个字串 / ?5 G& Y" d4 F7 [3 G) p0 @
WriteProfileSection 为Win.ini初始化文件中一个指定的小节设置所有项名和值 ) t+ Y b; t4 z/ ^- R2 g: @
WriteProfileString 在Win.ini初始化文件指定小节内设置一个字串
3 `8 e- l- ]6 z4. API之打印函数
L" b6 O8 J- [! u% r5 GAbortDoc 取消一份文档的打印 ' |% Y+ w0 x N! x; u
AbortPrinter 删除与一台打印机关联在一起的缓冲文件
; [2 s+ ~& |( i0 xAddForm 为打印机的表单列表添加一个新表单 ; n0 J0 J# p5 C' j
AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号
& F$ `$ ?* C2 [& {3 `2 [AddMonitor 为系统添加一个打印机监视器 : l1 X+ ?, T# R3 J# Q# _! I
AddPort 启动"添加端口"对话框,允许用户在系统可用端口列表中加入一个新端口 % O2 O; t9 T6 v" B+ e
AddPrinter 在系统中添加一台新打印机 $ N9 C# r5 `0 w6 {$ H8 F
AddPrinterConnection 连接指定的打印机
- D" ` d0 _: C! B% C5 LAddPrinterDriver 为指定的系统添加一个打印驱动程序
3 e! _3 |; Q' k7 o( b: \2 y) ZAddPrintProcessor 为指定的系统添加一个打印处理器 6 M4 I1 w4 f E. h! l( Q
AddPrintProvidor 为系统添加一个打印供应商 & b+ p! r9 s: e& ]5 Y3 ~4 A
AdvancedDocumentProperties 启动打印机文档设置对话框
% [# V# X" J. ^0 bClosePrinter 关闭一个打开的打印机对象
$ k) p! [0 N CConfigurePort 针对指定的端口,启动一个端口配置对话框
& w, K" u3 y" ~5 J6 A5 t. n9 i( bConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接
! s! }6 P5 H& eDeleteForm 从打印机可用表单列表中删除一个表单
. _8 D( h% s3 l8 T! K- ^5 iDeleteMonitor 删除指定的打印监视器
1 ^* k/ t% a4 N$ E7 u+ [DeletePort 启动"删除端口"对话框,允许用户从当前系统删除一个端口
. [6 w4 f9 f4 a$ ]1 Q2 FDeletePrinter 将指定的打印机标志为从系统中删除 ! P5 I9 }2 L* U/ s9 ]
DeletePrinterConnection 删除与指定打印机的连接 / `; {% T/ b8 _% O) X2 c0 v
DeletePrinterDriver 从系统删除一个打印机驱动程序
7 P, p6 P, n; O4 Q9 g$ xDeletePrintProcessor 从指定系统删除一个打印处理器 ; t- ~ a1 @- ?5 o3 V! T& w
DeletePrintProvidor 从系统中删除一个打印供应商
- K% B- a7 E; B" F+ d, H& m% wDeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息
$ `* x4 g+ S7 S2 T1 @, DDocumentProperties 打印机配置控制函数 6 K9 }6 g$ \( r3 @: @
EndDocAPI 结束一个成功的打印作业 ' y& I7 `6 Y4 D0 O, P' l% @
EndDocPrinter 在后台打印程序的级别指定一个文档的结束 1 I, ~3 h) |, [3 c a1 U! Z) s% p
EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 1 e3 q B; q4 {8 o' J
EndPagePrinter 指定一个页在打印作业中的结尾 ! E& G' R: U M+ A
EnumForms 枚举一台打印机可用的表单 , I& p8 U* h: E& [
EnumJobs 枚举打印队列中的作业
# i7 w+ c0 Y) k! _0 Z0 lEnumMonitors 枚举可用的打印监视器 0 L7 q4 t0 r5 P: {( a7 G
EnumPorts 枚举一个系统可用的端口 / f1 \; g9 B: F: l! m0 _, H" f
EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 / ~% L* w$ ^6 ~9 z3 U1 w$ q* P
EnumPrinters 枚举系统中安装的打印机
- @2 m2 B6 C5 \: iEnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 0 W F# E5 e' \& b
EnumPrintProcessors 枚举系统中可用的打印处理器 # y7 \0 U/ q! @- f
Escape 设备控制函数
( J( U& C" u! W7 PFindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 8 D- F7 \; w; [$ ?; f8 D
FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化
( W: g" e _9 u eFindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 : B" I5 H9 Z9 G( F! d8 ]
FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区
- f4 f+ S3 @( O- P" y5 i( x2 R9 S+ j1 FGetForm 取得与指定表单有关的信息 9 N+ @$ X& Z$ L0 o( ]7 f
GetJob 获取与指定作业有关的信息 8 @) T/ a7 S9 g; |. N, l" W, q
GetPrinter 取得与指定打印机有关的信息 $ F4 y# G5 J+ N* k. I* @
GetPrinterData 为打印机设置注册表配置信息
5 V, M, S: l _3 g- nGetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息
/ j2 b ~' u) m7 l- x* RGetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么
6 d$ T. A) y S) F* A* GGetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录
0 R2 o' t" h% M) j/ y7 I* L5 iOpenPrinter 打开指定的打印机,并获取打印机的句柄
# D+ H' V" G2 l7 j: d' lPrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框
7 _7 S+ }! p9 z! OPrinterProperties 启动打印机属性对话框,以便对打印机进行配置
. ?( j2 D1 n! g0 A. L9 OReadPrinter 从打印机读入数据 . E! P- v' @# X h; m$ g1 @% E/ [
ResetDC 重设一个设备场景
) |* g" b6 W: [ResetPrinter 改变指定打印机的默认数据类型及文档设置 , P: `, V3 c: a6 C. k% h
ScheduleJob 提交一个要打印的作业
: n8 ?0 o) g0 j, r& m9 ]SetAbortProc 为Windows指定取消函数的地址 5 m+ S5 \4 ? @
SetForm 为指定的表单设置信息
6 {0 z. U; |8 z5 B* [+ r7 RSetJob 对一个打印作业的状态进行控制 ; {6 e% b& a) ~$ @: B' a8 v6 c
SetPrinter 对一台打印机的状态进行控制
/ _8 H( q; c/ y$ {$ P- r* gSetPrinterData 设置打印机的注册表配置信息
( F* E% u6 C1 Z3 tStartDoc 开始一个打印作业 - N( b0 h6 T" w2 K7 e* C
StartDocPrinter 在后台打印的级别启动一个新文档 e0 v5 | ?& W2 f& h, O
StartPage 打印一个新页前要先调用这个函数 $ ?) s" w1 y/ B- |8 G' Y
StartPagePrinter 在打印作业中指定一个新页的开始
' m7 Q4 K' S9 m$ i# ~, J& \6 aWritePrinter 将发送目录中的数据写入打印机 ! k5 r* ]$ z7 d6 P& V& {
5. API之文本和字体函数 $ R4 R; s, o- Q. Z
AddFontResource 在Windows系统中添加一种字体资源 & o* l! s7 A7 p O; c
CreateFont 用指定的属性创建一种逻辑字体 6 v) ]& i7 Z3 z6 C, H
CreateFontIndirect 用指定的属性创建一种逻辑字体
4 ]9 U+ j3 }4 Q' H4 VCreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统
4 `" J Q5 h* X+ r4 {, S7 xDrawText 将文本描绘到指定的矩形中
7 E! h" n, _' e1 j' uDrawTextEx 与DrawText相似,只是加入了更多的功能 5 o/ k5 J R. P0 J9 a1 [4 t3 Z
EnumFontFamilies 列举指定设备可用的字体 / G6 s/ n4 p0 }, U i: e
EnumFontFamiliesEx 列举指定设备可用的字体
) Z0 P. a0 l9 b8 g1 r8 REnumFonts 列举指定设备可用的字体 4 ]9 e5 Y, U# Q/ V
ExtTextOut 经过扩展的文本描绘函数。也请参考SetTextAlign函数 0 S7 m. Y4 O" {" R
GetAspectRatioFilterEx 用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小
/ B' ?" R! J% M2 U5 Z$ OGetCharABCWidths 判断TureType字体中一个或多个字符的A-B-C大小 7 Z( H9 G+ V1 W" D3 u: S
GetCharABCWidthsFloat 查询一种字体中一个或多个字符的A-B-C尺寸 4 Z+ a7 o$ Q- }
GetCharacterPlacement 该函数用于了解如何用一个给定的字符显示一个字串
/ E, l& T. p# S( p3 JGetCharWidth 调查字体中一个或多个字符的宽度 % ~3 a8 J, L) \* E
GetFontData 接收一种可缩放字体文件的数据
+ q1 v1 r% Q* TGetFontLanguageInfo 返回目前选入指定设备场景中的字体的信息
) t5 {5 ^5 i$ \1 a, d; ]- V+ WGetGlyphOutline 取得TureType字体中构成一个字符的曲线信息
! ~& O) k4 @' z2 x$ `7 vGetKerningPairs 取得指定字体的字距信息
c r' ^: O8 s! t. k$ t+ wGetOutlineTextMetrics 接收与TureType字体内部特征有关的详细信息
J9 g* V1 ~! H0 q- j* S, }GetRasterizerCaps 了解系统是否有能力支持可缩放的字体 . f: k9 \1 n! s! e B: S- p
GetTabbedTextExtent 判断一个字串占据的范围,同时考虑制表站扩充的因素
- i9 f- }) n( D6 X" j. wGetTextAlign 接收一个设备场景当前的文本对齐标志 / ~! I, S) ]* N. p9 p# V1 o: |
GetTextCharacterExtra 判断额外字符间距的当前值 ' R w8 d' `2 N K" k+ H: J# Y
GetTextCharset 接收当前选入指定设备场景的字体的字符集标识符 ' I! ?6 z8 j3 Y/ X3 q+ T
GetTextCharsetInfo 获取与当前选定字体的字符集有关的详细信息 : {& ]1 m& l7 G) e. t" D% \
GetTextColor 判断当前字体颜色。通常也称为"前景色" ! T( g' d) W; S# H7 A! a
GetTextExtentExPoint 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息 0 S% t7 m% n. o" E
GetTextExtentPoint 判断一个字串的大小(范围) M$ j$ R' z& u8 T4 _
GetTextFace 获取一种字体的字样名
( C( R2 w4 E g3 ^+ W7 A! cGetTextMetrics 获取与选入一种设备场景的物理字体有关的信息
7 r# a4 V' V. k e6 Y% TGrayString 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态
( D% o: ? R6 R9 w4 mPolyTextOut 描绘一系列字串
6 x7 V2 J) p# y, `4 ]4 H6 HRemoveFontResource 从Windows系统中删除一种字体资源
& [/ d; l, {5 T# `SetMapperFlags Windows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体 : \6 I X% V4 i' O6 _: Y& @- O5 J
SetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置 ' a' }& A! S7 w1 { b" d) Y
SetTextCharacterExtra 描绘文本的时候,指定要在字符间插入的额外间距
% o) a2 h+ d) C3 ~SetTextColor 设置当前文本颜色。这种颜色也称为"前景色"
3 ~6 t3 k z1 [0 o0 D: V: ]* U5 [SetTextJustification 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理 4 K! s$ U# m$ ]; n
TabbedTextOut 支持制表站的一个文本描绘函数 1 _4 p3 R+ w$ N1 b/ k) `# |
TextOut 文本绘图函数 1 s, m3 E$ ?$ ^9 \
WINGDIAPI BOOL WINAPI TextOut(/ I2 _& h( k& T
HDC, //输出设备
( b- T. i {9 a+ O& W) b; R/ Vint, //输出的横坐标2 I% t: F) \8 T; l' N* u% G6 q. r
int, //纵坐标8 {3 _% l- @7 `& v
LPCSTR, //输出的文本str
7 I9 Y5 s% n5 Z6 M& T5 [- F! uint); //文本的长度:lstrlen(str); Y' W' Y2 B! I: g4 g. }1 ~
6. API之菜单函数
7 E# Y0 X" x) gAppendMenu 在指定的菜单里添加一个菜单项
, j3 ^7 ]+ r$ m; e2 fCheckMenuItem 复选或撤消复选指定的菜单条目
" b3 U$ Z* Y, |CheckMenuRadioItem 指定一个菜单条目被复选成"单选"项目 ; _( X5 \4 z' U9 m8 C3 ?
CreateMenu 创建新菜单 ! r& J& ?; ]% M6 G5 H* F
CreatePopupMenu 创建一个空的弹出式菜单 & v; n( S! e7 C* P: }5 P
DeleteMenu 删除指定的菜单条目
9 Z4 K2 Y. o( R) Q) ?DestroyMenu 删除指定的菜单 3 H& t% N% C% U/ k$ H ^. D
DrawMenuBar 为指定的窗口重画菜单
4 _" U$ x: e/ GEnableMenuItem 允许或禁止指定的菜单条目
* _1 b% |# |" F- e4 rGetMenu 取得窗口中一个菜单的句柄
3 ?3 }1 c6 f6 X: o5 ?+ {7 X+ [2 t8 o. cGetMenuCheckMarkDimensions 返回一个菜单复选符的大小
( V9 M% R0 F* x0 I9 H! U' W: L, t& H# sGetMenuContextHelpId 取得一个菜单的帮助场景ID 1 J- ]' D2 f; i9 F
GetMenuDefaultItem 判断菜单中的哪个条目是默认条目 % e$ E& k- ?* J# E3 Y! Q3 Z$ r
GetMenuItemCount 返回菜单中条目(菜单项)的数量
: W5 |8 Y- g5 o! sGetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID / _; ?9 _# f- D+ k' H- J" q! V: \' }
GetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息 4 q1 Y, r7 l7 Q3 V `3 t
GetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息
: x( `& h! Q5 eGetMenuState 取得与指定菜单条目状态有关的信息
0 z0 y9 Q! T: V6 z/ ?GetMenuString 取得指定菜单条目的字串
# S# p$ j) r9 x: l! K8 `GetSubMenu 取得一个弹出式菜单的句柄,它位于菜单中指定的位置 ( Y' E% l. D/ @. t; ?) E
GetSystemMenu 取得指定窗口的系统菜单的句柄
4 |/ ^1 ~6 m6 ~# rHiliteMenuItem 控制顶级菜单条目的加亮显示状态 ' P+ e& q; l) h4 k( A# R
InsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动
; x. f, g5 O: P |+ \8 cInsertMenuItem 插入一个新菜单条目
& C; z$ I x5 t' _* w4 [% Q) ]3 R3 xIsMenu 判断指定的句柄是否为一个菜单的句柄 # a* D+ ]+ C4 ]6 W q; [
LoadMenu 从指定的模块或应用程序实例中载入一个菜单
) }$ U9 E5 P5 x9 d: cLoadMenuIndirect 载入一个菜单 & u6 n- ~7 R9 Y. m5 d
MenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点 " ]4 m: e! Z4 X
ModifyMenu 改变菜单条目 7 f# J* B/ T9 g% p& D# s. l& J
RemoveMenu 删除指定的菜单条目 ; o) Y1 e. ?. B. z$ S3 p1 T7 M
SetMenu 设置窗口菜单 , c W$ x7 r. Y* ?
SetMenuContextHelpId 设置一个菜单的帮助场景ID
- a+ T, | S& xSetMenuDefaultItem 将一个菜单条目设为默认条目 3 k1 h9 x8 f2 M, E+ ~2 {
SetMenuItemBitmaps 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√)
& X0 G; I" o0 b. OSetMenuItemInfo 为一个菜单条目设置指定的信息
+ l& M$ y7 K7 a& Z- S2 |TrackPopupMenu 在屏幕的任意地方显示一个弹出式菜单
2 l, }, J; G: g; @TrackPopupMenuEx 与TrackPopupMenu相似,只是它提供了额外的功能 % f" G7 g- f: a6 P' n: s
7. API之位图、图标和光栅运算函数
6 g, A2 g) W4 m: h7 FBitBlt 将一幅位图从一个设备场景复制到另一个
: r8 Q: I( F: O4 @7 m WINGDIAPI BOOL WINAPI BitBlt(
4 U E% G6 ^0 |" D* N& X, tHDC, //目标HDC9 Z- f. ^* Z) O; H0 F* ]5 d
int, //X10 Q, m" S ]( k* Q% W
int, //Y1
# b# H% ]$ }' R1 {' n! j, I" f( Y' ^int, //width ~4 ^- Z) q* f
int, //height( n- n6 x7 c+ `* k
HDC, //源HDC
2 E+ }* U" R: }+ J7 t$ `int, //右边的距离
! b+ P6 v' l4 _' J; }) Vint, //??
8 U; E- ?# |# A5 oDWORD); //拷贝方式:SRCCOPY|SRCPAINT|SRCAND|SRCINVERT|RCERASE|NOTSRCCOPY|NOTSRCERASE|MERGECOPY|MERGEPAINT|
1 C8 I/ O" |! L+ t1 b) v) y+ hPATCOPY|PATPAINT|PATINVERT|DSTINVERT|BLACKNESS|WHITENESS
0 ?* |9 I0 \* c ^CopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序 : D* X2 B' Q/ _( l! K
CopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作
' c% g; u+ R) ]8 U; k, BCreateBitmap 按照规定的格式创建一幅与设备有关位图 0 W- S+ B, _ n: x
CreateBitmapIndirect 创建一幅与设备有关位图 3 K8 B# Y, F; m1 T% Q) z" n$ h
CreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容
) L0 z& C' _5 j: u# [CreateCursor 创建一个鼠标指针 $ s+ f4 }" [. \6 F6 c9 ] @$ J
CreateDIBitmap 根据一幅与设备无关的位图创建一幅与设备有关的位图 - y$ v2 a! I# _; [4 c- S
CreateDIBSection 创建一个DIBSection - o4 k: M c1 R2 w3 M8 ?. y( g& E# a" s
CreateIcon 创建一个图标 : y5 Y1 _$ x& f: q2 n3 G
CreateIconIndirect 创建一个图标 ; X, n' I5 l1 S0 A' ~8 L& R( S
DestroyCursor 清除指定的鼠标指针,并释放它占用的所有系统资源
" b+ \. z8 E; d3 p/ n+ kDestroyIcon 清除图标
# k5 B2 w8 L: |% h6 e1 EDrawIcon 在指定的位置画一个图标
, m8 m9 o3 ^* q7 I( d: p- iDrawIconEx 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能 ( i5 S* K7 K; |1 M
ExtractAssociatedIcon 判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之 / Y- Z+ R8 Z1 y. p% `+ b" B
ExtractIcon 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来
; K, a% W2 A/ ` [& T* Z! jGetBitmapBits 将来自位图的二进制位复制到一个缓冲区
; V7 O- q6 t" I" v. r$ vGetBitmapDimensionEx 取得一幅位图的宽度和高度 ! z) I* B: h( w, w& D* ~+ o5 t
GetDIBColorTable 从选入设备场景的DIBSection中取得颜色表信息
( @0 j2 i+ K% YGetDIBits 将来自一幅位图的二进制位复制到一幅与设备无关的位图里 4 u; S# P4 D: Q" K6 s
GetIconInfo 取得与图标有关的信息 ( O. x' ~' L, j+ X0 R4 k' j9 \
GetStretchBltMode 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式
- ?! ?1 d7 y9 D/ vLoadBitmap 从指定的模块或应用程序实例中载入一幅位图 2 v* j" T# l7 l) H
LoadCursor 从指定的模块或应用程序实例中载入一个鼠标指针 , D( a0 b$ @1 f6 r1 `8 B/ p: I8 V, V
LoadCursorFromFile 在一个指针文件或一个动画指针文件的基础上创建一个指针 , H/ z+ c+ @0 k+ H9 r( d
LoadIcon 从指定的模块或应用程序实例中载入一个图标 ( m9 c: u* S* |' a K$ m2 k
LoadImage 载入一个位图、图标或指针 ; Y6 Q" a$ E$ k6 w; N: ^1 M* _# E: C
HANDLE LoadImageA(0 O# r, a6 L. V! K& J* \* k- ?- c, }
HINSTANCE, //当前实例句柄:AfxGetInstanceHandle()
& L2 u7 Z: k# D2 ?% K! {6 b }+ g LPCSTR, //资源所在的目录:c:\help.bmp3 a; f. B. F4 V' e: h8 \6 E
UINT, //类型:IMAGE_BITMAP|IMAGE_ICON|IMAGE_CURSOR|IMAGE_ENHMETAFILE* S& M7 m7 `, r/ O2 r
int, //$ Q& ~; V0 j% n; W2 F
int, //
# l7 n: C" `3 q/ e) A; b. ZUINT); //风格:LR_DEFAULTCOLOR|LR_MONOCHROME|LR_COLOR|LR_COPYRETURNORG|& p9 D8 S# H7 h5 l7 H1 v! [. I
R_COPYDELETEORG|LR_LOADFROMFILE|LR_LOADTRANSPARENT|LR_DEFAULTSIZE|LR_VGACOLOR|4 w/ D2 w0 r( W1 C: h% B1 ^- r
LR_LOADMAP3DCOLORS|LR_CREATEDIBSECTION|LR_COPYFROMRESOURCE|LR_SHARED
6 E% G- I+ Y. @6 e( I( z8 TMaskBlt 执行复杂的图象传输,同时进行掩模(MASK)处理
1 S* s8 ?& J# {2 C+ N7 G6 GPatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景 ; } {3 g0 Q# f. N, W7 i
PlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理
& E0 p$ v4 \. q. nSetBitmapBits 将来自缓冲区的二进制位复制到一幅位图
" B: v* k/ E9 F3 k8 F7 e% Q" |SetBitmapDimensionEx 设置一幅位图的宽度。以一毫米的十分之一为单位
' O% B. z. U \SetDIBColorTable 设置选入设备场景的一个DIBSection的颜色表信息
8 A% d6 F# u$ X" b0 n/ [4 L+ c# ]SetDIBits 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里 " w! o9 T- n' R, C7 Z
SetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备
# m% f0 C0 S8 OSetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式
! L) q: V( f g6 r) D* k2 Y) PStretchBlt 将一幅位图从一个设备场景复制到另一个 . a# R9 ^, \5 Q
StretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景
) f) _3 k q# u8. API之绘图函数
. g" T8 T! J" [1 j/ {/ FAbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作
" o0 |: j3 e \ K2 X) }% kAngleArc 用一个连接弧画一条线
, I+ ^, j/ h* a; S4 M2 a8 SArc 画一个圆弧 ' g% u4 \: ]) w# Z
BeginPath 启动一个路径分支 % r6 N! @9 R! p" g' A; W
CancelDC 取消另一个线程里的长时间绘图操作 % ?$ C% `4 U' }1 k
Chord 画一个弦
, g- I. M$ p+ q9 Q$ j; I, ^CloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄 / s3 r$ r2 r- {- Z& ?, ~
CloseFigure 描绘到一个路径时,关闭当前打开的图形
7 F# y4 q+ C4 d: r mCloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄 0 U7 `( K6 a, C& t
CopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝)
; O/ N' u! K1 p" T. f0 [ `; A* ECopyMetaFile 制作指定(标准)图元文件的一个副本
( B4 L' a1 v& p' h; U3 S5 rCreateBrushIndirect 在一个LOGBRUSH数据结构的基础上创建一个刷子
0 P7 z3 m) ]" ]: {' bCreateDIBPatternBrush 用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案) 8 t- p! S ~" i; I3 r$ a# O
CreateEnhMetaFile 创建一个增强型的图元文件设备场景
9 O* L% c" \$ H; \0 gCreateHatchBrush 创建带有阴影图案的一个刷子
2 ]* m" B0 ^5 P( i7 } d7 dCreateMetaFile 创建一个图元文件设备场景 / o9 v8 ^1 j1 _! C& r
CreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子
$ }: V& G( U: u% h, _9 cCreatePen 用指定的样式、宽度和颜色创建一个画笔 - E& i+ J5 Z- j! s- \' t3 R& \
CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔 6 I5 V4 J+ C% \
CreateSolidBrush 用纯色创建一个刷子 3 P1 B; N4 Z | x
DeleteEnhMetaFile 删除指定的增强型图元文件
- S5 }; y5 V+ t0 C% CDeleteMetaFile 删除指定的图元文件 ( f' h" z X1 l: d+ ] v# p) n
WINGDIAPI BOOL WINAPI DeleteObject(HGDIOBJ) 删除GDI对象,对象使用的所有系统资源都会被释放0 Z' K2 E1 A9 c* F
DrawEdge 用指定的样式描绘一个矩形的边框
E" r1 H, l D. p1 F! f# Y5 LDrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序 1 k4 p$ a* `4 @1 X; X2 t
DrawFocusRect 画一个焦点矩形 / o+ M& F% t* L1 g$ K
DrawFrameControl 描绘一个标准控件 6 x" k0 G ~2 U$ t
DrawState 为一幅图象或绘图操作应用各式各样的效果
b6 z* s9 H6 JEllipse 描绘一个椭圆,由指定的矩形围绕 4 q% C0 b7 V# r- i9 T$ z# }4 Q) r
EndPath 停止定义一个路径
. U2 ^& Y' f7 R- u) uEnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录 * i8 H' f- m K
EnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录 $ ~: _$ U: @; x" f% _/ m
EnumObjects 枚举可随同指定设备场景使用的画笔和刷子
e T l( t" t1 eExtCreatePen 创建一个扩展画笔(装饰或几何) & d' {. J! D1 o3 O' F
ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域 0 s3 l- K7 N- y9 m0 J+ N B' n
FillPath 关闭路径中任何打开的图形,并用当前刷子填充 0 C3 s5 T$ ?. L/ ]: I+ G% _
FillRect 用指定的刷子填充一个矩形
5 A9 c9 O5 C" u- H7 W# n) DFlattenPath 将一个路径中的所有曲线都转换成线段 ; F$ b4 l' \& A% `& [6 p5 ?; u; L: {
FloodFill 用当前选定的刷子在指定的设备场景中填充一个区域
+ P- C, M) `$ P5 R5 s2 I6 ]FrameRect 用指定的刷子围绕一个矩形画一个边框 8 Y. [3 E' o- I( _
GdiComment 为指定的增强型图元文件设备场景添加一条注释信息 8 V$ P V- O% B O4 Y3 i) C l
GdiFlush 执行任何未决的绘图操作 ' Y6 K d. M2 X0 v/ |2 F
GdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中 2 F0 y4 c# ?0 n/ M! _2 F! _
GdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列 ' N2 T7 P' o" c) J$ S/ G3 k
GetArcDirection 画圆弧的时候,判断当前采用的绘图方向 4 \- E' M- q/ G
GetBkColor 取得指定设备场景当前的背景颜色
2 ^4 u, u0 t3 j; v/ U) YGetBkMode 针对指定的设备场景,取得当前的背景填充模式
: w1 A5 s2 ]% o% kGetBrushOrgEx 判断指定设备场景中当前选定刷子起点 / Z; m7 O: |* t7 B) C: v1 Q
GetCurrentObject 获得指定类型的当前选定对象 ' p3 y8 K" o- F( r
GetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置 & h' X. f( y( E. s
GetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄 ( O5 s# `4 C$ x5 }1 l* e3 e" j6 x
GetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里 ! d) h, H0 A/ X8 j* G; q4 }, a
GetEnhMetaFileDescription 返回对一个增强型图元文件的说明 4 v, q% T4 ]' F# d5 a3 ~6 b T# X
GetEnhMetaFileHeader 取得增强型图元文件的图元文件头
t$ T' I+ ~5 }/ g N, T6 c0 w% ^2 TGetEnhMetaFilePaletteEntries 取得增强型图元文件的全部或部分调色板 " y' p$ a' y0 B% P9 Q4 ]# L
GetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄 1 W) k+ e; A5 ]: P' k' H+ {
GetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区 ' `7 N1 P6 k2 N. t9 C5 e. d$ X
GetMiterLimit 取得设备场景的斜率限制(Miter)设置
, J, b; C/ O' Q! iGetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色 " t% ~: K* D% h' P- e
GetObjectAPI 取得对指定对象进行说明的一个结构
% p3 w F8 A- D2 A! mGetObjectType 判断由指定句柄引用的GDI对象的类型
8 s( i4 z+ d9 p3 W1 PGetPath 取得对当前路径进行定义的一系列数据 ?: w8 B4 q4 ], @$ T) y
GetPixel 在指定的设备场景中取得一个像素的RGB值
- z. R5 h* X: X+ c! A! m" L, r4 SGetPolyFillMode 针对指定的设备场景,获得多边形填充模式 ! {5 T3 n" w8 P( h2 T( \. m3 f
GetROP2 针对指定的设备场景,取得当前的绘图模式 0 }: S: d( Q3 k1 O: h+ r
GetStockObject 取得一个固有对象(Stock) % b) k& g& E/ |
GetSysColorBrush 为任何一种标准系统颜色取得一个刷子 X# M( x+ R+ x9 H) g: K
GetWinMetaFileBits 通过在一个缓冲区中填充用于标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件
' B5 Q6 o# @% l2 r& SInvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形 7 L7 i9 k4 B; t$ |
LineDDA 枚举指定线段中的所有点 0 x% a1 [! j% k. u+ ]2 |
LineTo 用当前画笔画一条线,从当前位置连到一个指定的点 % g3 ~: g. H: @! d- c- R, q
MoveToEx 为指定的设备场景指定一个新的当前画笔位置 S& r! M' z b! B8 l9 c6 I
PaintDesk 在指定的设备场景中描绘桌面墙纸图案
- C% e5 e. P3 M. _( R V/ n' @PathToRegion 将当前选定的路径转换到一个区域里 C2 a. k/ q% \) _3 ~
Pie 画一个饼图
S' S9 x2 I9 s) u8 M! |0 N5 D( {PlayEnhMetaFile 在指定的设备场景中画一个增强型图元文件
6 j& Y" p9 v* S/ v, C# ?* OPlayEnhMetaFileRecord 回放单独一条增强型图元文件记录 # F8 o0 [7 ~: D+ F. B" [6 _- \
PlayMetaFile 在指定的设备场景中回放一个图元文件
8 Q# i7 O& z4 V' T- N; X ?3 XPlayMetaFileRecord 回放来自图元文件的单条记录
( `. T5 j. k: k" t4 lPolyBezier 描绘一条或多条贝塞尔(Bezier)曲线
0 f8 O0 i2 B, x. OPolyDraw 描绘一条复杂的曲线,由线段及贝塞尔曲线组成 . Z% u$ u# C b0 O" P% m- i5 X
Polygon 描绘一个多边形
6 A3 \0 f/ r- c# T" V" F- l0 u1 {Polyline 用当前画笔描绘一系列线段 - i6 v; J' S: ]# ?& y9 [
PolyPolygon 用当前选定画笔描绘两个或多个多边形 ) E& m' F6 }7 ], `) l& v
PolyPolyline 用当前选定画笔描绘两个或多个多边形
3 n- D. I7 b4 L: D8 X: \Rectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充 9 r7 w6 T1 w' [( X- J, f8 D- J
RoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充
* f! Z* d' ?) ]SelectClipPath 将设备场景当前的路径合并到剪切区域里
3 _; r [4 d8 {3 s& m& fSelectObject 为当前设备场景选择图形对象 , n3 ?0 w! y+ E* D9 p7 F( l, Z
WINGDIAPI HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ);6 `# s4 ~4 {# F' v
SetArcDirection 设置圆弧的描绘方向 / U/ H2 v0 Q2 N' v$ h1 Y0 N0 J
SetBkColor 为指定的设备场景设置背景颜色 - j. c+ \ a6 j& L+ [1 K( q% l" K3 w
SetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式 $ s+ u h6 W6 J9 z" ^$ `
SetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点 3 l( u, P6 X$ Z2 m7 W
SetEnhMetaFileBits 用指定内存缓冲区内包含的数据创建一个增强型图元文件 . z6 Y6 `# P- r
SetMetaFileBitsEx 用包含在指定内存缓冲区内的数据结构创建一个图元文件 9 o5 {1 ^$ n6 L+ Q. i
SetMiterLimit 设置设备场景当前的斜率限制
0 a v% {; l9 z! MSetPixel 在指定的设备场景中设置一个像素的RGB值 1 R) C- i Q5 g9 O9 G
SetPixelV 在指定的设备场景中设置一个像素的RGB值
4 ?: i" h8 E/ J: ?9 _6 A3 |# BSetPolyFillMode 设置多边形的填充模式 7 p5 r& b2 \$ e" _
SetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致 + d1 v8 k7 j" i+ u
SetWinMetaFileBits 将一个标准Windows图元文件转换成增强型图元文件
# g9 F" P, `. R8 NStrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域 3 ?/ |) R' c' w& W) V# w
StrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭 * T4 P" c6 s& M
UnrealizeObject 将一个刷子对象选入设备场景之前,如刷子的起点准备用SetBrushOrgEx修改,则必须先调用本函数
; r7 `, F& r( g3 [* jWidenPath 根据选定画笔的宽度,重新定义当前选定的路径
) k+ a! T; ]& O6 q9. API之设备场景函数 $ d! e- Y) E" e0 m4 p0 [. d) e* o. |0 k
CombineRgn 将两个区域组合为一个新区域 0 ]& L/ ]" ^$ u1 i6 d9 R
CombineTransform 驱动世界转换。它相当于依顺序进行两次转换
2 r1 ^: J4 m* W( V8 z+ G$ q& ]& VCreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景
) G/ A2 ^+ k' B% CCreateDC 为专门设备创建设备场景 4 C; r3 |+ c3 Z B! @, b
CreateEllipticRgn 创建一个椭圆 ) ~5 U& O; R8 E/ |% U7 E* w
CreateEllipticRgnIndirect 创建一个内切于特定矩形的椭圆区域 / f2 @% q& g" c& Z
CreateIC 为专用设备创建一个信息场景 - Z/ ]- w) I; r1 B* T
CreatePolygonRgn 创建一个由一系列点围成的区域
& F/ ~2 O7 r0 hCreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的 ) Q; D! V; q6 c; \) d" f5 w
CreateRectRgn 创建一个矩形区域
8 X0 U7 a6 c j, ^6 H f3 _CreateRectRgnIndirect 创建一个矩形区域
5 A" B% n& c+ u3 @" H% } vCreateRoundRectRgn 创建一个圆角矩形 , I0 e3 ]2 t# o5 T- L( |+ U$ U8 J
DeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源 |0 k: z0 H2 `& J; Z! q
DPtoLP 将点阵从设备坐标转换到专用设备场景逻辑坐标
0 R( R; N: M% t; Z3 u2 i zEqualRgn 确定两个区域是否相等 % X* |6 f4 D4 @7 K
ExcludeClipRect 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图
5 A- X) @( x& V7 ~# TExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域
3 z, T/ ]0 r2 U& WExtCreateRegion 根据世界转换修改区域 4 `0 A, W8 n' L# J4 R3 w A1 q1 C# f
ExtSelectClipRgn 将指定区域组合到设备场景的当前剪裁区 O: x' j0 V7 n3 b6 h( D9 o
FillRgn 用指定刷子填充指定区域
3 t% i; r' X' ~. PFrameRgn 用指定刷子围绕指定区域画一个外框
4 Y3 l0 K& h" t( S$ F+ YGetBoundsRect 获取指定设备场景的边界矩形 * U# }. K8 M4 y5 l# o# y; Z
GetClipBox 获取完全包含指定设备场景剪裁区的最小矩形
s* s. D+ c* jGetClipRgn 获取设备场景当前剪裁区 2 c( g- e% N9 u" G
GetDC 获取指定窗口的设备场景 7 {+ {$ L1 w* I q
GetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项 0 N, q: [' ]. x W( Q- u' n; j
GetDCOrgEx 获取指定设备场景起点位置(以屏幕坐标表示)
( i! R* s/ A2 a$ g/ _; o! D5 JGetDeviceCaps 根据指定设备场景代表的设备的功能返回信息
" `$ Y: d; }# k3 Y1 ~( \9 hGetGraphicsMode 确定是否允许增强图形模式(世界转换)
; y/ y P; k3 T/ vGetMapMode 为特定设备场景调入映象模式
/ n% W( f. O' i" |: }' xGetRegionData 装入描述一个区域信息的RgnData结构或缓冲区 . l. c0 Y1 G, d5 N( Z4 ]! e3 l
GetRgnBox 获取完全包含指定区域的最小矩形
3 b l: u& L: w7 s$ {# o, XGetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新 , E2 Y0 N F" m+ ?& Z
GetViewportExtEx 获取设备场景视口(viewport)范围
, p/ N* |2 `( wGetViewportOrgEx 获取设备场景视口起点 8 J( i+ G" h& ~2 Y
GetWindowDC 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景 4 _. S7 \- o, [) y, Z
GetWindowExtEx 获取指定设备场景的窗口范围
3 C; c) o9 U! W( b% }) PGetWindowOrgEx 获取指定设备场景的逻辑窗口的起点
1 G- r- l# l. {+ HGetWindowRgn 获取窗口区域 Y' p6 V+ \' q4 j7 H/ w' a
GetWorldTransform 如果有世界转换,为设备场景获取当前世界转换 % S1 |% D: [4 i1 t+ R% R; W
IntersectClipRect 为指定设备定义一个新的剪裁区
9 \: h: ^+ F: F s. L. J- AInvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画
- N9 [; A+ Z \8 {# YInvertRgn 通过颠倒每个像素值反转设备场景指定区域
) @2 b2 \0 U' Y6 F6 s) ULPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标
e/ N+ h4 q) M. ]" |ModifyWorldTransform 根据指定的模式修改世界转换
% r7 ?' d2 e' ?! I7 ?- j! gOffsetClipRgn 按指定量平移设备场景剪裁区 % g* d2 z; r$ k$ e% r6 m6 A
OffsetRgn 按指定偏移量平移指定区域 ' s8 V4 H, S& |6 Z/ R) R7 [4 Y
OffsetViewportOrgEx 平移设备场景视口区域 1 a: z6 g4 k0 s _ m! o
OffsetWindowOrgEx 平移指定设备场景窗口起点 8 _4 w" n7 m' Q* H( s4 n: J
PaintRgn 用当前刷子背景色填充指定区域 3 Y2 |! M B6 y) W1 \
PtInRegion 确定点是否在指定区域内 0 x6 K! k7 H2 M/ J& Y5 F: j
PtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内)
" T% A7 ?( G, a5 J- j0 C3 x5 j0 ERectInRegion 确定矩形是否有部分在指定区域内
4 g, ~: k3 p$ e+ sRectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内)
3 ^/ a% f0 ^7 wReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景 1 i. G/ p! M# `: g% B$ _
RestoreDC 从设备场景堆栈恢复一个原先保存的设备场景 ; G# w$ y$ a+ R# C- _& ^/ S
SaveDC 将指定设备场景状态保存到Windows设备场景堆栈 8 R1 P w( a; p" T+ E
ScaleViewportExtEx 缩放设备场景视口的范围
, P3 Y& [1 d% S$ xScaleWindowExtEx 缩放指定设备场景窗口范围
* ^1 A( d$ Q8 W2 g ~$ U- HScrollDC 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形 ) _* b1 g$ q _5 R; [
SelectClipRgn 为指定设备场景选择新的剪裁区
( P, k6 }3 a) R5 V2 k8 ~; `) W6 bSetBoundsRect 设置指定设备场景的边界矩形
' k% t' W: b" }( d: _% GSetGraphicsMode 允许或禁止增强图形模式,以提供某些支持(包括世界转换)
5 K4 h! o3 Z, C% G0 ~SetMapMode 设置指定设备场景的映射模式 7 C$ | D0 w8 _6 O' z$ F9 d& b# y
SetRectRgn 设置区域为指定的矩形
/ l2 p* H3 U( U. j7 V9 x% c$ i# oSetViewportExtEx 设置设备场景视口范围
$ w; ]9 V: t, N2 g8 ASetViewportOrgEx 设置设备场景视口起点 3 I' W* F% F) o) v" ?; e
SetWindowExtEx 设置指定设备场景窗口范围
$ c5 Z0 |/ B% T8 |+ |6 BSetWindowOrgEx 设置指定设备场景窗口起点
0 a) \3 Z' N4 z' }* a {6 CSetWindowRgn 设置窗口区域 / k7 r; g' o! h1 x+ i4 `: C
SetWorldTransform 设置世界转换
7 l& C0 |2 r7 J H3 ]2 A- ]ValidateRgn 激活窗口中指定区域,把它从刷新区移走 6 }! Z5 J1 W6 m) G: G
WindowFromDC 取回与某一设备场景相关的窗口的句柄 . f' z: E! [% Y0 Q
10. API之硬件与系统函数 " f+ u1 X$ q" _3 b: M/ j T3 Q
ActivateKeyboardLayout 激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义
/ V0 h( i7 n: C! ~2 BBeep 用于生成简单的声音
0 d5 q, W5 S. U7 E; I7 qCharToOem 将一个字串从ANSI字符集转换到OEM字符集 4 ?! ^! l' A# A; L
ClipCursor 将指针限制到指定区域 ' l( b9 P- u& \" [& k
ConvertDefaultLocale 将一个特殊的地方标识符转换成真实的地方ID
- g8 W4 V1 F! HCreateCaret 根据指定的信息创建一个插入符(光标),并将它选定为指定窗口的默认插入符 % `7 S5 c/ y4 V) z1 U5 i
DestroyCaret 清除(破坏)一个插入符 , T6 R. B% l% `8 T+ T. T
EnumCalendarInfo 枚举在指定"地方"环境中可用的日历信息
n; `" Z3 a8 ~" Q/ \! U% `% dEnumDateFormats 列举指定的"当地"设置中可用的长、短日期格式 % p, X* M# P! E) i: c( q7 Q$ g
EnumSystemCodePages 枚举系统中已安装或支持的代码页 1 p s( k0 m3 L8 M3 [" _/ J
EnumSystemLocales 枚举系统已经安装或提供支持的"地方"设置 ) W! y' A5 ~3 c6 u
EnumTimeFormats 枚举一个指定的地方适用的时间格式 . J! T1 C2 m$ i+ G
ExitWindowsEx 退出windows,并用特定的选项重新启动 " l/ w( ~) x% i$ S* r- |: D# ]
WINUSERAPI BOOL WINAPI ExitWindowsEx(
3 \& t7 U$ z8 U8 S ?$ J" K( J9 BUINT uFlags, //EWX_LOGOFF|EWX_REBOOT|EWX_FORCE|EWX_POWEROFF|EWX_FORCEIFHUNG
( \! w s8 D5 k1 z DWORD dwReserved); //0
# p) Y1 e; D" A& o5 bExpandEnvironmentStrings 扩充环境字串 * h" z s/ f+ |8 m2 f ~( v. M# ]
FreeEnvironmentStrings 翻译指定的环境字串块 - _- X" x9 a6 E9 [
GetACP 判断目前正在生效的ANSI代码页
9 \$ r% z, j% X1 a- Y4 Z: lGetAsyncKeyState 判断函数调用时指定虚拟键的状态 " u n% U4 y1 g& g$ U5 y# r c0 }
GetCaretBlinkTime 判断插入符光标的闪烁频率 ! m& y: [: M: A+ B+ H
GetCaretPos 判断插入符的当前位置 8 `# [$ L* Q/ G: ]. U
GetClipCursor 取得一个矩形,用于描述目前为鼠标指针规定的剪切区域
\" q& j: ^! M) C6 f7 q6 a. D, LGetCommandLine 获得指向当前命令行缓冲区的一个指针 4 s+ k: S2 `) o8 R$ h: a" W) F H8 w
GetComputerName 取得这台计算机的名称 , y, h* e6 D+ A5 S# z! G: f
GetCPInfo 取得与指定代码页有关的信息 , E) r' D/ M9 G; U0 l+ V1 z: j
GetCurrencyFormat 针对指定的"地方"设置,根据货币格式格式化一个数字
9 q& N2 K% Z2 g9 l& { I" m) fGetCursor 获取目前选择的鼠标指针的句柄 $ K5 X- d9 d+ _. a4 l0 o
GetCursorPos 获取鼠标指针的当前位置
3 k* G/ P/ Q" ^; P2 ^GetDateFormat 针对指定的"当地"格式,对一个系统日期进行格式化 . D( E$ b1 c1 g2 r
GetDoubleClickTime 判断连续两次鼠标单击之间会被处理成双击事件的间隔时间 * w; c( f! ^' w2 N
GetEnvironmentStrings 为包含了当前环境字串设置的一个内存块分配和返回一个句柄 2 \' U* c% T6 ]# ^, U$ x
GetEnvironmentVariable 取得一个环境变量的值 ) d$ r3 K* T4 L2 r% Q0 T$ q
GetInputState 判断是否存在任何待决(等待处理)的鼠标或键盘事件
! R: B, w; d4 V) R" r0 X8 qGetKBCodePage 由GetOEMCP取代,两者功能完全相同
6 ~( ]9 U4 k; V% eGetKeyboardLayout 取得一个句柄,描述指定应用程序的键盘布局
P3 }# V9 z6 U, l! S( d; MGetKeyboardLayoutList 获得系统适用的所有键盘布局的一个列表
) O6 u" V0 N5 n9 }GetKeyboardLayoutName 取得当前活动键盘布局的名称
; y% i! c9 l7 x# Q4 L+ x0 P3 f) DGetKeyboardState 取得键盘上每个虚拟键当前的状态 , b3 B7 z7 O1 N5 S j
GetKeyboardType 了解与正在使用的键盘有关的信息 * h( k" J, F# {
GetKeyNameText 在给出扫描码的前提下,判断键名 0 ]% T0 L' ?; _$ ?. B' W8 z
GetKeyState 针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态
; R% u5 x T, Q% {: @$ T, QGetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息
?- }" B6 k2 N* BGetLocaleInfo 取得与指定"地方"有关的信息 : P/ P: C9 v, e) N0 L
GetLocalTime 取得本地日期和时间
7 |8 d- O8 R J, n" EGetNumberFormat 针对指定的"地方",按特定的格式格式化一个数字
; K: [4 |' z9 H$ PGetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页 7 D5 ~9 q! g- l' a8 P
GetQueueStatus 判断应用程序消息队列中待决(等待处理)的消息类型
2 a" J# n5 ^: O! u, ^* _/ U) JGetSysColor 判断指定windows显示对象的颜色 4 H2 d2 Z! C" B- m1 r( a
GetSystemDefaultLangID 取得系统的默认语言ID
& _! w# p# Y! s% q# x7 B! o4 I6 z- nGetSystemDefaultLCID 取得当前的默认系统"地方" & N p4 r/ e/ E. p( B, e7 Q/ g
GetSystemInfo 取得与底层硬件平台有关的信息
5 s% t |. E8 \ {: h9 U4 QGetSystemMetrics 返回与windows环境有关的信息 ! Z4 N* F1 C0 u8 a! v( U C- s
GetSystemPowerStatus 获得与当前系统电源状态有关的信息
' H5 Z+ @: S2 _) ]. \2 Y q* q1 ^8 XGetSystemTime 取得当前系统时间,这个时间采用的是"协同世界时间"(即UTC,也叫做GMT)格式 ! r5 W1 j w1 j2 f' }. [
GetSystemTimeAdjustment 使内部系统时钟与一个外部的时钟信号源同步 1 l$ Y$ V3 T& O$ z( c2 {
GetThreadLocale 取得当前线程的地方ID
; V& m# {" X, W, V8 QGetTickCount 用于获取自windows启动以来经历的时间长度(毫秒) 2 t2 s5 x& b5 o
GetTimeFormat 针对当前指定的"地方",按特定的格式格式化一个系统时间 3 ~9 Q* K! D, X% o
GetTimeZoneInformation 取得与系统时区设置有关的信息
: S! l2 x6 [) v- A6 o/ [$ UGetUserDefaultLangID 为当前用户取得默认语言ID / c& R. m, M s1 S% U
GetUserDefaultLCID 取得当前用户的默认"地方"设置 9 n- n9 ?4 ?3 k0 p0 o& y
GetUserName 取得当前用户的名字 ! q, m9 u2 L! P7 `
GetVersion 判断当前运行的Windows和DOS版本
2 v7 @1 D) M$ I9 \GetVersionEx 取得与平台和操作系统有关的版本信息 # g) b8 N6 _" x# s1 u, v
HideCaret 在指定的窗口隐藏插入符(光标)
/ A$ N% ^! L* {+ Z+ ]& J! ~* T6 SIsValidCodePage 判断一个代码页是否有效 4 }$ W" i K- \# B8 ^3 b
IsValidLocale 判断地方标识符是否有效
3 O6 U& R# f* [; w& P$ _keybd_event 这个函数模拟了键盘行动 3 } X6 |( C/ e
LoadKeyboardLayout 载入一个键盘布局 , l! { x0 V/ G6 ]8 k. P* @
MapVirtualKey 根据指定的映射类型,执行不同的扫描码和字符转换
. }/ ]- G5 j( R( a/ c' yMapVirtualKeyEx 根据指定的映射类型,执行不同的扫描码和字符转换 3 s& D% O( E1 S, ^2 O6 T
MessageBeep 播放一个系统声音。系统声音的分配方案是在控制面板里决定的 9 u) h7 i! t, r& J3 k
mouse_event 模拟一次鼠标事件 8 D+ E1 v6 @. Q# Q: s5 s
OemKeyScan 判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态 " d8 N2 N9 Q( W& ~
OemToChar 将OEM字符集的一个字串转换到ANSI字符集
3 P" }% v6 r" M' NSetCaretBlinkTime 指定插入符(光标)的闪烁频率 ' T$ R9 [' W+ F& ~: W% P. W* N
SetCaretPos 指定插入符的位置 ! u$ y, C3 M& J2 g/ Q
SetComputerName 设置新的计算机名
9 n, q7 O6 ]- S( H$ ^6 gSetCursor 将指定的鼠标指针设为当前指针
9 D3 X' \0 d6 L, HSetCursorPos 设置指针的位置 $ M# G# y& }6 c# n* [
SetDoubleClickTime 设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间
- _/ ~5 i4 T& {SetEnvironmentVariable 将一个环境变量设为指定的值 ; I; |2 Z& c% @3 l$ E4 }4 x
SetKeyboardState 设置每个虚拟键当前在键盘上的状态 $ A3 T, d5 @+ L& y2 j8 Y" Q( d
SetLocaleInfo 改变用户"地方"设置信息 # Y9 ]0 M: F7 q& ~& C) Y
SetLocalTime 设置当前地方时间
$ ^3 w. C+ {0 s9 KSetSysColors 设置指定窗口显示对象的颜色 ( [6 j$ }6 w4 p
SetSystemCursor 改变任何一个标准系统指针 * V! u5 P) f3 `1 j; i2 K
SetSystemTime 设置当前系统时间 5 U! A5 Z/ i& l4 Y" B. d
SetSystemTimeAdjustment 定时添加一个校准值使内部系统时钟与一个外部的时钟信号源同步
4 o$ D0 u, ~/ y/ N4 d9 GSetThreadLocale 为当前线程设置地方 : B: |* {* R1 D* O' [( O4 [7 }
SetTimeZoneInformation 设置系统时区信息 & u5 m, W- \7 {1 r: R5 p
ShowCaret 在指定的窗口里显示插入符(光标) , M6 x: `8 e& R& i
ShowCursor 控制鼠标指针的可视性 * o& M [4 ]5 ?3 M0 I% R ~ O! y
SwapMouseButton 决定是否互换鼠标左右键的功能 / ~ \3 F+ {0 Y3 r, N; t
SystemParametersInfo 获取和设置数量众多的windows系统参数
* X& e/ m- Y$ p+ I) F0 f7 xSystemTimeToTzSpecificLocalTime 将系统时间转换成地方时间 + P9 t/ e' O3 V' S5 ]- p8 { i
ToAscii 根据当前的扫描码和键盘信息,将一个虚拟键转换成ASCII字符
9 g4 P* ^* q3 d7 m6 KToUnicode 根据当前的扫描码和键盘信息,将一个虚拟键转换成Unicode字符 ' U4 P% r7 W1 ^# J: ~6 o
UnloadKeyboardLayout 卸载指定的键盘布局
7 d8 S5 X- D; [8 p& l y- iVkKeyScan 针对Windows字符集中一个ASCII字符,判断虚拟键码和Shift键的状态
: M/ U8 c" A/ a* B11. API之进程和线程函数
& b' @$ v% F0 y' UCancelWaitableTimer 这个函数用于取消一个可以等待下去的计时器操作
7 u3 i) U6 O) ^4 g8 p5 UCallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用 % L2 i& e ] u1 k: M# ?0 t
ConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个命名管道连接 3 W5 b8 [; f$ @, Y1 x5 w0 b
CreateEvent 创建一个事件对象 ; H' U5 @6 e1 q* |2 d
CreateMailslot 创建一个邮路。返回的句柄由邮路服务器使用(收件人)
2 Y1 O. `1 u5 s, gCreateMutex 创建一个互斥体(MUTEX)
, B! `2 O, r$ P, \CreateNamedPipe 创建一个命名管道。返回的句柄由管道的服务器端使用 / q7 {( m8 O$ j. c" `5 q% p
CreatePipe 创建一个匿名管道 - U8 N0 `% {9 C. S, g$ ^ d
CreateProcess 创建一个新进程(比如执行一个程序) 8 B- Z- `1 Y' o
CreateSemaphore 创建一个新的信号机
3 q# J" r5 |6 h9 Y; t% s( V: SCreateWaitableTimer 创建一个可等待的计时器对象 ! S3 O: o6 c! E; a+ f
DisconnectNamedPipe 断开一个客户与一个命名管道的连接 ( ]2 g6 @; w9 C* f/ X
DuplicateHandle 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄 , R/ c p' O3 z$ F
ExitProcess 中止一个进程
" J0 K1 @# y& I- N9 V# m: p( x: QFindCloseChangeNotification 关闭一个改动通知对象
9 i# g9 h/ s7 v% \0 o1 Q7 Y& [FindExecutable 查找与一个指定文件关联在一起的程序的文件名
; L! e3 k. E1 z! v' U9 R* _9 GFindFirstChangeNotification 创建一个文件通知对象。该对象用于监视文件系统发生的变化
, o0 {) j' @" g% ~) iFindNextChangeNotification 重设一个文件改变通知对象,令其继续监视下一次变化 " R& Y' V3 z0 S
FreeLibrary 释放指定的动态链接库
3 m' T# p, G( X6 ~" g5 q& [( |GetCurrentProcess 获取当前进程的一个伪句柄 ( P" m" p3 d3 v4 G3 p0 {/ q/ n
GetCurrentProcessId 获取当前进程一个唯一的标识符 , j% A2 R# S- k
GetCurrentThread 获取当前线程的一个伪句柄
3 M0 i$ I0 W) A( {# \; | A8 {GetCurrentThreadId 获取当前线程一个唯一的线程标识符 q O& H: |) [# W
GetExitCodeProces 获取一个已中断进程的退出代码 & r, f# c G$ E7 l8 p# v6 J
GetExitCodeThread 获取一个已中止线程的退出代码 4 p E' J1 y |# U3 W3 }
GetHandleInformation 获取与一个系统对象句柄有关的信息 ; B8 s/ f) q5 @
GetMailslotInfo 获取与一个邮路有关的信息 ; h7 r6 [& I @" v
GetModuleFileName 获取一个已装载模板的完整路径名称 * n T5 G5 w- \/ B% F* ?
GetModuleHandle 获取一个应用程序或动态链接库的模块句柄
: v/ T, i, Q- ?* M! R: i GetModuleHandleA(LPCSTR lpModuleName);5 ]7 G. M2 ~" x5 V5 x5 }
GetPriorityClass 获取特定进程的优先级别
( ~7 N$ @: f, h/ q" Y bGetProcessShutdownParameters 调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况 $ y# o$ Q# F' ] O& o6 e' {
GetProcessTimes 获取与一个进程的经过时间有关的信息
( U2 ~8 p' T. X) mGetProcessWorkingSetSize 了解一个应用程序在运行过程中实际向它交付了多大容量的内存
2 w9 {* e, M! e9 x- sGetSartupInfo 获取一个进程的启动信息
+ A& ]6 X* Z, Y" OGetThreadPriority 获取特定线程的优先级别 & O* L; M* `% G3 M
GetTheardTimes 获取与一个线程的经过时间有关的信息 : D1 r8 O$ ~3 [
GetWindowThreadProcessId 获取与指定窗口关联在一起的一个进程和线程标识符
7 F- C3 k/ g9 [( ILoadLibrary 载入指定的动态链接库,并将它映射到当前进程使用的地址空间 % ]% u" {* H* l7 ?, ^
LoadLibraryEx 装载指定的动态链接库,并为当前进程把它映射到地址空间 1 U6 C! u1 G3 X4 K: o% L
LoadModule 载入一个Windows应用程序,并在指定的环境中运行 + ^# q# @2 D! a. n
MsgWaitForMultipleObjects 等侯单个对象或一系列对象发出信号。如返回条件已经满足,则立即返回 n( Y- X2 L! g! E, V
SetPriorityClass 设置一个进程的优先级别 , c& {; O# m1 y$ H5 S& S% a
SetProcessShutdownParameters 在系统关闭期间,为指定进程设置他相对于其它程序的关闭顺序 1 i# I* A& \3 H4 V+ d- V
SetProcessWorkingSetSize 设置操作系统实际划分给进程使用的内存容量 ' t5 j" s& B$ z* B* w
SetThreadPriority 设定线程的优先级别 5 g. D2 d5 Y- I4 s6 ]
ShellExecute 查找与指定文件关联在一起的程序的文件名 : R, q4 k6 I1 a1 c) B) i* w2 w3 @
TerminateProcess 结束一个进程
6 n/ }5 D5 |" g. O& lWinExec 运行指定的程序
4 Y( x" E9 Q9 L' C; Q12. API之控件与消息函数 ( r# h0 k5 D4 t! }, C
AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 , a5 N# X/ O# a- D) ^
AnyPopup 判断屏幕上是否存在任何弹出式窗口
& r3 V6 W# U* N( H6 i+ zArrangeIconicWindows 排列一个父窗口的最小化子窗口
5 M3 u- J# p, V, D3 AAttachThreadInput 连接线程输入函数
( x; k& I1 V; D( ]1 a* ]BeginDeferWindowPos 启动构建一系列新窗口位置的过程 / H) U. W% Y; V
BringWindowToTop 将指定的窗口带至窗口列表顶部
?1 D3 G/ ?$ h/ |CascadeWindows 以层叠方式排列窗口 . t; _8 r9 r$ y! K W" g4 ]
ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄
4 }7 \, _8 E3 A9 z: U |ClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标
5 s9 i: f' H2 ~4 o& {2 z' ]- x6 ?CloseWindow 最小化指定的窗口
a5 w' r# |' o& x3 ^CopyRect 矩形内容复制
8 s9 W( J! ]4 ?4 k' XDeferWindowPos 该函数为特定的窗口指定一个新窗口位置
( v5 M$ u( g, Z2 {* z! CDestroyWindow 清除指定的窗口以及它的所有子窗口
6 a( k! ]" x [DrawAnimatedRects 描绘一系列动态矩形 " D3 s' P: J3 m$ U: u* ^ P
EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入 d! C D+ o3 K$ y
EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态
! J- ]* y* P5 k/ b& V; J) @' h" mEnumChildWindows 为指定的父窗口枚举子窗口
* H- X9 [1 C; N5 JEnumThreadWindows 枚举与指定任务相关的窗口 , n9 C% L) ]6 L7 h3 O
EnumWindows 枚举窗口列表中的所有父窗口
, h5 j, q0 e5 X9 o. g& VEqualRect 判断两个矩形结构是否相同
3 x! I% W8 @7 b2 Y4 ^$ g' }FindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口
s* L6 M1 W6 k0 {FindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口
) \: N5 l0 N; ]0 M9 FFlashWindow 闪烁显示指定窗口
- S1 X. G; O8 a L; oGetActiveWindow 获得活动窗口的句柄
, p" c# X5 L( ~& UGetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收) $ u. b7 A( H; X
GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息 2 J, A, {* N! F
GetClassLong 取得窗口类的一个Long变量条目 4 l6 t/ q2 Z* A0 y
GetClassName 为指定的窗口取得类名
- ?* ~9 I6 R9 XGetClassWord 为窗口类取得一个整数变量 ( p" G2 V. O& [* v+ G
GetClientRect 返回指定窗口客户区矩形的大小 7 Q; a6 i$ R" u. Y3 w) Y/ }
GetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄
& ~+ A s9 T3 I4 T6 b! k; nGetFocus 获得拥有输入焦点的窗口的句柄
- G( U E9 c3 m2 _GetForegroundWindow 获得前台窗口的句柄
: `0 w8 H, u0 |8 CGetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄
' o, d3 ~: t) ?8 k" y9 n7 BGetParent 判断指定窗口的父窗口 ; j A3 h7 H% o' @
GetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄 ' q8 M$ `! P& c4 |$ j4 L5 w: W: l
GetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分
. G0 \7 b! S. j0 n' j8 U6 TGetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系 - w! j; N2 v" g( E3 q
GetWindowContextHelpId 取得与窗口关联在一起的帮助场景ID
3 @/ n4 m7 l1 h3 oGetWindowLong 从指定窗口的结构中取得信息 . M0 S6 T1 s b9 \
GetWindowPlacement 获得指定窗口的状态及位置信息
0 f) |' u$ f6 b* W, m4 n" G% K' d6 ~GetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内
$ E5 z1 y& n4 q! M2 YGetWindowText 取得一个窗体的标题(caption)文字,或者一个控件的内容
9 Z9 z5 I2 n; s2 ]7 F% yGetWindowTextLength 调查窗口标题文字或控件内容的长短 ) E9 H$ ~8 o1 p3 k+ I$ t
GetWindowWord 获得指定窗口结构的信息
; \) u/ S# B' jInflateRect 增大或减小一个矩形的大小
" I5 }/ Q% t4 b/ l, w5 D: ZIntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集
! `) y9 [3 W( {InvalidateRect 屏蔽一个窗口客户区的全部或部分区域 9 R* ]. `9 D9 Q
IsChild 判断一个窗口是否为另一窗口的子或隶属窗口
% ]9 B& a9 f# v! v$ PIsIconic 判断窗口是否已最小化
+ Q* q) {$ `, @# K* Z8 \* B8 DIsRectEmpty 判断一个矩形是否为空
' k( o1 [9 d! j! U# rIsWindow 判断一个窗口句柄是否有效 * G. u$ H! N0 O: ~3 z
IsWindowEnabled 判断窗口是否处于活动状态 - W" @& M! ^" P
IsWindowUnicode 判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字
7 |1 _& a; S, K* G% PIsWindowVisible 判断窗口是否可见
. b# q( B( X2 TIsZoomed 判断窗口是否最大化
% C5 }1 }% n/ b9 z- U HLockWindowUpdate 锁定指定窗口,禁止它更新 + d; E, G1 E: m( z: t& A$ d/ b
MapWindowPoints 将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统 # o5 X# c3 s/ M' A- _: b2 U; ^
MoveWindow 改变指定窗口的位置和大小
" U, m* e( f7 U& m" \/ x/ ^" E( O aOffsetRect 通过应用一个指定的偏移,从而让矩形移动起来 + T; f1 F" [! c
OpenIcon 恢复一个最小化的程序,并将其激活
. r$ H$ n, K/ \8 |' p6 X BPtInRect 判断指定的点是否位于矩形内部
( [4 P7 R- {* W/ S, sRedrawWindow 重画全部或部分窗口
0 _+ k" G X2 I0 f7 `ReleaseCapture 为当前的应用程序释放鼠标捕获 " E" |; Z, r1 R- a8 @( p+ t
ScreenToClient 判断屏幕上一个指定点的客户区坐标 , v8 e9 R0 @7 x8 n% ~7 v
ScrollWindow 滚动窗口客户区的全部或一部分 a6 A0 D& |4 W6 H7 x6 F
ScrollWindowEx 根据附加的选项,滚动窗口客户区的全部或部分
# k/ w$ _$ f: X9 w- NSetActiveWindow 激活指定的窗口 1 l+ R$ f; ]' ^: A1 L9 d
SetCapture 将鼠标捕获设置到指定的窗口 ' a* K! |- l$ B& m. p" U
SetClassLong 为窗口类设置一个Long变量条目 # ~: b" b4 v: e# U' T: \( p% L. p! }
SetClassWord 为窗口类设置一个条目
. r- k m% L# D$ A6 v8 J2 aSetFocusAPI 将输入焦点设到指定的窗口。如有必要,会激活窗口 & W0 y4 d3 F- A9 g
SetForegroundWindow 将窗口设为系统的前台窗口
! ~2 Q: W7 I2 E" t; ~! CSetParent 指定一个窗口的新父
7 z! e* ~' H7 o4 V1 c/ |7 i7 |SetRect 设置指定矩形的内容
4 Y1 s) o: I+ l0 T0 ]4 VSetRectEmpty 将矩形设为一个空矩形 # o# x4 e* M! m! |& }* K
SetWindowContextHelpId 为指定的窗口设置帮助场景(上下文)ID & Z& a2 X" s4 Z+ f- `3 n* g
SetWindowLong 在窗口结构中为指定的窗口设置信息
% s& l9 A$ ?/ v, p3 e2 n* tSetWindowPlacement 设置窗口状态和位置信息 # x* v9 |, H; C5 n3 W" i5 E% T
SetWindowPos 为窗口指定一个新位置和状态 s1 K* S2 I) k/ v) Z" j
SetWindowText 设置窗口的标题文字或控件的内容 ! h5 m# x8 \% q, y
SetWindowWord 在窗口结构中为指定的窗口设置信息
9 Z5 r6 G, a, fShowOwnedPopups 显示或隐藏由指定窗口所有的全部弹出式窗口
7 J' s5 U# n: e* O' U8 D9 fShowWindow 控制窗口的可见性 / }+ o: Y i" b) N
ShowWindowAsync 与ShowWindow相似 7 [2 e: L5 }* r) S
SubtractRect 装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果 - }: _0 w5 W4 J% I( C1 b
TileWindows 以平铺顺序排列窗口 $ z" p; n8 I% t# u& M- d+ ]3 ^
UnionRect 装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect联合起来的结果 6 h6 V2 l+ L1 q2 V
UpdateWindow 强制立即更新窗口 ; k* e4 t- P" f6 ^
ValidateRect 校验窗口的全部或部分客户区 ) [" n' p7 Z& @9 H
WindowFromPoint 返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口
+ O o2 U5 T& Q1 Z; l! y' R; D! n m5 {高级音频函数—参看《VC++ 编程指南.chm》11.6
]: u6 R# f* e7 k. _# V$ a% e9 L Windows提供了三个特殊的播放声音的高级音频函数:MessageBeep、PlaySound和sndPlaySound。这三个函数可以满足播放波形声音的一般需要,但它们播放的WAVE文件(波形声音文件)的大小不能超过100KB,如果要播放较大的WAVE文件,则应该使用MCI服务。 ?% f2 y @7 s* Q( G0 O% c1 L% \
BOOL MessageBeep(UINT uType);1 K7 H8 L) ^" D
该函数主要用来播放系统报警声音。系统报警声音是由用户在控制面板中的声音(Sounds)程序中定义的,或者在WIN.INI的[sounds]段中指定。9 E; T4 R4 |2 E% d
参数uType说明了告警级,如下表所示。若成功则函数返回TRUE。
A6 v8 E+ x6 _$ d1 ~# s! U: o级别
* G- H, H1 v3 |- j e9 \" ^ | 描述
- B- k2 S, M# n, B9 s3 v | -1
9 ]; A+ L" F/ B, ? | 从机器的扬声器中发出蜂鸣声。 ; O: L; m# o6 ^* y9 Q; x6 f
| MB_ICONASTERISK 5 _% b) P% P- u5 c- \. I# A
| 播放由SystemAsterisk定义的声音。 % i# l" u! E9 f, Z x
| MB_ICONEXCLAMATION 6 t6 R$ ?( x; t: H7 L3 a, P4 M+ H% @
| 播放由SystemExclamation定义的声音。
, ~) `- \( Q Q9 m1 C | MB_ICONHAND : I3 t1 X. W9 i7 _
| 播放由SystemHand定义的声音。 - }( B8 B- j% L3 q' j% F
| MB_ICONQUESTION 3 T% E: n( ^! n* D9 F7 ?) @
| 播放由SystemQuestion定义的声音。 " \- h4 n' @( H% l8 m
| MB_OK
0 |& ?% t4 ^* O+ F | 播放由SystemDefault定义的声音
7 j" g, X2 W! {/ ^ | BOOL PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);( x0 V2 e1 R3 w: l
参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。" @! @& B, t. N% E, e/ A
参数hmod是应用程序的实例句柄,当播放WAV资源时要用到该参数,否则它必须为NULL。
4 h5 ?! [+ i. i) m$ L参数fdwSound是标志的组合,如下表所示。若成功则函数返回TRUE,否则返回FALSE。
% O2 d) H- q( q2 A标志
! @9 R# B Q5 G& {+ x8 j | 含义 ) L) c2 {4 l- E. z
| SND_APPLICATION " w6 F6 e0 t8 y: [8 n" d
| 用应用程序指定的关联来播放声音。
, Z- H" u) I+ I# \* A- @" Y w | SND_ALIAS $ t# N1 N' v ? T7 U8 k
| pszSound参数指定了注册表或WIN.INI中的系统事件的别名。
3 G& ^7 V0 p) Z H9 ?* ~" L | SND_ALIAS_ID 2 P# w$ x, s% F; Q7 K' v3 F8 r
| pszSound参数指定了预定义的声音标识符。 ' y7 h+ n5 p1 G& U7 P
| SND_ASYNC ' r1 M; d( ^0 q8 O/ {! @5 ]
| 用异步方式播放声音,PlaySound函数在开始播放后立即返回。
2 W; m( J) j) q Z | SND_FILENAME
/ ?8 x$ Q# ~1 u4 a% w" }% Y& N8 K | pszSound参数指定了WAVE文件名。
* p( _4 |- a) x# T+ l | SND_LOOP 8 N9 u7 x! M& v/ f) u
| 重复播放声音,必须与SND_ASYNC标志一块使用。 ) |! h$ U |. D. t3 x7 s7 H" x
| SND_MEMORY
5 ?, m3 H+ K6 C& g/ y2 y2 h | 播放载入到内存中的声音,此时pszSound是指向声音数据的指针。 ; B4 }( r! V7 q+ ]- @% M
| SND_NODEFAULT , K# U8 j7 X: A9 K. D1 r
| 不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。
; G: h8 N0 V9 d. N | SND_NOSTOP 1 X6 N8 x! h" @3 v: g1 o
| PlaySound不打断原来的声音播出并立即返回FALSE。 ! t0 W# A% `0 f1 l$ m% P/ c9 [
| SND_NOWAIT 1 H8 d3 \( B3 L9 C' c
| 如果驱动程序正忙则函数就不播放声音并立即返回。
o7 ` n( q1 m( D* d | SND_PURGE
/ Q) V* c2 b5 D& I3 _: Y | 停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。
: K- ]$ Z& |4 Y9 T# V | SND_RESOURCE ' q, s- @$ C3 W% u
| pszSound参数是WAVE资源的标识符,这时要用到hmod参数。
+ Z# K/ v1 h& G& |5 ?" s | SND_SYNC
) I5 U' K( h% U3 w+ ^- S | 同步播放声音,在播放完后PlaySound函数才返回。
+ N0 G& C3 U) e" T5 y | BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound);% c7 g% _& H1 |. w
函数sndPlaySound的功能与PlaySound类似,但少了一个参数。除了不能指定资源名字外,参数lpszSound与PlaySound的是一样的。8 w+ q) Y @$ x
MCI播放4 d- K9 t* Y/ J& ^4 d' I3 R. L
所有的MCI命令字符串都是通过多媒体API函数mciSendString传递给MCI的,该函数的声明为:
* e" [9 [ a$ _' r" ]" U; wMCIERROR mciSendString(
' f. r3 |8 N9 I6 ]1 oLPCTSTR lpszCommand, //MCI命令字符串 V" A' r; s7 d9 n4 \" H9 u
LPTSTR lpszReturnString, //存放反馈信息的缓冲区: E. E8 E) ]$ m( {7 Z+ i
UINT cchReturn, //缓冲区的长度0 p( C4 t; I' P% {
HANDLE hwndCallback //回调窗口的句柄,一般为NULL' V. q/ ?9 M7 O" U0 |
); //若成功则返回0,否则返回错误码。9 _# I; D# s8 L3 {* E! j- V
该函数返回的错误码可以用mciGetErrorString函数进行分析,该函数的声明为:; ^* `+ ~: U) [* h$ t: f! y
BOOL mciGetErrorString(
5 F: o. Z: o1 i0 O7 R0 E5 YDWORD fdwError, //函数mciSendString或mciSendCommand返回的错误码$ d3 v; a' T4 r7 |3 @0 K
LPTSTR lpszErrorText, //接收描述错误的字符串的缓冲区1 [8 _, w, m' h' ]9 U, R
UINT cchErrorText //缓冲区的长度
. _4 \! \5 V' n' H);& J4 k6 v$ v q9 E) l, S
|
|