|
原文:http://www.cnblogs.com/cltsq/articles/api.html
: |) T ]* @) K3 I* G+ |1. API之网络函数 0 p- b6 a5 V. H, X
WNetAddConnection 创建同一个网络资源的永久性连接 j& E7 V2 I6 k- q- g
WNetAddConnection2 创建同一个网络资源的连接 3 H# U1 W9 R$ i
WNetAddConnection3 创建同一个网络资源的连接 8 N! V% p6 h3 S, A; g
WNetCancelConnection 结束一个网络连接
5 ?1 E3 x8 |& O0 k0 e LWNetCancelConnection2 结束一个网络连接
$ T2 m# X$ A; i% l% R, cWNetCloseEnum 结束一次枚举操作
* b2 l: j; W) K R. O, H9 s% Z/ v. VWNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接
$ H5 o( n. E9 H) y. {# w! D8 vWNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接
. r/ O! p7 Z2 o& y# ~' uWNetEnumResource 枚举网络资源 7 @! o+ E! V- F$ r: j) ^' h$ x
WNetGetConnection 获取本地或已连接的一个资源的网络名称 1 C8 G# S% j- X8 P7 E3 X$ \
WNetGetLastError 获取网络错误的扩展错误信息
: d5 p$ t' k1 n9 B; PWNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称 + q( T2 y. n* l& F! t
WNetGetUser 获取一个网络资源用以连接的名字 ) y8 o! h- P$ e: ^5 s
WNetOpenEnum 启动对网络资源进行枚举的过程
% i1 f9 T4 N7 y2 G2 Y2 \2. API之消息函数 " Q: L& l! j5 l, {2 x: v
BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口 / G2 L" {3 X7 n/ w
GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 , T2 p* V- Y% S- }/ _
GetMessageTime 取得消息队列中上一条消息处理完毕时的时间
4 m( f5 ^5 y8 G0 N& F7 I6 U0 I7 |PostMessage 将一条消息投递到指定窗口的消息队列 1 ?0 J6 t& E7 w* y. o
PostThreadMessage 将一条消息投递给应用程序
1 W6 f0 c$ r& |+ F4 w1 n, KRegisterWindowMessage 获取分配给一个字串标识符的消息编号
# h4 }# z8 W( g0 Q8 f: _% {ReplyMessage 答复一个消息
4 W% ^$ c* V! d9 f. k0 KSendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口 5 A0 J% v) e. h A& e$ p) l
SendMessageCallback 将一条消息发给窗口 , \" _* {* b c( e$ ^
SendMessageTimeout 向窗口发送一条消息 " e4 n) @3 ~5 L2 `" ]
SendNotifyMessage 向窗口发送一条消息
: E* g9 Z6 n' N& L* @3 a3. API之文件处理函数
" r' @/ r- O* x. }CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等
8 E* E! ~- u1 n( o3 Z1 \CompareFileTime 对比两个文件的时间
1 J1 d, ~& L+ f g7 r o8 aCopyFile 复制文件 1 a9 m- E* j# v8 b6 Y
CreateDirectory 创建一个新目录 T6 m' U3 m5 `' Q& x, C
CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台 0 d: e" J/ i: ?, C
CreateFileMapping 创建一个新的文件映射对象
8 |4 d' W/ B! l( z; m8 b( x& GDeleteFile 删除指定文件
& r& a. c1 S- N' S6 wDeviceIoControl 对设备执行指定的操作
; B* ~( r% ~, }2 E: J5 VDosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值 " S. o) `$ \0 g9 A O8 I5 c
FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值
" ]5 j R; A/ Z6 }0 XFileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间 : K% z4 i" w/ x, k Q
FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构 4 G2 w: r$ x* ?9 Z5 Q$ o
FindClose 关闭由FindFirstFile函数创建的一个搜索句柄
+ u7 d$ ^' l! ^/ J1 F+ g vFindFirstFile 根据文件名查找文件 ! \$ O J6 c% C3 ]% t% I5 f
FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件 " P; u) k9 M; }
FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区 * a2 q( K; @$ F) L
FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘
9 q5 Y9 t3 ~" n5 x) q" U' c$ R. _GetBinaryType 判断文件是否可以执行
9 V j, b6 s9 PGetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数 . h+ \, V% \* J; B' b( L
GetCurrentDirectory 在一个缓冲区中装载当前目录
& _ H) u7 o4 f% F n( n% bDWORD GetCurrentDirectory(
5 m- A8 n5 n: b6 e$ Z, Q DWORD nBufferLength, //缓冲区大小9 G8 D: D; v7 ^
LPSTR lpBuffer //缓冲区的首地址
7 p. ~. ]5 E$ p8 x( k# | |9 V );+ ? h" J' Y( d. d1 k1 d
GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量 * W2 _$ U8 s* p1 f% g
GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息
0 P% R" b, g; q0 K8 k/ \GetDriveType 判断一个磁盘驱动器的类型
# |. w: q/ v7 m4 Q. V$ QGetExpandedName 取得一个压缩文件的全名
. @6 U" t# I F, R' Y+ i4 `0 m: L( A2 HGetFileAttributes 判断指定文件的属性 * Z. t/ d5 `) ?
GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制
, V+ E& c1 k( O) A1 fGetFileSize 判断文件长度 9 t2 }1 J# H9 y S& s" n
GetFileTime 取得指定文件的时间信息
" v w9 D2 {6 Q! p+ |" GGetFileType 在给出文件句柄的前提下,判断文件类型
- [1 U* x& t' T: U: \" L, iGetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息 0 C3 T* o* z- b! ~! T! k) d
GetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区
. S9 ^, b' R2 X2 _7 MGetFullPathName 获取指定文件的完整路径名
' r8 N9 g8 a8 qGetLogicalDrives 判断系统中存在哪些逻辑驱动器字母 5 { d( u: Y" N5 Y
GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径
K& W6 y$ C9 M( _: X6 U! `GetOverlappedResult 判断一个重叠操作当前的状态
; Y9 S5 Z$ A; k& rGetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值
, U2 i" n- |: s. E- w4 ~/ iGetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表
" X! V: c9 B& y# X7 uGetPrivateProfileString 为初始化文件中指定的条目取得字串
& ^( J) U ]% R3 d" KGetProfileInt 取得win.ini初始化文件中指定条目的一个整数值
8 m5 }# y0 B8 I1 ]' ZGetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表 / u1 q. m3 x1 j- Y) A" \& R# o2 x
GetProfileString 为win.ini初始化文件中指定的条目取得字串 , N8 ^. o/ K! N
GetShortPathName 获取指定文件的短路径名
- B3 Z5 T; W$ T4 TGetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名
* I. H7 _* R6 e, E' L, WGetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用
8 S) \9 N1 U' p0 |$ |+ tGetTempPath 获取为临时文件指定的路径 - i% P8 P( i. k1 H7 H a; R
GetVolumeInformation 获取与一个磁盘卷有关的信息 - a# c7 i) R& P6 z- N+ y* D- o
GetWindowsDirectory 获取Windows目录的完整路径名 % I3 O/ f1 {. N5 P
hread 参考lread
6 s4 Y# f3 y0 J! J" ^. ?) Chwrite 参考lwrite函数
# Q H7 J, R; h! b# ?0 l3 {' \lclose 关闭指定的文件
# J' {, W, Z( d6 slcreat 创建一个文件 ! O# N1 w: V0 z0 i
llseek 设置文件中进行读写的当前位置
( E, d/ o) P9 h3 L1 w4 u% S0 `LockFile 锁定文件的某一部分,使其不与其他应用程序共享 7 P6 J, E% z4 \5 ?" z
LockFileEx 与LockFile相似,只是它提供了更多的功能
, I' j4 u( ?1 E. b% H$ Ylopen 以二进制模式打开指定的文件
! Q! Z" Y0 g3 ], X" L8 Ilread 将文件中的数据读入内存缓冲区 + o- e" d# D" O. N% X4 {1 m# a
lwrite 将数据从内存缓冲区写入一个文件 ! D$ @$ Z- O* m3 |3 y9 f4 ]
LZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件
) T) ~6 U* n" P4 \" j# G6 CLZCopy 复制一个文件 ( E- X" ?2 }$ ?3 ]
LZInit 这个函数用于初始化内部缓冲区 $ ^% v M9 S: H! g7 @9 ]
LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件
4 ?, y8 _% V+ hLZRead 将数据从文件读入内存缓冲区
$ E1 W# _0 m4 JLZSeek 设置一个文件中进行读写的当前位置
) b/ {- j- d2 O7 ]; O3 uMapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间 1 Y; m& m" g1 |" b) S, U
MoveFile 移动文件
) v8 {8 N' z/ v2 g HOpenFile 这个函数能执行大量不同的文件操作 + y8 Z4 E- W+ \, q% {4 l
OpenFileMapping 打开一个现成的文件映射对象 - W$ g+ P- n, f! t$ R. y2 S# ^
QueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况
, [2 w+ b, y S7 Z7 bReadFile 从文件中读出数据 0 ]* j: Q8 D1 I; S0 H) {
ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调
5 i' c! p( K3 _" o) o, \0 iRegCloseKey 关闭系统注册表中的一个项(或键) & C0 G% c8 Y# j3 Q
RegConnectRegistry 访问远程系统的部分注册表 : [2 z) u: p5 l- V* F/ |
RegCreateKey 在指定的项下创建或打开一个项 ( p9 f; e* L/ s' }4 G. u
RegCreateKeyEx 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数
- p. T) a+ k* j, n/ bRegDeleteKey 删除现有项下方一个指定的子项 ! X9 j0 R5 D/ `4 }4 _- `
RegDeleteValue 删除指定项下方的一个值 1 Z8 u0 v4 f- a$ T
RegEnumKey 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx
4 L4 g" P- c5 |% K) ERegEnumKeyEx 枚举指定项下方的子项 : C; a% _5 z/ G# Y; ?' b
RegEnumValue 枚举指定项的值
5 A; e) `! p& S1 z3 ORegFlushKey 将对项和它的子项作出的改动实际写入磁盘
; D" X7 P: h0 q: O% v2 u8 c- N/ bRegGetKeySecurity 获取与一个注册表项有关的安全信息 " B" o! f0 p9 l5 P4 B
RegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息 ! ^! M! \/ P3 a* ]6 y2 j
RegNotifyChangeKeyValue 注册表项或它的任何一个子项发生变化时,用这个函数提供一种通知机制
% {$ C/ x/ @& }9 _RegOpenKey 打开一个现有的注册表项 2 u- n+ E" i- t! W& o3 _
RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数 # R" o3 @; @) b. ]9 V( J; T
RegQueryInfoKey 获取与一个项有关的信息 & ]; n- l q7 H) i: Q7 P9 w
RegQueryValue 取得指定项或子项的默认(未命名)值 & {4 l; x' `3 f
RegQueryValueEx 获取一个项的设置值 ! v" P; w# K% l M9 L7 `
RegReplaceKey 用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息 6 U' h) z' D1 J, a) o7 n
RegRestoreKey 从一个磁盘文件恢复注册表信息 5 W' S8 P9 \$ p$ L/ j
RegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件
+ z8 ^- Y0 D5 P# |2 g: J7 WRegSetKeySecurity 设置指定项的安全特性 + Y& W# C" r$ `+ e/ s
RegSetValue 设置指定项或子项的默认值 ) [2 |! k/ Q1 G
RegSetValueEx 设置指定项的值
1 ^3 V' j6 H/ B3 O4 wRegUnLoadKey 卸载指定的项以及它的所有子项
; e6 J% a* I8 \9 xRemoveDirectory 删除指定目录
i; v! ~6 f$ S# GSearchPath 查找指定文件
3 v7 y0 i$ S7 mSetCurrentDirectory 设置当前目录
6 d6 g; |2 @( @& ySetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾 ; U' m* \, O5 u5 ] H2 T/ Y6 p. t2 H
SetFileAttributes 设置文件属性 / a3 {, M& p* R J0 M3 l2 o
SetFilePointer 在一个文件中设置当前的读写位置 2 J5 f/ ^7 V. I: F' p1 }
SetFileTime 设置文件的创建、访问及上次修改时间
/ X$ Z8 j& |) k. R T+ H3 F0 J1 pSetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果 - R9 O" M, s6 h O
SetVolumeLabel 设置一个磁盘的卷标(Label)
* w) h9 h- `! x% mSystemTimeToFileTime 根据一个FILETIME结构的内容,载入一个SYSTEMTIME结构 . Y+ d5 y8 u9 Z1 ~
UnlockFile 解除对一个文件的锁定
3 Z' T/ a1 B+ h/ p6 Z6 HUnlockFileEx 解除对一个文件的锁定 " y7 i/ M; ]! A, h- |% V: |( L" O( u8 F9 @
UnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射
; R3 L) K3 z2 h% h2 ZVerFindFile 用这个函数决定一个文件应安装到哪里
8 U& Y: A# k$ Y B1 fVerInstallFile 用这个函数安装一个文件 5 z. e6 z, l- {9 U
VerLanguageName 这个函数能根据16位语言代码获取一种语言的名称
0 r% f3 y- {+ Q3 ]3 D- d" I2 y0 VVerQueryValue 这个函数用于从版本资源中获取信息 9 Z& F3 L) _8 B
WriteFile 将数据写入一个文件
8 j6 M, ?# p! p4 v. G( }( hWriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调
. `! C7 B7 [0 E# Y$ `) k! aWritePrivateProfileSection 为一个初始化文件(.ini)中指定的小节设置所有项名和值
5 U$ b4 g* }$ y3 T% s# T" ~WritePrivateProfileString 在初始化文件指定小节内设置一个字串 8 l$ v8 u' X1 A
WriteProfileSection 为Win.ini初始化文件中一个指定的小节设置所有项名和值
4 `8 e! d h! |6 h% }. u/ BWriteProfileString 在Win.ini初始化文件指定小节内设置一个字串 3 g4 K! H, n1 I9 O) y3 {4 y% B
4. API之打印函数 ' r5 j( {$ g! h5 L3 ?2 Z7 x
AbortDoc 取消一份文档的打印
/ f$ q3 u4 N/ W" o* y$ j+ \1 a* n1 kAbortPrinter 删除与一台打印机关联在一起的缓冲文件
1 P9 ^6 E7 z- uAddForm 为打印机的表单列表添加一个新表单
& I" ^- c- D6 x& X3 H9 t2 Q6 }AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 ) K& x$ i; }- [( R) r! {
AddMonitor 为系统添加一个打印机监视器
) f0 I( M9 ~% e& fAddPort 启动"添加端口"对话框,允许用户在系统可用端口列表中加入一个新端口
, p5 b4 v. M1 |AddPrinter 在系统中添加一台新打印机 - M" m; P1 F' D/ L4 ]
AddPrinterConnection 连接指定的打印机
6 l( d, S( k- S( lAddPrinterDriver 为指定的系统添加一个打印驱动程序 ( m' E/ N; n, r3 { h
AddPrintProcessor 为指定的系统添加一个打印处理器 4 z5 l& c& n' \$ {2 k" z3 |, J
AddPrintProvidor 为系统添加一个打印供应商 9 z6 Q1 g" j/ C0 y) Y' O: A& P* T
AdvancedDocumentProperties 启动打印机文档设置对话框 ( w3 |6 t* \, c% V h7 ^
ClosePrinter 关闭一个打开的打印机对象 - h: I$ |/ Y- P6 r' |
ConfigurePort 针对指定的端口,启动一个端口配置对话框
; Q+ C' C+ q+ B# QConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接
0 e2 b7 H) g4 ^/ QDeleteForm 从打印机可用表单列表中删除一个表单 / } @' q1 L' r4 a) H0 v
DeleteMonitor 删除指定的打印监视器
2 I3 d* f' W: ]DeletePort 启动"删除端口"对话框,允许用户从当前系统删除一个端口
$ U9 B$ e3 Z% u* N6 s6 ZDeletePrinter 将指定的打印机标志为从系统中删除
. X9 |7 s6 Q3 I) j) X. e4 kDeletePrinterConnection 删除与指定打印机的连接
1 b+ Z8 u6 S* G, X7 XDeletePrinterDriver 从系统删除一个打印机驱动程序 Z/ s. j1 d9 q6 R
DeletePrintProcessor 从指定系统删除一个打印处理器 ' n6 |" P, A# l5 W; E2 V( `$ E
DeletePrintProvidor 从系统中删除一个打印供应商 1 m- y" f. N, _+ Q+ w# t2 @2 ~
DeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息
7 W9 _4 H$ W9 S2 F1 @DocumentProperties 打印机配置控制函数
! I7 ?2 b, T" B6 z, fEndDocAPI 结束一个成功的打印作业
X9 z+ E( Y1 t4 a* j4 CEndDocPrinter 在后台打印程序的级别指定一个文档的结束 ; s. R% Y! X f& u3 W* Q
EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 ) ~% A! w7 e5 P# [+ f
EndPagePrinter 指定一个页在打印作业中的结尾 % t0 `# A" t$ g0 e% G
EnumForms 枚举一台打印机可用的表单 % B) ~9 G4 Y+ s; o( B: F; a6 r' e
EnumJobs 枚举打印队列中的作业 7 w6 u7 C+ p) V: G- i- W
EnumMonitors 枚举可用的打印监视器
0 |! s0 Z" O+ G5 `EnumPorts 枚举一个系统可用的端口 , e1 N8 E2 q( \: o2 x6 A9 K
EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 ) ~2 ~5 |+ F/ n0 q, q: ^) w. \
EnumPrinters 枚举系统中安装的打印机 0 C/ w; D W# k# d/ C
EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 $ g% J7 ^ i+ C5 F' Z
EnumPrintProcessors 枚举系统中可用的打印处理器 : }7 D/ w2 r. ?7 { n1 Z3 M9 L3 o
Escape 设备控制函数 ! m+ }. @. ^: A$ Y% Q8 a# g6 ~
FindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 $ X: y/ R1 O) i( L. k
FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 ( Z, `3 S" W5 w# N
FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 2 R' m/ b! v' v5 |1 w0 w' J4 I
FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 ! j% V6 {1 ?# ^4 x, L
GetForm 取得与指定表单有关的信息
( R) x0 u R2 z ?GetJob 获取与指定作业有关的信息 6 V! N; l$ B: r4 j; H3 G0 \
GetPrinter 取得与指定打印机有关的信息
2 |: E# a0 w& T2 r4 kGetPrinterData 为打印机设置注册表配置信息
4 R- M$ j3 q/ b) [5 N8 H. I0 MGetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息
. K; [1 n" d! ^4 R! Z: tGetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么
* A$ ~6 |; v/ v( TGetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录
8 M7 H% Q/ M/ D N0 u+ ?' BOpenPrinter 打开指定的打印机,并获取打印机的句柄 : _4 B% ^( r- C1 ~ z
PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框
, }. n, L! O0 ^! J [( A! oPrinterProperties 启动打印机属性对话框,以便对打印机进行配置
$ Z) c+ r& T$ u6 KReadPrinter 从打印机读入数据 ( g+ c. Q5 c0 \
ResetDC 重设一个设备场景 - _1 @6 E6 V5 A) \
ResetPrinter 改变指定打印机的默认数据类型及文档设置 7 G! k' s) S% X7 r/ n& w! _
ScheduleJob 提交一个要打印的作业 ^8 r" N9 }6 ?8 }6 Q0 n9 y
SetAbortProc 为Windows指定取消函数的地址 : f7 M+ w7 ^3 u9 ]/ d" }$ E9 |
SetForm 为指定的表单设置信息 4 k( y% s+ U/ G. A# S! w% I
SetJob 对一个打印作业的状态进行控制
+ F( p) P! s" s% `, H) L) R8 K2 gSetPrinter 对一台打印机的状态进行控制
2 e Z9 J5 M+ z: D( p/ eSetPrinterData 设置打印机的注册表配置信息 2 C! W* t1 J5 Q
StartDoc 开始一个打印作业
9 a& F: k0 [$ C s8 kStartDocPrinter 在后台打印的级别启动一个新文档 + q- m/ {# _- u4 I Z9 ?6 H
StartPage 打印一个新页前要先调用这个函数
: f8 p4 m0 d2 p$ [) O' [. h3 cStartPagePrinter 在打印作业中指定一个新页的开始
& [' J# ^3 p! Q) n% PWritePrinter 将发送目录中的数据写入打印机 ! `4 }" w" V' G! j- J7 G2 [
5. API之文本和字体函数
* p$ z8 P! \4 x0 f- nAddFontResource 在Windows系统中添加一种字体资源
* e7 Z/ g& z! P8 @CreateFont 用指定的属性创建一种逻辑字体
$ c& g5 U$ m+ H5 YCreateFontIndirect 用指定的属性创建一种逻辑字体 5 Y; x6 D: `# f0 z" Q
CreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统
s! d4 ?! k; D8 q7 ~DrawText 将文本描绘到指定的矩形中 4 t6 Q; Y# o' n2 d. z ?
DrawTextEx 与DrawText相似,只是加入了更多的功能 $ v. [6 G: u7 |+ l+ R/ r
EnumFontFamilies 列举指定设备可用的字体
! ~' V: o9 z$ C# S- REnumFontFamiliesEx 列举指定设备可用的字体
: J* J' E5 S7 i a- Z Y" ]EnumFonts 列举指定设备可用的字体 4 l/ [4 E) R% ^% Q% T" L5 p9 |
ExtTextOut 经过扩展的文本描绘函数。也请参考SetTextAlign函数 " [5 K) g1 T' y/ b
GetAspectRatioFilterEx 用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小
$ v& c# {& ^" u4 v1 N( gGetCharABCWidths 判断TureType字体中一个或多个字符的A-B-C大小 ' `% C; v+ P& F" E# \/ r. ]' a
GetCharABCWidthsFloat 查询一种字体中一个或多个字符的A-B-C尺寸 # s* M( j7 e. T! b# A
GetCharacterPlacement 该函数用于了解如何用一个给定的字符显示一个字串 0 @8 z; a: g0 @' V
GetCharWidth 调查字体中一个或多个字符的宽度 6 o: ^/ s6 \2 L& K0 I* M0 V2 i* q
GetFontData 接收一种可缩放字体文件的数据
- y$ u0 B+ p# o3 c/ r9 I1 A. PGetFontLanguageInfo 返回目前选入指定设备场景中的字体的信息
5 W2 D' o9 F, Q' D# WGetGlyphOutline 取得TureType字体中构成一个字符的曲线信息
: v& B% E4 e6 v* {6 ~+ ]GetKerningPairs 取得指定字体的字距信息 3 c5 Z" B \$ V6 c$ @7 e: u" n
GetOutlineTextMetrics 接收与TureType字体内部特征有关的详细信息
6 l& m( _1 F+ Z' |1 [; H+ DGetRasterizerCaps 了解系统是否有能力支持可缩放的字体 - ]0 s+ h. c) s( i6 P% c
GetTabbedTextExtent 判断一个字串占据的范围,同时考虑制表站扩充的因素 * e' {' i2 D" R4 P- m, C* E" _5 U8 k
GetTextAlign 接收一个设备场景当前的文本对齐标志
- a6 \" [$ J/ k, y4 W3 J- ~GetTextCharacterExtra 判断额外字符间距的当前值 6 J+ d7 q3 G+ \
GetTextCharset 接收当前选入指定设备场景的字体的字符集标识符 & F' A- _! C- T% A# y- m/ ?
GetTextCharsetInfo 获取与当前选定字体的字符集有关的详细信息 4 ?, v5 @7 u2 s
GetTextColor 判断当前字体颜色。通常也称为"前景色"
' P$ I9 p+ Z* S$ EGetTextExtentExPoint 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息
- [$ Q. o9 w4 j! U" zGetTextExtentPoint 判断一个字串的大小(范围)
" ^7 z5 K& n- N7 r- M0 `9 i. FGetTextFace 获取一种字体的字样名 8 j2 f7 U" r" H1 a
GetTextMetrics 获取与选入一种设备场景的物理字体有关的信息
+ ~$ A- B3 Z* ?" y' F- KGrayString 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态 # M N5 q+ F2 e5 \
PolyTextOut 描绘一系列字串 ( q+ ~6 C0 r/ [4 Y
RemoveFontResource 从Windows系统中删除一种字体资源 % z+ U j) H" b ?; U6 X
SetMapperFlags Windows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体 8 D- Z5 N! D! U
SetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置 + Z: m9 y% v+ g" ^+ g
SetTextCharacterExtra 描绘文本的时候,指定要在字符间插入的额外间距 4 c+ U) t: T' Y# ~1 u' n; ?8 k
SetTextColor 设置当前文本颜色。这种颜色也称为"前景色"
* h1 n3 Q) J: O H- m) L5 iSetTextJustification 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理
+ E+ j4 T) j. I( A& L" g1 e5 @$ wTabbedTextOut 支持制表站的一个文本描绘函数
2 `4 S' C/ D6 h yTextOut 文本绘图函数 ! P; R- T. f- o- T. P3 h, n& C/ c
WINGDIAPI BOOL WINAPI TextOut(
, P1 V. [* c' Q. W+ zHDC, //输出设备2 F9 Y9 c, ?8 j }' N( `# l
int, //输出的横坐标
* m7 u" t& {9 cint, //纵坐标
4 }, ~7 M2 e3 z! Z7 g) L7 ALPCSTR, //输出的文本str
5 R0 p: t* y; e5 y. uint); //文本的长度:lstrlen(str)
4 z- E0 ^( R0 }5 S, C" q+ s6. API之菜单函数 ) u2 ?6 c/ M" Z
AppendMenu 在指定的菜单里添加一个菜单项 ( z* g9 C$ n8 d: {3 V/ U# R' y+ D
CheckMenuItem 复选或撤消复选指定的菜单条目 7 B9 G4 p" g4 [# D5 H. {5 Z! a
CheckMenuRadioItem 指定一个菜单条目被复选成"单选"项目 , u: a( |3 E4 p" b
CreateMenu 创建新菜单
" ^. h3 C% s: }9 ?* ZCreatePopupMenu 创建一个空的弹出式菜单
% m# c7 r- ^8 a F: t; t4 jDeleteMenu 删除指定的菜单条目
9 r- m! j% @1 [% J$ p( HDestroyMenu 删除指定的菜单 . s p0 t" {+ ]! U
DrawMenuBar 为指定的窗口重画菜单
/ N1 Y) j0 z8 `& N9 L. @* m# hEnableMenuItem 允许或禁止指定的菜单条目 * X# e4 U8 n# A& z5 ?
GetMenu 取得窗口中一个菜单的句柄
; K B& n4 c, y' {2 B9 xGetMenuCheckMarkDimensions 返回一个菜单复选符的大小 * Z, H- m) ^: a) ^$ U2 K
GetMenuContextHelpId 取得一个菜单的帮助场景ID
( Q+ T1 B9 Y, vGetMenuDefaultItem 判断菜单中的哪个条目是默认条目
" u; s4 Z2 {* ZGetMenuItemCount 返回菜单中条目(菜单项)的数量
0 X( g7 U. J: C- y, ZGetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID
! j0 d# _: z5 v! @5 w UGetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息 : Z/ b! G. G# u
GetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息 ; e4 v q1 l; @" f9 W, X
GetMenuState 取得与指定菜单条目状态有关的信息
: U0 g$ ^1 R6 d. v, ^GetMenuString 取得指定菜单条目的字串 % V" K% Q4 L& b* a
GetSubMenu 取得一个弹出式菜单的句柄,它位于菜单中指定的位置
, S1 G# O$ U9 h/ p6 t* EGetSystemMenu 取得指定窗口的系统菜单的句柄
5 i4 r/ t- F2 @' l, HHiliteMenuItem 控制顶级菜单条目的加亮显示状态
7 E- p8 n( ~+ G5 F( AInsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动
* g, S- N# O8 n7 r4 C. U1 uInsertMenuItem 插入一个新菜单条目
/ |6 ?- P* a _IsMenu 判断指定的句柄是否为一个菜单的句柄 ' @9 \( ^5 s9 [2 r* V! K
LoadMenu 从指定的模块或应用程序实例中载入一个菜单
5 \% C, E* u. q+ Q& ELoadMenuIndirect 载入一个菜单
+ Q) ^7 n# H* a J OMenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点 ( S- K I/ J" b$ r% D
ModifyMenu 改变菜单条目
8 O/ S6 u2 A5 d7 T: W9 ?RemoveMenu 删除指定的菜单条目 2 g9 {3 L7 w, T3 @6 ?
SetMenu 设置窗口菜单
& d! Y4 o8 h- E. |% ^) j1 R6 ZSetMenuContextHelpId 设置一个菜单的帮助场景ID " x; F% R$ ?) |% C: F& _
SetMenuDefaultItem 将一个菜单条目设为默认条目
- Z6 ? B, o2 T6 X3 u+ bSetMenuItemBitmaps 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√)
$ K4 |# j3 e$ @# K- ySetMenuItemInfo 为一个菜单条目设置指定的信息
% m- g4 ]: z. {9 C/ C2 l" ~TrackPopupMenu 在屏幕的任意地方显示一个弹出式菜单
- d8 q& Z- s/ |: yTrackPopupMenuEx 与TrackPopupMenu相似,只是它提供了额外的功能 : U7 O+ a9 ]9 `7 D) S. U; \
7. API之位图、图标和光栅运算函数
6 ~2 J. {7 X7 l' W! m. `BitBlt 将一幅位图从一个设备场景复制到另一个5 I* D2 b0 l( t) N' P
WINGDIAPI BOOL WINAPI BitBlt(3 D# w* r+ ~6 P( |. v
HDC, //目标HDC
A- c6 F/ B8 O; t/ u/ Xint, //X17 W6 S9 S5 H& `/ g
int, //Y1. d, {6 d# p. D4 j8 [
int, //width- p- {- ?8 l: }9 `$ S% w1 ^
int, //height/ ~0 @4 ~( f6 E0 d* j+ h
HDC, //源HDC& p* u: D& R+ y& e2 l
int, //右边的距离/ J) Y/ z7 T F/ F8 E6 N+ l' ^
int, //??
& y5 _& \5 u6 g8 K/ E1 {8 }DWORD); //拷贝方式:SRCCOPY|SRCPAINT|SRCAND|SRCINVERT|RCERASE|NOTSRCCOPY|NOTSRCERASE|MERGECOPY|MERGEPAINT|
: Y- l' w' M* u |5 dPATCOPY|PATPAINT|PATINVERT|DSTINVERT|BLACKNESS|WHITENESS6 u, U/ T3 K; P0 t1 |
CopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序 4 {! t6 n2 i0 c8 \- i) ^8 h" U
CopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作 9 u8 e$ N, ~. F% A& o" y) Y0 Z3 O o
CreateBitmap 按照规定的格式创建一幅与设备有关位图 3 f' K% y& r" D, [
CreateBitmapIndirect 创建一幅与设备有关位图
; _ i. d; l! w7 S t. `CreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容
5 L. x+ k7 r- G2 ~CreateCursor 创建一个鼠标指针 7 k" h- T W' c/ q4 m8 ?4 z
CreateDIBitmap 根据一幅与设备无关的位图创建一幅与设备有关的位图
8 n4 w" I# @' hCreateDIBSection 创建一个DIBSection
4 R6 b* f3 ^6 y& ^' ^CreateIcon 创建一个图标
" H3 B& E8 i0 J( `- V6 {CreateIconIndirect 创建一个图标
0 p B2 h# T$ Y: J3 K" ^. HDestroyCursor 清除指定的鼠标指针,并释放它占用的所有系统资源
- `. P5 m% T) W d0 _4 A6 YDestroyIcon 清除图标 ( F( B) q+ a5 H3 W- b0 ^5 W. F- x3 J
DrawIcon 在指定的位置画一个图标
" N1 u8 _8 n# t- p+ R# e" Y/ nDrawIconEx 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能
1 I4 v! P! _) u/ l! S4 T2 }ExtractAssociatedIcon 判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之
* A* }: G9 e. [6 E3 X* _4 r9 VExtractIcon 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来 . ?0 p" H# Z2 L4 u; H
GetBitmapBits 将来自位图的二进制位复制到一个缓冲区 , [/ ^4 x: a3 v+ p) M, s- S/ ~6 R) D
GetBitmapDimensionEx 取得一幅位图的宽度和高度
E: D# N W# ^% ]1 ?8 l3 C* GGetDIBColorTable 从选入设备场景的DIBSection中取得颜色表信息
2 k( R: W7 {1 R5 I7 b1 E/ [GetDIBits 将来自一幅位图的二进制位复制到一幅与设备无关的位图里
% U' r4 \( t4 j+ ?. [GetIconInfo 取得与图标有关的信息
- M$ K" q/ S1 y! O. S. O* H) YGetStretchBltMode 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式
`9 ^$ ^8 l3 ^7 s5 y* ~LoadBitmap 从指定的模块或应用程序实例中载入一幅位图
0 x/ ]( [' E) ?+ c+ d) K, _LoadCursor 从指定的模块或应用程序实例中载入一个鼠标指针
- V R e* s8 P. y4 s! v0 A/ n2 GLoadCursorFromFile 在一个指针文件或一个动画指针文件的基础上创建一个指针 + Q: P! }1 _2 c% A& l1 K* S
LoadIcon 从指定的模块或应用程序实例中载入一个图标 6 O+ ~$ i- g# m3 l4 m! T3 V: n
LoadImage 载入一个位图、图标或指针 5 ]) a" ~+ ]+ c0 n, q3 l; Z
HANDLE LoadImageA(
4 J9 F- e$ q \HINSTANCE, //当前实例句柄:AfxGetInstanceHandle()
2 ^! {) ~( |2 x/ X) Z& ~& m) A LPCSTR, //资源所在的目录:c:\help.bmp" ^, H' @1 Y4 Y3 E d4 K
UINT, //类型:IMAGE_BITMAP|IMAGE_ICON|IMAGE_CURSOR|IMAGE_ENHMETAFILE* r( u6 P/ T9 |3 \" q" M3 j1 ^
int, //
6 M6 `; z0 _& i) e int, //' B) Z" A, I# O1 ~
UINT); //风格:LR_DEFAULTCOLOR|LR_MONOCHROME|LR_COLOR|LR_COPYRETURNORG|
* J9 x" h7 O% u4 h1 UR_COPYDELETEORG|LR_LOADFROMFILE|LR_LOADTRANSPARENT|LR_DEFAULTSIZE|LR_VGACOLOR|; ?) G C! F+ E1 ]4 _6 s
LR_LOADMAP3DCOLORS|LR_CREATEDIBSECTION|LR_COPYFROMRESOURCE|LR_SHARED8 _) T" l0 K: |4 @
MaskBlt 执行复杂的图象传输,同时进行掩模(MASK)处理
" n' z6 Y- E' XPatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景
Q+ P, }- O# {9 @PlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理
. S3 N2 x% C, U; W0 \" p3 pSetBitmapBits 将来自缓冲区的二进制位复制到一幅位图 # H2 N0 M6 s1 f) i0 \
SetBitmapDimensionEx 设置一幅位图的宽度。以一毫米的十分之一为单位 $ V- c1 N! m7 h1 V
SetDIBColorTable 设置选入设备场景的一个DIBSection的颜色表信息
0 R( S- S4 C4 XSetDIBits 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里 + r1 {# g6 c0 I6 u. U, R
SetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备
. \! d3 o8 K' B# _SetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式
& B, W2 h9 M- L k, i2 }3 kStretchBlt 将一幅位图从一个设备场景复制到另一个
/ z+ Z8 ~: C; S* y+ x) w4 DStretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景 ( q" ^' T% \# _
8. API之绘图函数 q' A; G, J# J" o; e9 b4 f
AbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作 % I! ?. V& }7 R' F+ S# E7 t- f
AngleArc 用一个连接弧画一条线 ' Z s6 z! |" Y6 O4 v! O1 b
Arc 画一个圆弧 4 A8 p& T9 a) F' g: X& o
BeginPath 启动一个路径分支
" p( o( |: f2 l& }% F& GCancelDC 取消另一个线程里的长时间绘图操作 * o3 p9 g6 i/ Y g! R8 f" s, n8 Q
Chord 画一个弦 6 {) Q- A8 a2 c- l9 A8 K
CloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄 ( w% ?, [( k V7 i5 o
CloseFigure 描绘到一个路径时,关闭当前打开的图形
' l# j3 J. B+ n* H* PCloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄 , ~* f) e/ k9 h
CopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝)
; e- ] P c& @$ I- V4 ^, _9 aCopyMetaFile 制作指定(标准)图元文件的一个副本 2 Q5 N' W+ }0 l0 ]1 D
CreateBrushIndirect 在一个LOGBRUSH数据结构的基础上创建一个刷子
" j8 ~" ^6 m. O) L! l" h4 `CreateDIBPatternBrush 用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案)
" z! q( j6 p* GCreateEnhMetaFile 创建一个增强型的图元文件设备场景
0 r: Y; {! H* b; d6 H+ Y3 XCreateHatchBrush 创建带有阴影图案的一个刷子 * o+ L- A! O' K& \0 R) O
CreateMetaFile 创建一个图元文件设备场景
* i$ x2 e3 {4 n1 [4 b' hCreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子 * L( [# K4 I( R: A
CreatePen 用指定的样式、宽度和颜色创建一个画笔 2 L. {" [; g- r! X9 r9 Q! }
CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔 & [+ _" V9 q+ A5 ?2 Z* V+ o5 `2 U2 u
CreateSolidBrush 用纯色创建一个刷子
/ J7 {& N5 A2 T4 W. ?DeleteEnhMetaFile 删除指定的增强型图元文件 2 H6 C/ y, j E
DeleteMetaFile 删除指定的图元文件
" C% a f" t4 f/ V7 m0 d4 tWINGDIAPI BOOL WINAPI DeleteObject(HGDIOBJ) 删除GDI对象,对象使用的所有系统资源都会被释放, s. o/ G r7 F2 o
DrawEdge 用指定的样式描绘一个矩形的边框 ; [7 m% X+ C8 @( W0 J8 Z" D
DrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序
4 a9 I* {# Y* W( y% `DrawFocusRect 画一个焦点矩形 + E3 R2 z8 y# d, Y& a$ t; D
DrawFrameControl 描绘一个标准控件 ) E1 F# Z: ~' p0 ~2 {
DrawState 为一幅图象或绘图操作应用各式各样的效果
4 g3 c5 ]( S/ \9 BEllipse 描绘一个椭圆,由指定的矩形围绕
+ \9 u) \9 J- A4 oEndPath 停止定义一个路径 ) X }5 [% W9 z3 {/ ?3 r- J, d' j
EnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录
, M! E, z; l* ?# v) V6 C, o8 _EnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录 $ k1 Z9 n' ?/ C( r2 [
EnumObjects 枚举可随同指定设备场景使用的画笔和刷子 9 p6 z) A+ M: X* t* r! m m
ExtCreatePen 创建一个扩展画笔(装饰或几何) : }0 D0 D2 Y+ X9 M- V H4 `
ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域
" K f' r! A' ?! d. @7 kFillPath 关闭路径中任何打开的图形,并用当前刷子填充
' s0 L" f+ x% t% N! sFillRect 用指定的刷子填充一个矩形
) p0 n! o5 W: L( r8 AFlattenPath 将一个路径中的所有曲线都转换成线段 8 P2 M$ h$ i" M/ ?8 n
FloodFill 用当前选定的刷子在指定的设备场景中填充一个区域 % l4 J. s3 g0 Z6 v* [2 x6 ]9 L
FrameRect 用指定的刷子围绕一个矩形画一个边框 1 Y- a) G0 a6 G$ _0 n* O
GdiComment 为指定的增强型图元文件设备场景添加一条注释信息
8 u2 j+ R/ T* u( t) xGdiFlush 执行任何未决的绘图操作 * K2 r/ w+ t1 |% I% D, l. Q1 Z- @
GdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中 4 m+ P4 u- O% s! Y" K2 v- z
GdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列 . h3 Z3 m: v! l2 T
GetArcDirection 画圆弧的时候,判断当前采用的绘图方向 " a+ ]. ^5 N$ p( I, M @
GetBkColor 取得指定设备场景当前的背景颜色 2 W# t# r; L* k+ W3 E# a+ L
GetBkMode 针对指定的设备场景,取得当前的背景填充模式 " i) [3 W+ l! j* B2 x
GetBrushOrgEx 判断指定设备场景中当前选定刷子起点
; G0 G H' O& t, MGetCurrentObject 获得指定类型的当前选定对象
* s+ E% B8 [, C( g/ x% YGetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置
* U2 x9 c- n& `GetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄 3 P# b, \+ T8 X9 b
GetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里 , Y! S9 b2 q9 H' ~4 p7 i: n D
GetEnhMetaFileDescription 返回对一个增强型图元文件的说明 2 r3 |; S- u( j1 E( T, j
GetEnhMetaFileHeader 取得增强型图元文件的图元文件头
) F8 |! ]9 a. q1 KGetEnhMetaFilePaletteEntries 取得增强型图元文件的全部或部分调色板
( c' P: J3 O3 k8 Z* A% WGetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄
2 M; l( P# F. [3 H8 ^GetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区 4 |8 z9 F# M0 A3 f
GetMiterLimit 取得设备场景的斜率限制(Miter)设置
- K" @+ T& H6 u0 \; G6 S: GGetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色
! R3 `' k; D8 h" D2 X/ w4 GGetObjectAPI 取得对指定对象进行说明的一个结构 * L- {: v9 l" d
GetObjectType 判断由指定句柄引用的GDI对象的类型 / Z) ^% @$ z! G. E: N! X& A* O
GetPath 取得对当前路径进行定义的一系列数据
7 j0 F( ?/ R; M3 BGetPixel 在指定的设备场景中取得一个像素的RGB值 : }1 g. L( x0 ^* |5 W# B
GetPolyFillMode 针对指定的设备场景,获得多边形填充模式 ! R' j" W# {3 j4 l) r6 F5 l
GetROP2 针对指定的设备场景,取得当前的绘图模式 . l! b* e' u0 p+ N& [6 C& @& O
GetStockObject 取得一个固有对象(Stock) ' ~0 g/ T/ |7 ?/ ?0 t7 ^, o0 X4 u
GetSysColorBrush 为任何一种标准系统颜色取得一个刷子
$ S k4 M$ _) O) o3 yGetWinMetaFileBits 通过在一个缓冲区中填充用于标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件
: r0 S3 f' R H/ NInvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形
- W" g3 V; V1 n; {, T) iLineDDA 枚举指定线段中的所有点 # `. D i8 W% F- l9 h+ n
LineTo 用当前画笔画一条线,从当前位置连到一个指定的点 4 k) i' q/ |3 H, e. N* \9 {
MoveToEx 为指定的设备场景指定一个新的当前画笔位置
5 }( Q j* \9 i+ }2 UPaintDesk 在指定的设备场景中描绘桌面墙纸图案
9 X- |% i2 a2 y3 bPathToRegion 将当前选定的路径转换到一个区域里 7 q) @3 d" ~, w8 y# j1 V
Pie 画一个饼图
% R0 y, T1 ?4 S0 {1 h" v' T& SPlayEnhMetaFile 在指定的设备场景中画一个增强型图元文件
, l% n1 B& F U+ o7 FPlayEnhMetaFileRecord 回放单独一条增强型图元文件记录 2 @% P6 k, ?. j* Q" Y2 N$ B
PlayMetaFile 在指定的设备场景中回放一个图元文件
; t% ~7 _; o8 Z9 n8 F$ K7 T% V! rPlayMetaFileRecord 回放来自图元文件的单条记录
/ i. o4 d5 |7 w y* bPolyBezier 描绘一条或多条贝塞尔(Bezier)曲线
3 T# A& N3 n, NPolyDraw 描绘一条复杂的曲线,由线段及贝塞尔曲线组成
' n8 d. n. X! z+ {! q7 y6 |# \! tPolygon 描绘一个多边形 ; x. {* i) s9 T2 }. `- d
Polyline 用当前画笔描绘一系列线段
# {$ C! E( O9 x5 F" l: X+ FPolyPolygon 用当前选定画笔描绘两个或多个多边形 4 ^# I: l+ l4 z2 d1 h) n- X
PolyPolyline 用当前选定画笔描绘两个或多个多边形
$ k) F; s& I! d( ^/ l- nRectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充
) K2 _ n5 N4 G3 `( o( \# Z. [RoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充
) u% t- z4 v! C& y% J5 d( @' bSelectClipPath 将设备场景当前的路径合并到剪切区域里 * W: E* `7 `' X! v/ V
SelectObject 为当前设备场景选择图形对象
/ m. o: ^, O- A: j0 A WINGDIAPI HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ);
4 y0 |" `4 m1 L0 j$ R. ^9 nSetArcDirection 设置圆弧的描绘方向 0 u* b0 R+ R: K$ K4 [
SetBkColor 为指定的设备场景设置背景颜色 % Z |& z' `: W
SetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式 : v- Q% [9 i6 g4 b6 k- \8 d$ g
SetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点 $ p1 g2 V7 h; b9 L
SetEnhMetaFileBits 用指定内存缓冲区内包含的数据创建一个增强型图元文件 2 s: A* a& Z: A+ }) V2 @
SetMetaFileBitsEx 用包含在指定内存缓冲区内的数据结构创建一个图元文件 : e" v. A7 {7 P) \+ c8 i
SetMiterLimit 设置设备场景当前的斜率限制 ! F, P& L% r& A9 w& {6 i
SetPixel 在指定的设备场景中设置一个像素的RGB值
6 O8 A/ e( U5 D( c; t" ISetPixelV 在指定的设备场景中设置一个像素的RGB值
- ^& A$ L7 c; MSetPolyFillMode 设置多边形的填充模式 . t. W$ m6 j4 B4 H9 z
SetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致
! I Z) K" o' O$ S6 ESetWinMetaFileBits 将一个标准Windows图元文件转换成增强型图元文件 * }+ Y4 X: t4 {3 }5 `: O
StrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域 9 {# Y: C$ T- Q! k! Q
StrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭
j; s5 y' H" \4 K, lUnrealizeObject 将一个刷子对象选入设备场景之前,如刷子的起点准备用SetBrushOrgEx修改,则必须先调用本函数 : e# T ^. |6 L/ T. b+ B5 g; j
WidenPath 根据选定画笔的宽度,重新定义当前选定的路径
m$ n0 {+ F# m* T3 n9. API之设备场景函数
& s0 D% J( I' ?) t6 T2 r6 SCombineRgn 将两个区域组合为一个新区域 * h. z+ T% V& j; H% X
CombineTransform 驱动世界转换。它相当于依顺序进行两次转换
( t z) ?6 s- F3 I. i: |CreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景
. f0 p# h! g$ ~! |CreateDC 为专门设备创建设备场景
* K; M; f; G( Z$ o7 X0 ]8 m. a1 u5 CCreateEllipticRgn 创建一个椭圆 " |4 Q( w( H1 a8 A0 t" y
CreateEllipticRgnIndirect 创建一个内切于特定矩形的椭圆区域 7 Z5 E1 Z" }& f$ r; Y
CreateIC 为专用设备创建一个信息场景
! ?' H$ x* h2 HCreatePolygonRgn 创建一个由一系列点围成的区域
. `1 Y$ O* f6 M! g* D3 _6 LCreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的
2 i! X7 l# W& ICreateRectRgn 创建一个矩形区域 - P9 h! F7 k3 F0 W+ J
CreateRectRgnIndirect 创建一个矩形区域 * Y. Q+ v: B$ s3 r# j& G
CreateRoundRectRgn 创建一个圆角矩形
' V3 I" ]0 k/ |; i. jDeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源
# h# K. u+ t9 W+ r& U L. oDPtoLP 将点阵从设备坐标转换到专用设备场景逻辑坐标
; Y# [1 b" }5 P' P8 d/ JEqualRgn 确定两个区域是否相等 1 s; O+ n; {% a* `
ExcludeClipRect 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图 / _' E; U5 T$ A+ l. `+ Z* [
ExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域
$ @5 @: W, [7 a! \7 m/ v$ J2 qExtCreateRegion 根据世界转换修改区域
/ F6 h p4 ]$ S3 @1 iExtSelectClipRgn 将指定区域组合到设备场景的当前剪裁区
; @" L I' d! @4 |: w* SFillRgn 用指定刷子填充指定区域 # g i3 Z2 t; h( G' O: B
FrameRgn 用指定刷子围绕指定区域画一个外框
2 M$ w% D6 {* n& C. u: W6 Q6 o" b3 PGetBoundsRect 获取指定设备场景的边界矩形
- r: G+ H0 j) H* j4 b7 k+ U% UGetClipBox 获取完全包含指定设备场景剪裁区的最小矩形
1 ]8 N: G/ i" u8 D& O, K% \1 RGetClipRgn 获取设备场景当前剪裁区
- q) P' @; K5 H0 v! WGetDC 获取指定窗口的设备场景
, R7 F% Q. @7 C J2 P; W! [GetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项 " ?2 F; I3 x- _+ X4 m
GetDCOrgEx 获取指定设备场景起点位置(以屏幕坐标表示)
* B: n9 Y7 w1 M4 D+ B# ?GetDeviceCaps 根据指定设备场景代表的设备的功能返回信息
! e& K! | i# K- P( g' k, lGetGraphicsMode 确定是否允许增强图形模式(世界转换)
7 A; l+ d+ m9 m8 o/ \) pGetMapMode 为特定设备场景调入映象模式 . s# K4 ?' y, m7 M" Q
GetRegionData 装入描述一个区域信息的RgnData结构或缓冲区 ! c! v; r, A3 z) L) s- J+ H
GetRgnBox 获取完全包含指定区域的最小矩形
0 o$ s o- F9 Q2 L8 |0 F Y# [GetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新 % N% k; Q$ s1 o
GetViewportExtEx 获取设备场景视口(viewport)范围
; ^. T. r) b0 g2 V8 tGetViewportOrgEx 获取设备场景视口起点
2 [; H! c5 U3 n: bGetWindowDC 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景
7 \: {6 D6 G6 E( ^GetWindowExtEx 获取指定设备场景的窗口范围 $ V0 r$ o4 j8 w5 z) q
GetWindowOrgEx 获取指定设备场景的逻辑窗口的起点 9 E% s7 Y6 q! Y- P3 I% N+ I
GetWindowRgn 获取窗口区域
, l! w% f1 ?: h$ M/ E, a' dGetWorldTransform 如果有世界转换,为设备场景获取当前世界转换 4 X$ F. B5 Q8 n$ _" H# E( d
IntersectClipRect 为指定设备定义一个新的剪裁区 / }. }: N+ L$ V0 O; W$ }
InvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画
, t4 e4 z; I1 A) u; R! U7 h- h! ^InvertRgn 通过颠倒每个像素值反转设备场景指定区域 & m2 ^% t" i V s
LPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标
2 d. H j5 l2 `( ?1 Z) `" m5 {ModifyWorldTransform 根据指定的模式修改世界转换 2 S r$ _2 s. q% @' |' V; B9 O) a
OffsetClipRgn 按指定量平移设备场景剪裁区
7 [. S ^: v& sOffsetRgn 按指定偏移量平移指定区域 # }! O- {3 r7 z1 |# P
OffsetViewportOrgEx 平移设备场景视口区域 1 N3 Z& G: @, Z# a$ I
OffsetWindowOrgEx 平移指定设备场景窗口起点 9 X" K* s( ]: |* [: U
PaintRgn 用当前刷子背景色填充指定区域
) W0 i7 N$ u/ Z$ n/ j& SPtInRegion 确定点是否在指定区域内 9 S3 v3 T" ?- U7 q4 @
PtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内)
6 V Z7 z: g8 l8 b! pRectInRegion 确定矩形是否有部分在指定区域内 0 c% g) q+ g' A G; B7 `" f
RectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内) 2 G9 v2 {3 _/ Y5 ^! Y
ReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景 9 w6 M2 x5 C W8 ?( v% s9 f/ S1 K
RestoreDC 从设备场景堆栈恢复一个原先保存的设备场景
$ R, ?) i' D7 z0 Q# E9 C0 kSaveDC 将指定设备场景状态保存到Windows设备场景堆栈 . V* O. K4 |& F* Q
ScaleViewportExtEx 缩放设备场景视口的范围
; U* ?+ H8 G+ x4 J2 XScaleWindowExtEx 缩放指定设备场景窗口范围
1 G7 ~( X+ Z. k! T0 u7 ^# EScrollDC 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形
( p c6 q3 F* C, ZSelectClipRgn 为指定设备场景选择新的剪裁区 8 h6 D3 q. h, \& s
SetBoundsRect 设置指定设备场景的边界矩形
* \2 i c6 \7 p( m% ^SetGraphicsMode 允许或禁止增强图形模式,以提供某些支持(包括世界转换)
1 _+ Z: W* m6 u4 M1 fSetMapMode 设置指定设备场景的映射模式
& s, s* d J1 [; w$ \5 NSetRectRgn 设置区域为指定的矩形 3 q4 y$ E$ Q2 V
SetViewportExtEx 设置设备场景视口范围
* A/ ?( o3 | a+ i/ {/ R1 o7 \( ]6 hSetViewportOrgEx 设置设备场景视口起点 3 {4 e$ }% e$ Q; a: H/ C4 m4 s0 x
SetWindowExtEx 设置指定设备场景窗口范围
6 L! Z6 T- t/ ]! HSetWindowOrgEx 设置指定设备场景窗口起点 1 o- e1 M [% W% [
SetWindowRgn 设置窗口区域
( _( T6 ^$ k) Z: v# Z/ pSetWorldTransform 设置世界转换
' \6 k0 |" c: s2 bValidateRgn 激活窗口中指定区域,把它从刷新区移走 2 r k% W- G" A" x2 ^
WindowFromDC 取回与某一设备场景相关的窗口的句柄 % f' b* e% I+ ?4 s; O; i
10. API之硬件与系统函数 1 `& x2 N0 E2 n! b4 t' y% @0 O u
ActivateKeyboardLayout 激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义 , n7 L% p2 F3 g9 H. J5 C
Beep 用于生成简单的声音 3 D) o% t: y4 X
CharToOem 将一个字串从ANSI字符集转换到OEM字符集 3 }3 C3 S- W$ z7 w& j; ^
ClipCursor 将指针限制到指定区域
/ j" [; L! Q" o( ~6 B5 IConvertDefaultLocale 将一个特殊的地方标识符转换成真实的地方ID . ~) h5 b2 G, i! G
CreateCaret 根据指定的信息创建一个插入符(光标),并将它选定为指定窗口的默认插入符
& @; n1 G1 @$ A# [% I$ jDestroyCaret 清除(破坏)一个插入符
* `# y& E. K i, CEnumCalendarInfo 枚举在指定"地方"环境中可用的日历信息
; w1 E, ^6 S% G$ Z! I/ q! OEnumDateFormats 列举指定的"当地"设置中可用的长、短日期格式 . s2 u* k' ?. p8 t5 E
EnumSystemCodePages 枚举系统中已安装或支持的代码页
3 y) X3 T8 A( j) {* |EnumSystemLocales 枚举系统已经安装或提供支持的"地方"设置
1 ?9 e9 o7 `% f- c: i$ X( |. HEnumTimeFormats 枚举一个指定的地方适用的时间格式
7 s: }3 b# e/ {2 D' N- B9 RExitWindowsEx 退出windows,并用特定的选项重新启动 , z) q; j4 a7 N/ r
WINUSERAPI BOOL WINAPI ExitWindowsEx(
; t$ Y" v8 b; R4 ^; xUINT uFlags, //EWX_LOGOFF|EWX_REBOOT|EWX_FORCE|EWX_POWEROFF|EWX_FORCEIFHUNG
8 A' d( m2 X# ?' E) _, B' a2 O$ L DWORD dwReserved); //0+ u" W& a' }4 z0 L3 s* J" t4 S$ M3 q
ExpandEnvironmentStrings 扩充环境字串 * z" ^: K( ]9 n; H2 b: K. b8 `8 n
FreeEnvironmentStrings 翻译指定的环境字串块 % i z: v. K$ y# d0 G( e
GetACP 判断目前正在生效的ANSI代码页 ( L( [# f; M6 H2 |+ c) E
GetAsyncKeyState 判断函数调用时指定虚拟键的状态
. `# ?- B! m: Q) cGetCaretBlinkTime 判断插入符光标的闪烁频率 % K' N6 L. e, r4 y; J
GetCaretPos 判断插入符的当前位置 * j' k$ k* K! G" F* E$ W9 \
GetClipCursor 取得一个矩形,用于描述目前为鼠标指针规定的剪切区域
- | P* U5 f, \; f; |GetCommandLine 获得指向当前命令行缓冲区的一个指针 9 H! `7 M# ~( Q4 o% `
GetComputerName 取得这台计算机的名称 / u' h8 Q0 L, E$ D9 [8 P
GetCPInfo 取得与指定代码页有关的信息 & Z# X+ b: \: j7 G; S
GetCurrencyFormat 针对指定的"地方"设置,根据货币格式格式化一个数字 ' N( i: P1 n. l+ [; m7 w8 Q3 o5 e' j
GetCursor 获取目前选择的鼠标指针的句柄
/ t0 T) R( n% o% V- x) W2 yGetCursorPos 获取鼠标指针的当前位置
/ c6 E5 U! j5 q) ^GetDateFormat 针对指定的"当地"格式,对一个系统日期进行格式化
0 k# F1 M. Y! S: E7 P/ K9 MGetDoubleClickTime 判断连续两次鼠标单击之间会被处理成双击事件的间隔时间
9 V7 E5 M5 ]- q5 Q$ zGetEnvironmentStrings 为包含了当前环境字串设置的一个内存块分配和返回一个句柄 8 b* h0 w. ~& k# f" e# y
GetEnvironmentVariable 取得一个环境变量的值
$ n/ }; G% \3 I; B. }$ n9 s3 YGetInputState 判断是否存在任何待决(等待处理)的鼠标或键盘事件
/ n$ E; N6 B' l+ _7 @3 BGetKBCodePage 由GetOEMCP取代,两者功能完全相同 % z* e7 B1 ~$ b7 j& b* a
GetKeyboardLayout 取得一个句柄,描述指定应用程序的键盘布局 * S* x' s( H$ }! c( X
GetKeyboardLayoutList 获得系统适用的所有键盘布局的一个列表
" U4 U5 g8 Q5 [, vGetKeyboardLayoutName 取得当前活动键盘布局的名称 I; I) j- Z2 ?( k" K
GetKeyboardState 取得键盘上每个虚拟键当前的状态
5 L i) F# O3 A, q0 A) AGetKeyboardType 了解与正在使用的键盘有关的信息
# N. e7 A d* A) iGetKeyNameText 在给出扫描码的前提下,判断键名 , j$ a# y* b5 S% Q. U+ [, c
GetKeyState 针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态 5 A. b0 r8 R' N. t3 `: o
GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息 ! _& U8 I; e# A+ v8 m3 E
GetLocaleInfo 取得与指定"地方"有关的信息 # @3 @9 F: e7 t" A4 }
GetLocalTime 取得本地日期和时间
2 m2 a$ s7 V, ^GetNumberFormat 针对指定的"地方",按特定的格式格式化一个数字 M' e! b+ F: ~) A# Y6 }0 Y
GetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页 5 e3 r: y7 S' ^; i6 e) n
GetQueueStatus 判断应用程序消息队列中待决(等待处理)的消息类型 : V6 @4 Z% E# F+ }4 E
GetSysColor 判断指定windows显示对象的颜色 ) ^/ V) k5 n& b* K8 V% \, m' j% C
GetSystemDefaultLangID 取得系统的默认语言ID
8 r0 N4 t9 p) z' gGetSystemDefaultLCID 取得当前的默认系统"地方"
6 T% X, b" e& Y, @! b! V3 {2 cGetSystemInfo 取得与底层硬件平台有关的信息
# g! W9 O& W! _GetSystemMetrics 返回与windows环境有关的信息
* N2 ?7 L* g r+ FGetSystemPowerStatus 获得与当前系统电源状态有关的信息 , `: g8 w7 Y: X4 }0 y l
GetSystemTime 取得当前系统时间,这个时间采用的是"协同世界时间"(即UTC,也叫做GMT)格式
2 [2 a2 l$ \, X+ ?, ~& aGetSystemTimeAdjustment 使内部系统时钟与一个外部的时钟信号源同步
) N- }+ f! v# p- r/ g D# hGetThreadLocale 取得当前线程的地方ID
& c+ O/ c, K' |9 B5 a8 LGetTickCount 用于获取自windows启动以来经历的时间长度(毫秒)
& ~, \+ A6 d+ d" X& a# K% U) K! CGetTimeFormat 针对当前指定的"地方",按特定的格式格式化一个系统时间 % I( J) B% p3 v8 X; h8 b- n
GetTimeZoneInformation 取得与系统时区设置有关的信息 7 ^# y1 s5 Q V% v" V( x
GetUserDefaultLangID 为当前用户取得默认语言ID
: ]7 X9 T& {* V" v, Y( t* v6 LGetUserDefaultLCID 取得当前用户的默认"地方"设置 7 G: r: O2 J. a# X* _/ Y+ s2 R
GetUserName 取得当前用户的名字 : T8 a+ b7 v2 S! z) T
GetVersion 判断当前运行的Windows和DOS版本 " z* O! T* u- O+ a. W% N2 H
GetVersionEx 取得与平台和操作系统有关的版本信息
7 g* f# }7 d ~3 ~8 sHideCaret 在指定的窗口隐藏插入符(光标) & e1 T# m. }: ~6 |: A# q% P2 c3 p
IsValidCodePage 判断一个代码页是否有效 8 N! B; r! b& K f
IsValidLocale 判断地方标识符是否有效
/ N8 j' ? J4 G4 vkeybd_event 这个函数模拟了键盘行动
3 ~( I9 E0 r X' Z! K- ALoadKeyboardLayout 载入一个键盘布局 5 `7 \$ @6 | B4 ~0 K8 X
MapVirtualKey 根据指定的映射类型,执行不同的扫描码和字符转换 " e h- y+ G# k8 U* b% ^
MapVirtualKeyEx 根据指定的映射类型,执行不同的扫描码和字符转换
* E4 W7 L$ A. {9 C2 SMessageBeep 播放一个系统声音。系统声音的分配方案是在控制面板里决定的
5 B1 v \/ M$ A( U+ ~# d- smouse_event 模拟一次鼠标事件
) {; a! t" _/ x' X8 o) OOemKeyScan 判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态 # v! ^/ v# ]. i0 c. i8 Y, p
OemToChar 将OEM字符集的一个字串转换到ANSI字符集
2 d+ X+ L" v- W kSetCaretBlinkTime 指定插入符(光标)的闪烁频率
2 X$ I+ }3 ^$ r3 i9 aSetCaretPos 指定插入符的位置 5 c) B- u4 o6 `- l' H
SetComputerName 设置新的计算机名 7 b9 R! Z7 b- A" n
SetCursor 将指定的鼠标指针设为当前指针 ' F- q) |7 D1 [4 |# C( A/ S+ z9 _
SetCursorPos 设置指针的位置
. K# U7 L8 D+ d5 v; I" U8 uSetDoubleClickTime 设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间
: Z- h, V+ c: w! uSetEnvironmentVariable 将一个环境变量设为指定的值
$ ?: l4 d$ z& c& G+ `8 zSetKeyboardState 设置每个虚拟键当前在键盘上的状态
* N+ c$ D T7 m/ z9 eSetLocaleInfo 改变用户"地方"设置信息 " o# h" h( A& }! E
SetLocalTime 设置当前地方时间
: X& o) z' V; I# M4 N2 V$ {+ c" WSetSysColors 设置指定窗口显示对象的颜色 5 ^8 j5 x6 }+ b* s+ j3 j; |
SetSystemCursor 改变任何一个标准系统指针
0 m8 Y/ B0 h M# B1 HSetSystemTime 设置当前系统时间 1 T9 `! b3 }) m8 e8 p/ h" P, H$ ]
SetSystemTimeAdjustment 定时添加一个校准值使内部系统时钟与一个外部的时钟信号源同步 9 K. r5 v/ C' {7 p" z* d o
SetThreadLocale 为当前线程设置地方 6 _8 B0 ?9 E) M) [
SetTimeZoneInformation 设置系统时区信息 " [& Y$ y% S* O9 E7 [
ShowCaret 在指定的窗口里显示插入符(光标) 6 G( ^; d& u6 D$ V8 n& U& m
ShowCursor 控制鼠标指针的可视性
& J4 E+ ?9 M# [# M# iSwapMouseButton 决定是否互换鼠标左右键的功能
1 ?6 w8 Z2 @6 U r7 JSystemParametersInfo 获取和设置数量众多的windows系统参数 2 P$ G( k* P3 k; j
SystemTimeToTzSpecificLocalTime 将系统时间转换成地方时间 ! @' I) O6 g0 S5 j
ToAscii 根据当前的扫描码和键盘信息,将一个虚拟键转换成ASCII字符
5 y8 e/ g. |# X8 ^; h: fToUnicode 根据当前的扫描码和键盘信息,将一个虚拟键转换成Unicode字符
+ T, y8 Q$ A2 j7 @# w2 `9 S( }/ QUnloadKeyboardLayout 卸载指定的键盘布局 ) { T$ i# H [8 c8 P) Q
VkKeyScan 针对Windows字符集中一个ASCII字符,判断虚拟键码和Shift键的状态
8 J4 U% p; L& S m) m8 z11. API之进程和线程函数
6 S3 i3 {2 i/ p4 M5 [' yCancelWaitableTimer 这个函数用于取消一个可以等待下去的计时器操作 ! R: \9 E6 U5 }! W) W
CallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用
2 k2 |, j9 S3 o- k* HConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个命名管道连接
/ k, N1 L7 f$ ^" y( hCreateEvent 创建一个事件对象 - k g! ^5 W% _
CreateMailslot 创建一个邮路。返回的句柄由邮路服务器使用(收件人)
4 M6 r3 }+ o* i( ~CreateMutex 创建一个互斥体(MUTEX) 7 k3 b# I t/ T# R
CreateNamedPipe 创建一个命名管道。返回的句柄由管道的服务器端使用
6 J" K+ d8 J/ b, a! Q6 r' Q kCreatePipe 创建一个匿名管道
* j8 Q: O9 P4 _& S MCreateProcess 创建一个新进程(比如执行一个程序) # j. v6 i$ I, t/ R5 f
CreateSemaphore 创建一个新的信号机
, M g+ _6 T. w6 T6 }3 l% DCreateWaitableTimer 创建一个可等待的计时器对象 - c/ g! j: o! c# W8 `9 [
DisconnectNamedPipe 断开一个客户与一个命名管道的连接
0 L+ h! A* t2 J' r+ I3 lDuplicateHandle 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄 0 b2 i( X* i( S& t
ExitProcess 中止一个进程 3 `7 q4 J. o4 G1 i1 r: @- h
FindCloseChangeNotification 关闭一个改动通知对象 9 ~8 b* _' d) c5 L
FindExecutable 查找与一个指定文件关联在一起的程序的文件名
8 R: k, X, M" B# x/ k E$ UFindFirstChangeNotification 创建一个文件通知对象。该对象用于监视文件系统发生的变化 7 o# [: h* Q8 k2 g! m* C# u; |5 v
FindNextChangeNotification 重设一个文件改变通知对象,令其继续监视下一次变化 3 s1 D( `5 ^2 S7 u$ L+ |& W
FreeLibrary 释放指定的动态链接库
; [2 ]. J% d! z' k5 V+ ~4 bGetCurrentProcess 获取当前进程的一个伪句柄
6 r6 ~( y) E+ s. c% TGetCurrentProcessId 获取当前进程一个唯一的标识符
0 A( H# s! u" dGetCurrentThread 获取当前线程的一个伪句柄 " j/ A) j( h& m) ]% A
GetCurrentThreadId 获取当前线程一个唯一的线程标识符
$ U4 e1 m# `; g1 f# S8 \( M- zGetExitCodeProces 获取一个已中断进程的退出代码
0 m8 l$ i2 U) A# [1 g7 v% m5 yGetExitCodeThread 获取一个已中止线程的退出代码 & g# g' v, `. O
GetHandleInformation 获取与一个系统对象句柄有关的信息 ; t# v) J$ s2 s- {
GetMailslotInfo 获取与一个邮路有关的信息
+ W8 f. B+ R/ r+ f. xGetModuleFileName 获取一个已装载模板的完整路径名称
, ~6 r* a9 Q* N" Q! F- |$ b& OGetModuleHandle 获取一个应用程序或动态链接库的模块句柄 1 t3 `7 {# j3 K1 o
GetModuleHandleA(LPCSTR lpModuleName);
' i$ V5 I5 N" F9 q) O6 PGetPriorityClass 获取特定进程的优先级别 : k8 k- q1 y' [5 c4 k4 j
GetProcessShutdownParameters 调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况 ( n$ o4 o! P% G$ a
GetProcessTimes 获取与一个进程的经过时间有关的信息 ? g5 S ~6 {# _$ O
GetProcessWorkingSetSize 了解一个应用程序在运行过程中实际向它交付了多大容量的内存 S$ c& W' ~% I. u1 A
GetSartupInfo 获取一个进程的启动信息
- ~9 ]2 U1 k1 ?2 p, s4 \6 IGetThreadPriority 获取特定线程的优先级别
! {& L d& b5 eGetTheardTimes 获取与一个线程的经过时间有关的信息
) n1 _, K M& r3 k3 r% X9 I% {GetWindowThreadProcessId 获取与指定窗口关联在一起的一个进程和线程标识符
; A: o; {3 X& F( t' R6 BLoadLibrary 载入指定的动态链接库,并将它映射到当前进程使用的地址空间 & U b: V1 c- j7 a
LoadLibraryEx 装载指定的动态链接库,并为当前进程把它映射到地址空间
* R) r- ~8 S. k9 Q% G/ }; w1 h8 e# jLoadModule 载入一个Windows应用程序,并在指定的环境中运行
2 t# T6 H4 r$ W3 K9 VMsgWaitForMultipleObjects 等侯单个对象或一系列对象发出信号。如返回条件已经满足,则立即返回
4 X) Q" j2 ~ c1 K( ` w' U8 c; W2 \SetPriorityClass 设置一个进程的优先级别
( G2 E, Z" {$ s- ~4 P) ESetProcessShutdownParameters 在系统关闭期间,为指定进程设置他相对于其它程序的关闭顺序
: u- t; c% i' T$ u/ _0 V% GSetProcessWorkingSetSize 设置操作系统实际划分给进程使用的内存容量 ; m: R& H5 Y L1 Y) i6 }3 }
SetThreadPriority 设定线程的优先级别 " l" J! A* {$ P. z" Y4 {+ R, e$ n
ShellExecute 查找与指定文件关联在一起的程序的文件名
7 r" A% w! L& }2 M5 ]5 b1 Q) w- lTerminateProcess 结束一个进程
: s; N. ]* ?' a8 I: ^! RWinExec 运行指定的程序 ; f( I6 z" H) Q/ f$ V6 q
12. API之控件与消息函数 4 r$ Y5 A. {4 X; j. ?
AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 7 J* N0 J! ^3 ?& T, Q- g
AnyPopup 判断屏幕上是否存在任何弹出式窗口
# H: O" U4 E% a! wArrangeIconicWindows 排列一个父窗口的最小化子窗口 : Z% a$ x# z& a
AttachThreadInput 连接线程输入函数
9 |+ J- Q) N1 c/ YBeginDeferWindowPos 启动构建一系列新窗口位置的过程
/ c7 K) P6 ^ P5 jBringWindowToTop 将指定的窗口带至窗口列表顶部 S% u" e0 Z8 B$ a
CascadeWindows 以层叠方式排列窗口 5 e3 r6 ~3 \7 d! s
ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄 . f; a4 D9 g! `( t+ U
ClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标 & A4 f; b7 Y4 E- j6 O
CloseWindow 最小化指定的窗口 7 A/ }8 B1 b/ O- G% M! r9 H
CopyRect 矩形内容复制
% P8 y" L( z, r2 o0 S( hDeferWindowPos 该函数为特定的窗口指定一个新窗口位置 2 ?4 H# E j) C4 u9 }
DestroyWindow 清除指定的窗口以及它的所有子窗口
. ^' C% ?! f6 b& iDrawAnimatedRects 描绘一系列动态矩形 ; m$ @& y) I( J4 _$ }& ?* }8 F: D3 |0 @
EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入 . D# ~8 B5 _) i4 U- ]3 ?; q
EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态
% b. c! P+ x: R9 s9 x. ~EnumChildWindows 为指定的父窗口枚举子窗口
5 P' F) H8 s1 o. J2 ~$ LEnumThreadWindows 枚举与指定任务相关的窗口 / y' x5 U2 t' g: H F
EnumWindows 枚举窗口列表中的所有父窗口 6 s" S+ Y* u* n1 V' B+ h: M
EqualRect 判断两个矩形结构是否相同 6 ?( n6 m- p4 d, X, R' b! `5 M! v1 B
FindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口
) U" `- T+ [6 q9 pFindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口 % a3 D0 a# w) }- g8 s" s4 `( I
FlashWindow 闪烁显示指定窗口
& i1 w" V: E# L6 \GetActiveWindow 获得活动窗口的句柄
+ Q+ A) K f8 L% bGetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收) - ]# z0 @$ ^5 h% Y/ A' P3 @' ?
GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息
! l0 D7 `" W- D" a" rGetClassLong 取得窗口类的一个Long变量条目
: W C4 J: J" R4 M. N. TGetClassName 为指定的窗口取得类名 ( Y* o: x; G) l, ^
GetClassWord 为窗口类取得一个整数变量
+ D1 F9 e4 x" y' ]* {GetClientRect 返回指定窗口客户区矩形的大小
6 l, u* b! V0 h; J9 m) iGetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄
4 q$ h+ J/ V( }0 R2 XGetFocus 获得拥有输入焦点的窗口的句柄 3 @& {8 e2 Q2 h0 K8 M( g' G, G
GetForegroundWindow 获得前台窗口的句柄
$ l- `- U* `& P* v+ OGetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄
- ^2 U8 U. J0 h' Y$ [2 e8 OGetParent 判断指定窗口的父窗口 # ?0 H8 w. E: D' u
GetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄
6 L6 i# N2 W" U3 I7 V* qGetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分
& b! ?9 I1 a( R O/ `' x( IGetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系 ( L' ^) z3 X9 n! n& o
GetWindowContextHelpId 取得与窗口关联在一起的帮助场景ID 7 y T, \9 @4 t- J
GetWindowLong 从指定窗口的结构中取得信息 # o2 s; t4 }) R3 i' y# |
GetWindowPlacement 获得指定窗口的状态及位置信息 . ~8 P+ d% c5 Y
GetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内
: Z9 o4 L+ K. z+ A9 W( ] D( YGetWindowText 取得一个窗体的标题(caption)文字,或者一个控件的内容
* j; m: Z/ r7 C' {% W6 zGetWindowTextLength 调查窗口标题文字或控件内容的长短
. B4 ?3 d% N0 W9 ~+ V* f6 MGetWindowWord 获得指定窗口结构的信息
- }" r, l) _% ?$ T. \InflateRect 增大或减小一个矩形的大小 % i4 u: i& h* t% t
IntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集 ! Z; R9 B J) L/ [3 |6 v {) S
InvalidateRect 屏蔽一个窗口客户区的全部或部分区域 ) c1 j/ ]; C, X Y3 i* z+ Y
IsChild 判断一个窗口是否为另一窗口的子或隶属窗口 3 \! i. S# Z3 p) d0 Z5 J5 n
IsIconic 判断窗口是否已最小化
) b$ I; g5 L' S$ OIsRectEmpty 判断一个矩形是否为空 3 |0 C, ^$ ~$ V0 {* C4 k5 ?( B
IsWindow 判断一个窗口句柄是否有效
6 d! h: J) m0 {" A$ ~2 dIsWindowEnabled 判断窗口是否处于活动状态 ! T w4 l$ S0 s8 |" h
IsWindowUnicode 判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字
) Y9 k- \7 g9 n. {" ]IsWindowVisible 判断窗口是否可见
% F2 ~& |( }0 q* s* U" a3 NIsZoomed 判断窗口是否最大化
) P$ |1 }( [/ z" @7 H# ELockWindowUpdate 锁定指定窗口,禁止它更新
5 V8 r9 v1 s8 Q: |- ?! l7 ZMapWindowPoints 将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统
8 J* A+ k' ^' m @! {* R$ tMoveWindow 改变指定窗口的位置和大小 6 E f5 m+ H8 g y; I+ F0 l
OffsetRect 通过应用一个指定的偏移,从而让矩形移动起来
5 c L! R( b) I5 NOpenIcon 恢复一个最小化的程序,并将其激活 0 c. O2 L$ p4 ~* w k6 R! a
PtInRect 判断指定的点是否位于矩形内部
7 l/ `& ~' J" L5 v+ l9 |RedrawWindow 重画全部或部分窗口 9 F* [) O$ F3 {# y
ReleaseCapture 为当前的应用程序释放鼠标捕获
) @8 h; z5 M4 eScreenToClient 判断屏幕上一个指定点的客户区坐标 " k1 `4 t- s# H" {' I
ScrollWindow 滚动窗口客户区的全部或一部分
7 m/ K9 w$ N; V6 g8 p2 y" T; \ScrollWindowEx 根据附加的选项,滚动窗口客户区的全部或部分 , R1 i/ S( L' K1 D: i F8 f) B& W
SetActiveWindow 激活指定的窗口
1 Z Q- L) _' h p9 @ ESetCapture 将鼠标捕获设置到指定的窗口 * S; a/ R- K6 J
SetClassLong 为窗口类设置一个Long变量条目
4 j1 `! h. E/ c7 G% ]$ [' wSetClassWord 为窗口类设置一个条目
/ g6 Y1 A/ t* ?SetFocusAPI 将输入焦点设到指定的窗口。如有必要,会激活窗口
2 {: v# \6 k. TSetForegroundWindow 将窗口设为系统的前台窗口 . A/ T. h; r) d
SetParent 指定一个窗口的新父
, M: T! ?1 {% p! G! gSetRect 设置指定矩形的内容 ! `+ [/ U6 U$ a9 D5 d! p, T
SetRectEmpty 将矩形设为一个空矩形 $ o9 @. i( F, ^9 B; d9 {5 m
SetWindowContextHelpId 为指定的窗口设置帮助场景(上下文)ID
! k; C, T, y* f: Y( b! c; Q/ ISetWindowLong 在窗口结构中为指定的窗口设置信息 9 m4 o: x" [( c8 I% U1 Q
SetWindowPlacement 设置窗口状态和位置信息 7 U% _' ~: ^; b, X
SetWindowPos 为窗口指定一个新位置和状态 . s: T. {; ]+ d ~/ F$ @
SetWindowText 设置窗口的标题文字或控件的内容 3 W' ?: \2 j* g i) J
SetWindowWord 在窗口结构中为指定的窗口设置信息 # j5 t i6 L5 }' P4 i
ShowOwnedPopups 显示或隐藏由指定窗口所有的全部弹出式窗口
) t0 [% b8 L! e: eShowWindow 控制窗口的可见性 ' h# s2 ^- k) t% @) t ?* C$ x% L9 W
ShowWindowAsync 与ShowWindow相似
5 t1 E( t8 l- YSubtractRect 装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果 : c/ B0 D, K, B
TileWindows 以平铺顺序排列窗口 & A) Z4 ?6 e4 d( g, ?
UnionRect 装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect联合起来的结果 : C4 `9 P1 {) h8 A
UpdateWindow 强制立即更新窗口 0 y, Q3 j% L: I; D' G1 k
ValidateRect 校验窗口的全部或部分客户区
/ ^* {6 J( p+ H; Z5 W: E oWindowFromPoint 返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口& b$ u' O& r$ e6 M8 X
高级音频函数—参看《VC++ 编程指南.chm》11.6
/ w) v0 Y3 C! d6 l Windows提供了三个特殊的播放声音的高级音频函数:MessageBeep、PlaySound和sndPlaySound。这三个函数可以满足播放波形声音的一般需要,但它们播放的WAVE文件(波形声音文件)的大小不能超过100KB,如果要播放较大的WAVE文件,则应该使用MCI服务。" }& x5 [& `& ]& i
BOOL MessageBeep(UINT uType);
0 k0 z$ `' o- c5 M' n% d# I该函数主要用来播放系统报警声音。系统报警声音是由用户在控制面板中的声音(Sounds)程序中定义的,或者在WIN.INI的[sounds]段中指定。! I3 U2 c& ~+ J
参数uType说明了告警级,如下表所示。若成功则函数返回TRUE。1 W2 q( q" ~. V
级别
, E$ e/ r, C' Y- F/ W | 描述 % y$ e+ Y! q( c+ F' S% R& e Z
| -1 , F5 s8 ^! f0 ?) B; f- R, c
| 从机器的扬声器中发出蜂鸣声。
6 f, W; {' F* r, X2 B | MB_ICONASTERISK
/ T) p- Z7 k$ }* q/ C- d | 播放由SystemAsterisk定义的声音。 & t. \# t9 Y" ` ?3 @
| MB_ICONEXCLAMATION
$ d) i- q- z6 F3 _# `0 n | 播放由SystemExclamation定义的声音。
; @/ v0 ]! v$ z; T | MB_ICONHAND * k2 ?3 [/ |1 W! \" f
| 播放由SystemHand定义的声音。
4 u4 i5 s7 T+ _9 C& l" V | MB_ICONQUESTION
z% M3 W1 T7 D; i | 播放由SystemQuestion定义的声音。
( q+ |0 @' u4 h) V | MB_OK & T X4 [, @6 h1 k$ _0 t, B
| 播放由SystemDefault定义的声音 - s2 W4 Q, o8 e! d
| BOOL PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
* k( |( y+ l) _参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。4 s9 x. T; O4 I& N+ q% k
参数hmod是应用程序的实例句柄,当播放WAV资源时要用到该参数,否则它必须为NULL。" p6 y! Q3 h# M4 T `
参数fdwSound是标志的组合,如下表所示。若成功则函数返回TRUE,否则返回FALSE。
2 e6 x1 q/ k6 w8 ~1 _5 P6 E3 A# q标志 9 h7 r" ]7 Y3 {2 T3 S) D. b' Q
| 含义 ( y, i: ~0 o' d' A
| SND_APPLICATION + I* U4 r: d7 G9 ?! c) y( x+ C
| 用应用程序指定的关联来播放声音。
* O! A8 h6 b# d( D0 S; ~! d | SND_ALIAS
0 V) V6 m$ Q* H ^5 Q | pszSound参数指定了注册表或WIN.INI中的系统事件的别名。
4 ^9 k0 o9 k$ c/ a! N | SND_ALIAS_ID
- V1 s9 b' p/ |4 V | pszSound参数指定了预定义的声音标识符。
) D9 g g q- z' S | SND_ASYNC
1 E: O! D/ D# ?' F9 X | 用异步方式播放声音,PlaySound函数在开始播放后立即返回。 2 L0 C# p. ^- j, o4 c0 ]
| SND_FILENAME 1 w) D6 f Q; O7 [9 A
| pszSound参数指定了WAVE文件名。
! m2 A* ?' h# S' g% E2 G | SND_LOOP
2 z' K1 V" O; E3 _* ^ | 重复播放声音,必须与SND_ASYNC标志一块使用。
/ G' q% U; }; n; W" ] | SND_MEMORY 4 G6 }3 P2 R9 h+ ^, s
| 播放载入到内存中的声音,此时pszSound是指向声音数据的指针。 4 M! e' r6 P( @8 Q5 a1 j( P( N" ?2 ?
| SND_NODEFAULT
7 S, e$ ?+ H1 y | 不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。 4 N' @7 ]. f1 {( i
| SND_NOSTOP 6 ]6 E4 h! ^" y
| PlaySound不打断原来的声音播出并立即返回FALSE。 - k! O) X; f4 \& K r0 W. _
| SND_NOWAIT
" ^$ y! x" r+ j _3 f | 如果驱动程序正忙则函数就不播放声音并立即返回。 1 Z! i9 N7 H4 A6 r7 }( m
| SND_PURGE
3 K" I5 n% v; s9 F, v% P1 Z. s& J | 停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。
6 v R) C0 |/ y- t5 q! Y; M; l; y ~ | SND_RESOURCE
+ A: Z# E2 ]: ^7 [$ _8 X! A# J | pszSound参数是WAVE资源的标识符,这时要用到hmod参数。 3 P5 m5 V* I. S5 h! w, h
| SND_SYNC 3 S4 E4 Z9 u. s! x w) Z
| 同步播放声音,在播放完后PlaySound函数才返回。
5 w$ K- v4 A/ d& }) X4 I | BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound);$ H) s) R9 g) Q9 |% |4 j& \1 @9 j
函数sndPlaySound的功能与PlaySound类似,但少了一个参数。除了不能指定资源名字外,参数lpszSound与PlaySound的是一样的。
7 l, c. W% m# \ z7 o: \. HMCI播放" O. i' y; Z: J) c2 f6 ?7 p
所有的MCI命令字符串都是通过多媒体API函数mciSendString传递给MCI的,该函数的声明为:( k) {8 p3 X! a
MCIERROR mciSendString(- C+ ]5 D( e+ n
LPCTSTR lpszCommand, //MCI命令字符串
3 v) O% G* B8 p7 }$ K) tLPTSTR lpszReturnString, //存放反馈信息的缓冲区
0 w& K9 t! n0 ^; L2 _UINT cchReturn, //缓冲区的长度
E9 i- e, n/ w. y% R {: ^HANDLE hwndCallback //回调窗口的句柄,一般为NULL7 Z8 J" i- K9 _
); //若成功则返回0,否则返回错误码。2 F% ^) B* q. |1 `( J
该函数返回的错误码可以用mciGetErrorString函数进行分析,该函数的声明为:9 {" k8 c: j, @5 L8 `4 j
BOOL mciGetErrorString(
9 F" }. g- E/ t4 jDWORD fdwError, //函数mciSendString或mciSendCommand返回的错误码
. Z5 M |) ~0 ]# K7 sLPTSTR lpszErrorText, //接收描述错误的字符串的缓冲区
j& Q! V7 Y. d5 L5 _UINT cchErrorText //缓冲区的长度
+ X. D P+ y& c* S: D# w* T);/ m7 g- V5 ~; I6 _5 X4 P
|
|