找回密码
 注册
搜索
查看: 4061|回复: 0

Windows API函数大全

[复制链接]
发表于 2011-5-19 20:42:51 | 显示全部楼层 |阅读模式
原文:http://www.cnblogs.com/cltsq/articles/api.html* t, q1 p0 e* h# g! T
1. API之网络函数   [: D' \, e" r9 A( b, D
WNetAddConnection 创建同一个网络资源的永久性连接 $ y6 Q( S5 {9 o8 B5 n
WNetAddConnection2 创建同一个网络资源的连接 . x& G  a2 S* {4 x: x3 E* e; K* t
WNetAddConnection3 创建同一个网络资源的连接
2 ~4 c( w) o* t1 CWNetCancelConnection 结束一个网络连接 7 T2 i/ m+ G! V2 ]6 o
WNetCancelConnection2 结束一个网络连接
4 J# Z: G: d1 C2 y/ AWNetCloseEnum 结束一次枚举操作
& g* R. |3 T1 v# w! @WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接
2 l8 e, j2 r% p9 e) Q" QWNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 , L% T/ X0 i# O  S0 a/ W, c2 R
WNetEnumResource 枚举网络资源
6 e$ e) s  a4 @* ?+ S( wWNetGetConnection 获取本地或已连接的一个资源的网络名称 . T! |- `/ I6 ~, Y" ^, l
WNetGetLastError 获取网络错误的扩展错误信息   i4 B1 Z1 a& d8 x7 e
WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称 % i9 H0 Z) H9 z" ^* D, i$ J
WNetGetUser 获取一个网络资源用以连接的名字
6 ]) u5 ?- E9 o8 N( S! x0 H9 qWNetOpenEnum 启动对网络资源进行枚举的过程
9 B7 ?- n9 A2 U1 A& v  H- [2. API之消息函数
" q6 i+ l* w# o2 E7 I0 qBroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口 8 e: x& }/ Q+ h6 c  O
GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 , Y( c! M3 i0 T. d- l+ Y
GetMessageTime 取得消息队列中上一条消息处理完毕时的时间 $ H& t5 d3 L, ]& s4 _+ c- I- R
PostMessage 将一条消息投递到指定窗口的消息队列 4 M# z# |' ?7 ?
PostThreadMessage 将一条消息投递给应用程序
) g) K0 c. L; U3 F( R8 ]$ G/ uRegisterWindowMessage 获取分配给一个字串标识符的消息编号 4 x' I) d' f" `+ W, U) ^
ReplyMessage 答复一个消息 2 W3 ~. |" f1 V; Z; j. E% B
SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口 % O; Z. \% s) w* F
SendMessageCallback 将一条消息发给窗口 % ]  ]  ~4 x0 A2 Z$ `3 i+ y8 h4 t7 e
SendMessageTimeout 向窗口发送一条消息 8 F- ?2 M  s3 N1 v2 |9 |
SendNotifyMessage 向窗口发送一条消息
# r2 J  M8 e9 U2 J" P# [0 U3. API之文件处理函数 " ?. c0 c$ V% W2 b
CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 : L% _( m6 L& i8 J
CompareFileTime 对比两个文件的时间
6 P7 a- W6 l' L1 N. ^  }3 ?CopyFile 复制文件
" }3 y3 g( F" z7 B+ t7 dCreateDirectory 创建一个新目录 1 I" x3 [+ _7 M2 d8 U4 a
CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台 ; a$ K  ^( I5 D, d
CreateFileMapping 创建一个新的文件映射对象
4 I, K1 b0 S8 V$ B) j( yDeleteFile 删除指定文件 # k9 |# C! N6 B
DeviceIoControl 对设备执行指定的操作 % o! L, y* j0 P( D( N
DosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值 ) a# z0 Q0 p' m' a4 Z: h
FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值 ) O) k: X4 o' u) P
FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间 # L# @+ v3 J3 M9 i* S2 [, t0 I6 }5 J
FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构 4 A; Y; t. ~+ w. G3 ]& k
FindClose 关闭由FindFirstFile函数创建的一个搜索句柄
* R% {/ W' ?, ]2 E3 PFindFirstFile 根据文件名查找文件 % y% e: u% X1 ?3 C* U9 u3 K& }
FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件 0 }) F: ?: E/ t5 E1 k% ]: `
FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区 ; q6 ?7 X2 @! ~  v0 ^
FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘 & }% h( m0 X4 i4 p7 @) d
GetBinaryType 判断文件是否可以执行 / D. W: F, {5 ]
GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数
. f- J$ K/ y+ |$ ]GetCurrentDirectory 在一个缓冲区中装载当前目录 . x  N. r$ q; Z. G
DWORD GetCurrentDirectory(! K, O/ B  o) ?; W/ q
    DWORD nBufferLength,    //缓冲区大小
9 w. I0 [6 O2 Z$ I0 j. K    LPSTR lpBuffer          //缓冲区的首地址# Z8 Z, p3 @6 J! a4 E8 B8 K) U
    );
0 a9 t+ ~# ?) v6 {  y: @  qGetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量 ; Z9 w& C  K: T% _7 N7 q1 \
GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息
" N8 Y5 Q6 x+ R3 JGetDriveType 判断一个磁盘驱动器的类型 ! U8 e: ]6 t3 R8 Q* `0 B3 r, k! h
GetExpandedName 取得一个压缩文件的全名
# R; F# i+ g1 |/ l; x1 ZGetFileAttributes 判断指定文件的属性 ' R- m7 [/ k$ y/ u5 {; d3 o
GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制 ! D2 |* F* t2 V
GetFileSize 判断文件长度 / R" a+ G0 p- w0 }* n0 I. X  b
GetFileTime 取得指定文件的时间信息 " X+ m$ X( [" D4 i4 L& }: G% |  o5 C
GetFileType 在给出文件句柄的前提下,判断文件类型 3 O. _. a9 n( b. H6 ?' |$ j+ G! `
GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息 2 s! `6 V+ d0 b6 F
GetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区 , p. S# o8 k1 u+ W5 x$ b
GetFullPathName 获取指定文件的完整路径名
$ ?( c8 J' A8 z8 x3 rGetLogicalDrives 判断系统中存在哪些逻辑驱动器字母 5 h) Q5 X. O  l0 n
GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径
5 s  ^( ~/ B, p$ x: J& V, sGetOverlappedResult 判断一个重叠操作当前的状态
+ e3 m  G' e7 RGetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值
' i1 n& D9 `2 B5 TGetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表
# ~( z0 ~# Q  A; w( S1 w" V" Y( YGetPrivateProfileString 为初始化文件中指定的条目取得字串
: V7 m* q! t  ~GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值 * V3 @" i+ _4 x: P: `* k. l
GetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表
* K" x5 {$ U4 C. \GetProfileString 为win.ini初始化文件中指定的条目取得字串 % y. Z! r4 Q9 f
GetShortPathName 获取指定文件的短路径名 8 s& }1 y: i, `" y0 _  O: P( |
GetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名 + p) @0 O! \: C& S; s( I
GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用
) f6 L- f9 u$ g/ SGetTempPath 获取为临时文件指定的路径
8 P( _* a' Y% v0 C2 C8 LGetVolumeInformation 获取与一个磁盘卷有关的信息
( c$ m6 P2 L1 N/ g  h: R' oGetWindowsDirectory 获取Windows目录的完整路径名 7 e/ G  X$ v" _2 f8 F+ `
hread 参考lread
1 G  J8 s* W: p, Hhwrite 参考lwrite函数
( X: H  Z: `$ y- M; blclose 关闭指定的文件
+ C/ J7 I- E- v9 y- q; vlcreat 创建一个文件 1 N) u; T! Z' B- t$ J1 {
llseek 设置文件中进行读写的当前位置 6 b- \( y* W2 u- [5 ^+ @. _5 q
LockFile 锁定文件的某一部分,使其不与其他应用程序共享 1 N+ J' r  W! p& l, m' t
LockFileEx 与LockFile相似,只是它提供了更多的功能
$ E7 ~& \- S% o% Nlopen 以二进制模式打开指定的文件
' T! I5 D; @, F# ~3 Y0 slread 将文件中的数据读入内存缓冲区
& z; e& F5 ~: x5 m( I& Klwrite 将数据从内存缓冲区写入一个文件
: Q/ x" a* D6 p4 X. N; B+ s5 WLZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件
( B8 d6 U. x0 K" pLZCopy 复制一个文件 5 \, e0 R6 F& k
LZInit 这个函数用于初始化内部缓冲区 " p- \+ O: ~' \1 ?; G9 }1 _. Z
LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件
4 ?# d8 f7 P4 B0 q, ~; K! XLZRead 将数据从文件读入内存缓冲区
; a' q" t" H9 v8 q; b7 ]LZSeek 设置一个文件中进行读写的当前位置 6 ?4 @* D4 d6 i7 M- c8 n+ X* m
MapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间 ! H: ?) }1 j# J; \% ~& l
MoveFile 移动文件 5 K$ Y- O% n. d( K
OpenFile 这个函数能执行大量不同的文件操作 ( l5 a; w* o6 A  l' V- H: P
OpenFileMapping 打开一个现成的文件映射对象
* L; `! |5 N5 p- C' k2 _QueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况
: n! c& x5 b; `' b7 ?0 s* b- wReadFile 从文件中读出数据 * [; n2 P. S( n# r3 M* s; F
ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调 2 G1 u3 D& g. N' |! e
RegCloseKey 关闭系统注册表中的一个项(或键)
! x8 n7 o7 K2 B# ]RegConnectRegistry 访问远程系统的部分注册表   F# s3 Q* ^5 y2 e
RegCreateKey 在指定的项下创建或打开一个项
# A9 I% K) r* I  {$ {3 XRegCreateKeyEx 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数
- H5 s& }1 Y* [: V& @& P0 qRegDeleteKey 删除现有项下方一个指定的子项
) c0 p% Q  T- X4 LRegDeleteValue 删除指定项下方的一个值
' R! t" L8 r( N2 jRegEnumKey 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx 2 K3 v" }9 d% D+ g
RegEnumKeyEx 枚举指定项下方的子项
" |+ C: H. l$ [+ s9 xRegEnumValue 枚举指定项的值 - {" V5 `+ d; ?3 ?, B8 L
RegFlushKey 将对项和它的子项作出的改动实际写入磁盘
, [) i  E0 a; q; aRegGetKeySecurity 获取与一个注册表项有关的安全信息 2 c. G$ b# g8 K  d$ ]
RegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息 # Y3 K4 }9 h( N; {) w7 X4 i  F% u
RegNotifyChangeKeyValue 注册表项或它的任何一个子项发生变化时,用这个函数提供一种通知机制
4 q- t( q6 W0 y8 r& Q6 k& `RegOpenKey 打开一个现有的注册表项 & p: N' x$ [& o  N
RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数 + `( O- d  k& R! h! H* ~# I
RegQueryInfoKey 获取与一个项有关的信息 7 R1 g& [# {# m8 C. V
RegQueryValue 取得指定项或子项的默认(未命名)值
( Q2 y5 V# o+ ?" R1 I2 b6 @RegQueryValueEx 获取一个项的设置值 / ~1 g: l% r* T- x: S
RegReplaceKey 用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息
( |# a) Q: T& Z' B6 O, CRegRestoreKey 从一个磁盘文件恢复注册表信息
* Y" i5 t4 z- ?RegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件 2 R: ]1 e& C3 b5 R/ s0 m
RegSetKeySecurity 设置指定项的安全特性
5 T- |+ X5 {; u( GRegSetValue 设置指定项或子项的默认值 ! ]* R- t/ Q  S- V
RegSetValueEx 设置指定项的值
6 y$ R- m4 E6 a4 r) JRegUnLoadKey 卸载指定的项以及它的所有子项
- Y/ }6 D  k, ZRemoveDirectory 删除指定目录 0 \- u7 L- ~) a, w- m+ x4 a8 C
SearchPath 查找指定文件 4 w' ]9 b8 P. v2 _$ o( r" b( H
SetCurrentDirectory 设置当前目录
8 g# I; @: v: N3 W+ R% [SetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾 . g: d- H. T* f; `0 A5 ^7 S; _
SetFileAttributes 设置文件属性 & M$ p0 X& _/ K, a: I
SetFilePointer 在一个文件中设置当前的读写位置 9 h/ n: R+ D% Z) U/ W0 P5 W/ r
SetFileTime 设置文件的创建、访问及上次修改时间
! n% l' O3 `, DSetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果 ; {. a$ L( S# b( B, l3 ~
SetVolumeLabel 设置一个磁盘的卷标(Label) + g, ?9 @* e5 E
SystemTimeToFileTime 根据一个FILETIME结构的内容,载入一个SYSTEMTIME结构
0 A. t- O5 w. C9 G0 v: B" I& qUnlockFile 解除对一个文件的锁定
" F2 ^& X2 y# ~( q3 dUnlockFileEx 解除对一个文件的锁定 - t! E0 O& s( K7 b* Q( {+ P
UnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射
6 b2 z. M7 I* {& _0 nVerFindFile 用这个函数决定一个文件应安装到哪里 6 _0 M! `  L( o9 m3 b, {, a  v8 p% A6 P
VerInstallFile 用这个函数安装一个文件
2 o8 D2 D9 L( d0 {2 \VerLanguageName 这个函数能根据16位语言代码获取一种语言的名称 , t/ w0 e6 ~. R* \$ H# z
VerQueryValue 这个函数用于从版本资源中获取信息 / _: Z0 z8 |! P( _
WriteFile 将数据写入一个文件 5 {7 ~+ T4 A0 S' ]) c
WriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调
  I1 {! H! N/ Q* b6 ^WritePrivateProfileSection 为一个初始化文件(.ini)中指定的小节设置所有项名和值
0 Z% T$ h" {6 E/ s/ ^- p) f" J* L! }WritePrivateProfileString 在初始化文件指定小节内设置一个字串 # ~8 o% y7 h, ]0 G! b- J4 Q4 j
WriteProfileSection 为Win.ini初始化文件中一个指定的小节设置所有项名和值
4 h1 C$ d, b4 jWriteProfileString 在Win.ini初始化文件指定小节内设置一个字串
5 b" z  ^% I" ?, z. b' z8 ^4. API之打印函数
: p+ z7 l3 G% a$ w/ zAbortDoc 取消一份文档的打印
' S8 Z* s, M& w. cAbortPrinter 删除与一台打印机关联在一起的缓冲文件
  v3 x# V& V& f& O. M8 C5 q, s7 ?AddForm 为打印机的表单列表添加一个新表单
4 h  J$ [4 k$ q' ]% RAddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 . t1 m5 N6 ~+ F6 N- \/ `" }; a
AddMonitor 为系统添加一个打印机监视器 $ ]2 d9 s$ C( i- a2 o) r  C0 h
AddPort 启动"添加端口"对话框,允许用户在系统可用端口列表中加入一个新端口 - i6 M; x* K- [/ H# S) |! R0 d% S
AddPrinter 在系统中添加一台新打印机
* J# \" M7 B8 R  g# MAddPrinterConnection 连接指定的打印机
3 m: n+ \6 Y0 @, W8 MAddPrinterDriver 为指定的系统添加一个打印驱动程序 " }7 |4 h$ J# ~/ f/ ~% b4 f
AddPrintProcessor 为指定的系统添加一个打印处理器 * C/ {# d# J! f7 ~" l+ w
AddPrintProvidor 为系统添加一个打印供应商 * p7 y5 r% }4 Z! {5 c' d8 \
AdvancedDocumentProperties 启动打印机文档设置对话框 8 \  v2 v/ z- s1 Z. m* T
ClosePrinter 关闭一个打开的打印机对象
( K1 b  h' P+ S. D1 I3 Z$ [ConfigurePort 针对指定的端口,启动一个端口配置对话框   c2 H4 A: G% K$ o! ], Q( d$ ?
ConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 : G: [4 ]+ C5 Y( `! U$ F; F
DeleteForm 从打印机可用表单列表中删除一个表单 9 ^5 ^0 U' b* t* K3 B
DeleteMonitor 删除指定的打印监视器 + M7 ]2 q; w& o
DeletePort 启动"删除端口"对话框,允许用户从当前系统删除一个端口
) `! ?; c. M( u5 I7 Z. a8 w4 ^DeletePrinter 将指定的打印机标志为从系统中删除 6 j  c; [& s9 Q
DeletePrinterConnection 删除与指定打印机的连接 ) {- I$ Q3 ^3 A; j: u5 b1 I4 w
DeletePrinterDriver 从系统删除一个打印机驱动程序 / |9 r  [. l1 X1 C+ m. R
DeletePrintProcessor 从指定系统删除一个打印处理器 7 M, l4 d, \$ _/ ^6 e$ M
DeletePrintProvidor 从系统中删除一个打印供应商
  m6 E/ s. n% f2 M' [# l( bDeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息
: B) t- \9 |6 P4 U1 p) sDocumentProperties 打印机配置控制函数 ! n' J2 n3 R- S, q8 p& ~
EndDocAPI 结束一个成功的打印作业 & C8 ]# V( \+ j
EndDocPrinter 在后台打印程序的级别指定一个文档的结束
7 T" N" C2 D( h2 vEndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 6 ~) A4 @! H4 n2 @6 A' s
EndPagePrinter 指定一个页在打印作业中的结尾
/ ~" i5 V7 e8 DEnumForms 枚举一台打印机可用的表单
+ ~. T9 x( @0 W' {EnumJobs 枚举打印队列中的作业 1 @0 y$ }) [. h# ^/ L
EnumMonitors 枚举可用的打印监视器 6 _3 s: I$ j$ m( d
EnumPorts 枚举一个系统可用的端口 4 K7 H1 y/ j2 j- d# i0 G  q$ L
EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序
( }2 n$ z- G; Y' _) l+ P" sEnumPrinters 枚举系统中安装的打印机 ) ^/ m7 Y% f7 U' _5 Y
EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 " e! b5 a/ w2 A
EnumPrintProcessors 枚举系统中可用的打印处理器
: I  K8 u9 g  \1 z- G+ z+ }2 g- oEscape 设备控制函数
' q& G3 G5 I2 o: G# g% UFindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 * [7 X5 X/ u% j5 K3 A' F
FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化
5 _+ B0 K0 g0 a) ]FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 ) q3 {* l% y5 W! N/ v# G/ U( O* B0 Q
FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区
  w/ g3 U. W: V& h1 ?' x8 x8 |" eGetForm 取得与指定表单有关的信息
- T; p, X+ [  M- z' B& pGetJob 获取与指定作业有关的信息 ; @7 |- E7 X" t; m7 X4 B( }9 b# m
GetPrinter 取得与指定打印机有关的信息 # g! }; V$ o0 ?
GetPrinterData 为打印机设置注册表配置信息 - _/ ~4 ]1 w& M
GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 , J; V  L: r6 L9 a' m
GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么
2 ?3 n) }7 V5 M( O( I. oGetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 : L$ o6 Z- }& J& ?
OpenPrinter 打开指定的打印机,并获取打印机的句柄 7 O1 n6 S. y$ B# P8 B
PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框
9 H% ]  V' H6 s, R* gPrinterProperties 启动打印机属性对话框,以便对打印机进行配置 9 L( a& E0 x: F. f
ReadPrinter 从打印机读入数据 ( j) u% L* p* O2 d2 E9 F( r
ResetDC 重设一个设备场景 % b1 j1 g( e3 T! c( M. [
ResetPrinter 改变指定打印机的默认数据类型及文档设置 5 I8 h5 ~# h" Y  v) }# a! u, M
ScheduleJob 提交一个要打印的作业
+ i6 \: j* F" M5 ~; o; tSetAbortProc 为Windows指定取消函数的地址
( y" {4 ?2 K3 l; @# rSetForm 为指定的表单设置信息 7 k4 q8 K! ~; g0 a' I9 q0 W
SetJob 对一个打印作业的状态进行控制 8 @- L0 k$ I9 m# i2 X2 [
SetPrinter 对一台打印机的状态进行控制 2 c6 }) Q: o+ P
SetPrinterData 设置打印机的注册表配置信息 # ]+ F, h7 O! [0 G9 J+ g
StartDoc 开始一个打印作业
) m0 L$ p3 {- fStartDocPrinter 在后台打印的级别启动一个新文档
, `! s5 R, L4 RStartPage 打印一个新页前要先调用这个函数 - Z7 L0 {9 K) h
StartPagePrinter 在打印作业中指定一个新页的开始 7 Y$ [2 |5 t% f6 g) N6 q
WritePrinter 将发送目录中的数据写入打印机 0 g2 W- M" j' e
5. API之文本和字体函数
8 ^. i- P! L4 Z& F+ Y  A# ZAddFontResource 在Windows系统中添加一种字体资源
! r6 v2 ?* D/ `CreateFont 用指定的属性创建一种逻辑字体
3 J( g* P$ B* M6 G) D% ZCreateFontIndirect 用指定的属性创建一种逻辑字体 ( ?0 I# D2 d8 b& [6 a
CreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统 & i* v" K: N6 j. E
DrawText 将文本描绘到指定的矩形中
  a7 N. J) D" n+ d8 W3 ~5 YDrawTextEx 与DrawText相似,只是加入了更多的功能 1 m; H/ ?3 x3 J, k$ J% b
EnumFontFamilies 列举指定设备可用的字体 - y7 k% l( V5 b6 |% W9 j, {) B& R
EnumFontFamiliesEx 列举指定设备可用的字体 9 }* [) n9 T/ b1 d/ d" ~3 ^
EnumFonts 列举指定设备可用的字体 ; f# A: v; P" ?( j3 ^8 p
ExtTextOut 经过扩展的文本描绘函数。也请参考SetTextAlign函数
7 r/ T5 r$ |3 n. L+ b+ h, WGetAspectRatioFilterEx 用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小
6 r0 x$ E+ p! \: z/ _+ ]GetCharABCWidths 判断TureType字体中一个或多个字符的A-B-C大小
# c+ d) B8 @. e& F/ B# uGetCharABCWidthsFloat 查询一种字体中一个或多个字符的A-B-C尺寸
0 X1 y/ ]! B6 x: }! v1 ?3 `6 {GetCharacterPlacement 该函数用于了解如何用一个给定的字符显示一个字串
9 B6 i& N* S' Z/ s4 }* fGetCharWidth 调查字体中一个或多个字符的宽度
+ [1 v7 C4 E- p$ EGetFontData 接收一种可缩放字体文件的数据 ( F2 y6 I7 h9 _1 G
GetFontLanguageInfo 返回目前选入指定设备场景中的字体的信息
3 G) b7 L6 V0 J2 SGetGlyphOutline 取得TureType字体中构成一个字符的曲线信息
" C# q% a* e+ e" ~5 G6 @GetKerningPairs 取得指定字体的字距信息 3 T' Z2 p! T: c$ t2 A. o2 g
GetOutlineTextMetrics 接收与TureType字体内部特征有关的详细信息
8 P0 v% x8 [7 S; {GetRasterizerCaps 了解系统是否有能力支持可缩放的字体 , e# t# c6 w) A" e1 P. k' r
GetTabbedTextExtent 判断一个字串占据的范围,同时考虑制表站扩充的因素
( h, [  V0 @$ c: MGetTextAlign 接收一个设备场景当前的文本对齐标志 + x  G0 {! A3 j9 \0 V( N5 A% i6 ~
GetTextCharacterExtra 判断额外字符间距的当前值   x( c$ ^) o1 d2 P) }, s1 i
GetTextCharset 接收当前选入指定设备场景的字体的字符集标识符
' {5 u8 {. q5 ~# lGetTextCharsetInfo 获取与当前选定字体的字符集有关的详细信息
. ^0 ]) D* m6 [3 ^/ Q- E+ B" oGetTextColor 判断当前字体颜色。通常也称为"前景色" ( Q; [: r  f1 j; I3 r9 b' a
GetTextExtentExPoint 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息   w: Y9 t6 L1 g' l: }! d4 f
GetTextExtentPoint 判断一个字串的大小(范围) / w; K) y7 O6 J0 K4 w. ?+ B
GetTextFace 获取一种字体的字样名
2 ^$ x4 T# D  d; ]2 q: @GetTextMetrics 获取与选入一种设备场景的物理字体有关的信息
7 C5 P) i, x( f7 m2 F. zGrayString 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态 " u, e0 X1 Y% o6 z% E- |/ \
PolyTextOut 描绘一系列字串
! A0 Z, i' u  z% X, P. K* ORemoveFontResource 从Windows系统中删除一种字体资源 8 v3 _5 k" z1 m4 O8 g# k5 c& ]/ e: c
SetMapperFlags Windows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体
$ y7 A# ~" H0 QSetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置
3 I9 m0 i7 K4 v- [" YSetTextCharacterExtra 描绘文本的时候,指定要在字符间插入的额外间距 5 C1 G4 u2 Z( q' ]: B7 q
SetTextColor 设置当前文本颜色。这种颜色也称为"前景色" , o' t( Z, ^" @1 ?* }" z5 P" M1 U
SetTextJustification 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理 3 R5 S/ |9 `$ o# S* C
TabbedTextOut 支持制表站的一个文本描绘函数
! H: p8 F' W/ k4 n8 pTextOut 文本绘图函数
7 w& Y5 d( |0 @$ [8 r: pWINGDIAPI BOOL  WINAPI TextOut(; f' v" ?2 z- ^9 G8 y8 {- B. c4 T
HDC,     //输出设备! c7 }, i# L$ M! Z6 u
int,     //输出的横坐标$ c4 S7 B2 `, T  R9 _1 ^$ K
int,     //纵坐标
0 R! y( i8 t- Z" O" bLPCSTR, //输出的文本str2 P* e3 D6 E4 P: ~8 Z6 M
int);    //文本的长度:lstrlen(str)! i8 q0 }6 E# {/ y' p5 N+ f
6. API之菜单函数 ! u8 l7 h! T' k) _  c) l
AppendMenu 在指定的菜单里添加一个菜单项
( W9 o3 {6 W6 H8 GCheckMenuItem 复选或撤消复选指定的菜单条目 . F  H) g( r2 P; M' y, X
CheckMenuRadioItem 指定一个菜单条目被复选成"单选"项目
: F+ V3 B9 T  n, d. cCreateMenu 创建新菜单 * @6 |/ _+ B4 V5 c) d- [" K
CreatePopupMenu 创建一个空的弹出式菜单
' ^2 p* K* E, K, T( ]DeleteMenu 删除指定的菜单条目 . f' b; y, b' @8 b
DestroyMenu 删除指定的菜单
  J+ F/ @5 G: u& _DrawMenuBar 为指定的窗口重画菜单 9 E1 Q, H# e4 X1 a' a
EnableMenuItem 允许或禁止指定的菜单条目 ( r! }; g9 \% r, @- V4 V* v! s
GetMenu 取得窗口中一个菜单的句柄 9 x) F6 H4 E% T  P& R
GetMenuCheckMarkDimensions 返回一个菜单复选符的大小
& ~; G6 X- Q! s% XGetMenuContextHelpId 取得一个菜单的帮助场景ID
& P6 e" i6 P) n3 e3 YGetMenuDefaultItem 判断菜单中的哪个条目是默认条目 0 i# z/ O1 P* {) K" e
GetMenuItemCount 返回菜单中条目(菜单项)的数量 1 N) r& Y# u% `( s- D' `- u
GetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID 1 g, o5 ^# R! @5 F' I( H. l5 Y
GetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息
  F) `, f8 A/ U9 e) M, AGetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息
. \8 f4 W( K, n  q1 p+ G9 PGetMenuState 取得与指定菜单条目状态有关的信息
4 ~% W8 W5 g6 T, E* M: p1 l6 qGetMenuString 取得指定菜单条目的字串
# D1 i' J  _" V+ F$ _) H2 JGetSubMenu 取得一个弹出式菜单的句柄,它位于菜单中指定的位置
, J7 d4 W3 b" Q( s- `/ F5 v$ c- iGetSystemMenu 取得指定窗口的系统菜单的句柄 + G3 a1 q" J7 X8 w1 O/ O, T: B
HiliteMenuItem 控制顶级菜单条目的加亮显示状态
6 V. {- \! D& ~6 I" z. b! Y/ zInsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动 8 y9 l7 X4 q$ K2 |% {; g
InsertMenuItem 插入一个新菜单条目 , s- X* x$ R, g1 z+ |, U0 P9 K$ h
IsMenu 判断指定的句柄是否为一个菜单的句柄
0 H6 B2 b9 n" @  q/ G( MLoadMenu 从指定的模块或应用程序实例中载入一个菜单
( D2 g! ^# J( z9 h$ B) TLoadMenuIndirect 载入一个菜单
& V0 i  {' U6 z* A5 h; G0 jMenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点 ) q0 C( E1 J0 q% F! ?" R3 A2 Y2 l
ModifyMenu 改变菜单条目 ! w! i9 B9 ]8 S& W9 V4 `& L
RemoveMenu 删除指定的菜单条目 6 f& ]& q# E8 k: v
SetMenu 设置窗口菜单 ) a" D. ?, `) V; b9 h
SetMenuContextHelpId 设置一个菜单的帮助场景ID
. t: a3 e$ ~2 l6 h$ G6 j" X4 A, gSetMenuDefaultItem 将一个菜单条目设为默认条目 - E. _3 c8 P7 j0 c" K1 X
SetMenuItemBitmaps 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√)
4 S7 L% l. ]) a  W0 FSetMenuItemInfo 为一个菜单条目设置指定的信息 3 x7 T+ y7 W3 }# m
TrackPopupMenu 在屏幕的任意地方显示一个弹出式菜单   a" C( F1 L* s) Q5 N( B6 a" [  y8 B
TrackPopupMenuEx 与TrackPopupMenu相似,只是它提供了额外的功能 + ?3 B$ ?9 \5 w3 o) F! ~: l
7. API之位图、图标和光栅运算函数
- p1 z& I/ M! `. w2 ABitBlt 将一幅位图从一个设备场景复制到另一个' X# Y3 H' R5 I  o" A
     WINGDIAPI BOOL  WINAPI BitBlt(8 R& ?$ O1 s& v, i: [
HDC,     //目标HDC
. z5 T0 n- a5 K7 qint,     //X1
) h# l+ F# D9 nint,     //Y13 D. i% W7 q* n( e, E8 X  Q+ `
int,     //width+ |4 C" c; `8 N: _! r
int,     //height
& b2 `0 A9 C# K, G* l9 y( qHDC,     //源HDC
, Z6 g! H" w" w4 j2 |$ q+ }int,     //右边的距离
( s- \' n; m  W) N; I' _) c* [2 ^$ |+ Nint,     //??6 w9 \2 @, i8 u$ h4 @
DWORD);  //拷贝方式:SRCCOPY|SRCPAINT|SRCAND|SRCINVERT|RCERASE|NOTSRCCOPY|NOTSRCERASE|MERGECOPY|MERGEPAINT|! l! B) u3 C6 t9 h' M( E
PATCOPY|PATPAINT|PATINVERT|DSTINVERT|BLACKNESS|WHITENESS
3 r' y! b  D0 _/ _0 _3 wCopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序
" t. M3 Y) ~5 `6 a$ L& kCopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作
7 I0 @" k: Z, A, d1 R: MCreateBitmap 按照规定的格式创建一幅与设备有关位图
' }& m9 t8 A% w7 l( K. uCreateBitmapIndirect 创建一幅与设备有关位图
& {! z' e4 Y% ^3 ZCreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容 + V; Y5 s% ~3 r/ ~
CreateCursor 创建一个鼠标指针 ) Y* c! W6 y( X) R$ E
CreateDIBitmap 根据一幅与设备无关的位图创建一幅与设备有关的位图
! w$ _. w6 I5 y$ Q8 R% HCreateDIBSection 创建一个DIBSection & g, r' y" a( g6 O' }; _
CreateIcon 创建一个图标
0 l, a( J/ S; _' p& TCreateIconIndirect 创建一个图标 3 f5 g0 w) T' F
DestroyCursor 清除指定的鼠标指针,并释放它占用的所有系统资源
7 g6 H' D7 |4 P) m1 f6 GDestroyIcon 清除图标 $ @; N7 E) H& p4 V7 U
DrawIcon 在指定的位置画一个图标 " S  q) }5 {! C, w/ ~9 u, J5 n
DrawIconEx 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能 ; G, g8 k. g1 [$ @/ x( L$ a
ExtractAssociatedIcon 判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之 1 V: A" J: p% s
ExtractIcon 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来
. T! ]. u0 B4 p. b7 @. CGetBitmapBits 将来自位图的二进制位复制到一个缓冲区 5 E% ?# F+ i5 W8 W6 e+ y
GetBitmapDimensionEx 取得一幅位图的宽度和高度 - A& f' Y6 C5 M/ M8 W* h! ?% {
GetDIBColorTable 从选入设备场景的DIBSection中取得颜色表信息 8 p# G" _) N) I7 d2 P
GetDIBits 将来自一幅位图的二进制位复制到一幅与设备无关的位图里
4 i5 \: l0 h6 lGetIconInfo 取得与图标有关的信息 % i2 V+ w4 R4 Z7 n
GetStretchBltMode 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式
2 K! k( ~' z( Q  U! p2 X7 ILoadBitmap 从指定的模块或应用程序实例中载入一幅位图
) s# {4 H1 ^: @/ ~$ P0 ]LoadCursor 从指定的模块或应用程序实例中载入一个鼠标指针 8 M2 Z0 U2 k3 r) y
LoadCursorFromFile 在一个指针文件或一个动画指针文件的基础上创建一个指针
8 F$ ~6 b+ |0 D9 \7 JLoadIcon 从指定的模块或应用程序实例中载入一个图标 . @6 H- I" ^6 n4 c
LoadImage 载入一个位图、图标或指针
8 Y9 D, n, @: e7 mHANDLE LoadImageA(! P: m7 O) P; H( S; e. ^
HINSTANCE,            //当前实例句柄:AfxGetInstanceHandle()
2 ?9 h0 v' M+ f' g) U/ C+ _; _    LPCSTR,               //资源所在的目录:c:\help.bmp
) t. B2 R* j7 D  J* u) f    UINT,                 //类型:IMAGE_BITMAP|IMAGE_ICON|IMAGE_CURSOR|IMAGE_ENHMETAFILE4 O3 U$ X% {+ G9 l
    int,                  //0 ]( N/ L3 o# j, s
    int,                  //
% E4 a. U5 W( ~* ?0 C" T; @, jUINT);                //风格:LR_DEFAULTCOLOR|LR_MONOCHROME|LR_COLOR|LR_COPYRETURNORG|
* {+ [0 O: C8 d6 \& b9 E: W9 X# TR_COPYDELETEORG|LR_LOADFROMFILE|LR_LOADTRANSPARENT|LR_DEFAULTSIZE|LR_VGACOLOR|
; @! `+ ]) Q; W4 @LR_LOADMAP3DCOLORS|LR_CREATEDIBSECTION|LR_COPYFROMRESOURCE|LR_SHARED, x6 C  u- N& G; T
MaskBlt 执行复杂的图象传输,同时进行掩模(MASK)处理
+ d: O: T- {/ p) a0 \PatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景 5 s4 S% N; s' ~2 @# I1 E
PlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理
0 ], D6 T& y4 u9 hSetBitmapBits 将来自缓冲区的二进制位复制到一幅位图 : S! Q+ M2 ^9 e  B
SetBitmapDimensionEx 设置一幅位图的宽度。以一毫米的十分之一为单位
3 Q# L6 m% T, BSetDIBColorTable 设置选入设备场景的一个DIBSection的颜色表信息
/ S* T9 G! a, X3 r0 t  _8 j; G' MSetDIBits 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里 : I. }9 k0 G) S7 G$ z) C
SetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备
6 E  [6 D1 P. u- CSetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式
7 _# ~0 U6 ~2 L0 a* _2 l+ sStretchBlt 将一幅位图从一个设备场景复制到另一个 6 E5 p# W/ M# H9 v) S% ?
StretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景
" k* K5 e/ E: \4 q$ ?3 q8. API之绘图函数
9 k7 _7 V; [6 [' XAbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作
$ r* e( A# R. s3 wAngleArc 用一个连接弧画一条线
5 }9 y4 k$ Y4 s% h( J) i' y2 ~6 RArc 画一个圆弧 , @% G3 ?: S' M7 O  s2 d, d
BeginPath 启动一个路径分支 8 L" ^: W/ |- ~2 J7 L. g% U7 ~
CancelDC 取消另一个线程里的长时间绘图操作
/ J. i: [+ X2 O! S8 _Chord 画一个弦
5 h6 P: r- ^) G& w3 z9 kCloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄
; Y! M+ V8 a  I$ n, C% l6 h& U( mCloseFigure 描绘到一个路径时,关闭当前打开的图形 7 F: Z8 i; q) V
CloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄
' ^' c& c/ R$ m; q( W2 @6 vCopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝) % ^, ^, [$ V& x# ^; p7 Y2 n
CopyMetaFile 制作指定(标准)图元文件的一个副本
1 E1 ?* X: G8 ?1 ]0 N+ j: M! H4 |CreateBrushIndirect 在一个LOGBRUSH数据结构的基础上创建一个刷子
2 C" ]8 U# c' X# \9 M! _CreateDIBPatternBrush 用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案)
! Y/ w7 T" y# o( ~CreateEnhMetaFile 创建一个增强型的图元文件设备场景
- t. k# d4 s) W1 b% I4 @CreateHatchBrush 创建带有阴影图案的一个刷子 : ^, q( i# M$ N1 x4 H+ D+ E! s% h
CreateMetaFile 创建一个图元文件设备场景 / y: k  ~% S2 |; L4 Z/ P. c
CreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子
6 @" H  A% U! C' E7 }CreatePen 用指定的样式、宽度和颜色创建一个画笔 9 D2 ]' s3 c; i! ~
CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔
: x1 f& X- U1 @1 Y' aCreateSolidBrush 用纯色创建一个刷子
# F5 R- ?6 y8 t9 M) t/ m8 KDeleteEnhMetaFile 删除指定的增强型图元文件 8 I" W0 Z; B( x. Z5 ]
DeleteMetaFile 删除指定的图元文件
% M1 t, c  D) R, [# h0 N* }WINGDIAPI BOOL WINAPI DeleteObject(HGDIOBJ) 删除GDI对象,对象使用的所有系统资源都会被释放
& n, j/ M( q' {$ d8 t/ ~DrawEdge 用指定的样式描绘一个矩形的边框 ; x9 U8 ]9 Z1 }
DrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序
5 \0 Z, B5 ]2 P1 I! o# M) I3 E" E% J3 uDrawFocusRect 画一个焦点矩形 ; w/ |$ l, v0 C3 w
DrawFrameControl 描绘一个标准控件 ' ~: z2 D/ r( `5 {1 i
DrawState 为一幅图象或绘图操作应用各式各样的效果
3 W' J6 `3 c3 s9 S! ]9 BEllipse 描绘一个椭圆,由指定的矩形围绕
5 R0 Y- S3 V) |' I" OEndPath 停止定义一个路径 ) ]. u( u( i' W1 p' P  G! Q& p; u
EnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录 % l7 A- s( {- h- I' g! P1 b
EnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录 6 k  g. w8 o" E1 f  M+ D1 |
EnumObjects 枚举可随同指定设备场景使用的画笔和刷子
. D( O+ p4 C' }4 Z. yExtCreatePen 创建一个扩展画笔(装饰或几何) 8 Q' V  y  Q! K/ T
ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域 # ^& n6 E$ N# m, U- W
FillPath 关闭路径中任何打开的图形,并用当前刷子填充
) J$ W1 f* g7 V% X% |. JFillRect 用指定的刷子填充一个矩形
* j" a; U  W  J% s# }0 j0 \FlattenPath 将一个路径中的所有曲线都转换成线段 % n; [2 w. j0 J
FloodFill 用当前选定的刷子在指定的设备场景中填充一个区域 ) O5 f6 V, k9 I( |, a% z
FrameRect 用指定的刷子围绕一个矩形画一个边框
0 c' U# Q! ?; M5 |! |GdiComment 为指定的增强型图元文件设备场景添加一条注释信息
7 U/ a' H( L- J' `  O) _GdiFlush 执行任何未决的绘图操作   e) t, U5 s% ^
GdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中 6 S- o4 }$ T" \+ K
GdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列
( a9 w# g' u. q' L6 f6 X  O7 JGetArcDirection 画圆弧的时候,判断当前采用的绘图方向
8 M9 K1 [# {$ ]+ _6 o) e$ cGetBkColor 取得指定设备场景当前的背景颜色 4 G# j' _8 ?' K% ]8 U
GetBkMode 针对指定的设备场景,取得当前的背景填充模式
. T0 j" t' H: n! g3 W% nGetBrushOrgEx 判断指定设备场景中当前选定刷子起点
3 v* a' o+ \4 ~* I; WGetCurrentObject 获得指定类型的当前选定对象 ) ^7 g  F4 m7 K* S8 C" h, }
GetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置 $ ?8 ~' H* w& C3 a0 ]3 w
GetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄
- w# e- g5 ?% qGetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里
6 z8 W2 E: y2 B3 NGetEnhMetaFileDescription 返回对一个增强型图元文件的说明
1 f6 f- b' y; [+ I5 jGetEnhMetaFileHeader 取得增强型图元文件的图元文件头 / L. }6 e2 m8 r  g; \
GetEnhMetaFilePaletteEntries 取得增强型图元文件的全部或部分调色板
7 @' a5 J8 \: |; m: `4 V3 wGetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄 - D6 {; ^9 f6 e9 c7 G& A
GetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区 ! Z* \! W1 t1 {: v/ F
GetMiterLimit 取得设备场景的斜率限制(Miter)设置 . ?  I, t" P% ?
GetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色 * P/ K: b& I. A$ X. o7 d& v$ h
GetObjectAPI 取得对指定对象进行说明的一个结构
, {3 j6 P* u% b9 yGetObjectType 判断由指定句柄引用的GDI对象的类型 1 a- J. [) [  e. L" ]  y
GetPath 取得对当前路径进行定义的一系列数据
9 A2 c  _8 v! Q8 J! Y0 s. T. |9 |GetPixel 在指定的设备场景中取得一个像素的RGB值
+ ~4 E5 M7 g* G, {* k* WGetPolyFillMode 针对指定的设备场景,获得多边形填充模式
' r* X- n; L( Y1 @GetROP2 针对指定的设备场景,取得当前的绘图模式
3 x, |' K6 N4 m9 UGetStockObject 取得一个固有对象(Stock) ! k9 i0 l% n9 e- y) l
GetSysColorBrush 为任何一种标准系统颜色取得一个刷子
( d# S8 a; R# m  l9 k  P! yGetWinMetaFileBits 通过在一个缓冲区中填充用于标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件 " w' r5 w$ m) a
InvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形 ' L! A# L  m! t" O$ `+ r
LineDDA 枚举指定线段中的所有点
- ]9 f4 q5 A4 s" h& B& |9 n! PLineTo 用当前画笔画一条线,从当前位置连到一个指定的点
* @6 v& G9 Y* g# ~' o+ o' GMoveToEx 为指定的设备场景指定一个新的当前画笔位置
- w+ Q( z8 Y) j9 a* {PaintDesk 在指定的设备场景中描绘桌面墙纸图案 . a# ]' ~1 [" \# K; M
PathToRegion 将当前选定的路径转换到一个区域里
# L" u5 R8 w0 ?( R' o. ?7 }Pie 画一个饼图
- V5 E( w8 x8 Y9 _0 t! \PlayEnhMetaFile 在指定的设备场景中画一个增强型图元文件
. n3 P% j7 g  `' N# I- kPlayEnhMetaFileRecord 回放单独一条增强型图元文件记录 & y; Z3 p" L2 n& m3 m+ a0 @5 W
PlayMetaFile 在指定的设备场景中回放一个图元文件
' L' x# Q1 @/ L: U6 W5 q) D- IPlayMetaFileRecord 回放来自图元文件的单条记录
2 |& v- S: E0 W4 FPolyBezier 描绘一条或多条贝塞尔(Bezier)曲线
. ]' a0 d7 j& M& |8 G" VPolyDraw 描绘一条复杂的曲线,由线段及贝塞尔曲线组成 / p0 K- r: k- U' y  \
Polygon 描绘一个多边形
% V' m# l7 K! P8 C" P4 }Polyline 用当前画笔描绘一系列线段
: ^$ P" C8 O4 @0 s5 v( \PolyPolygon 用当前选定画笔描绘两个或多个多边形 ' H6 n) L; w% v- O; _
PolyPolyline 用当前选定画笔描绘两个或多个多边形 8 M3 Y+ y& ~9 L1 l( _4 m
Rectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充   `! P. i9 z: L+ q
RoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充
; h, M  {* p4 R/ T+ c0 I* C# WSelectClipPath 将设备场景当前的路径合并到剪切区域里 4 `. }& t" n+ m$ p
SelectObject 为当前设备场景选择图形对象
' w* n7 O" c4 x$ T, s8 _     WINGDIAPI HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ);) Z) ^9 i8 K( \& d" X
SetArcDirection 设置圆弧的描绘方向 4 E9 p! Q4 f% F( Q0 I0 Y* ?
SetBkColor 为指定的设备场景设置背景颜色 6 o( F3 ?9 p/ K
SetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式
, A1 z; P* d: S9 j; [6 N- ISetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点 ) n  K" e+ A- x3 H; h
SetEnhMetaFileBits 用指定内存缓冲区内包含的数据创建一个增强型图元文件
( E" Y! R" N$ G7 rSetMetaFileBitsEx 用包含在指定内存缓冲区内的数据结构创建一个图元文件 " q8 T; M% E/ [) N+ r
SetMiterLimit 设置设备场景当前的斜率限制 " s! s( n  {5 F1 o0 Q/ `1 U" }
SetPixel 在指定的设备场景中设置一个像素的RGB值 4 [! K3 L2 ?3 P: ~) V: s& i
SetPixelV 在指定的设备场景中设置一个像素的RGB值 5 J( W5 K, G# u
SetPolyFillMode 设置多边形的填充模式 & f3 Q) c( s3 p6 E
SetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致
& J" a! C: A6 Q0 q% h$ _: V8 iSetWinMetaFileBits 将一个标准Windows图元文件转换成增强型图元文件
" z# i" f4 e+ g/ F! ~$ ?" F/ H, G, uStrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域
! G: Q: `* e  L( KStrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭 / J) ?/ }6 k1 F5 G4 @# a) u' [/ Q
UnrealizeObject 将一个刷子对象选入设备场景之前,如刷子的起点准备用SetBrushOrgEx修改,则必须先调用本函数 & M: ?5 o7 x5 l- S( E$ i, S. h6 E
WidenPath 根据选定画笔的宽度,重新定义当前选定的路径 ) Y; Q: X, {& \4 ^* ]
9. API之设备场景函数 / _3 K, U7 O8 ~8 n) [
CombineRgn 将两个区域组合为一个新区域 ! @7 \: q  d/ f6 V: H( [6 P; K+ Q# T
CombineTransform 驱动世界转换。它相当于依顺序进行两次转换
: q3 \! B, @, q6 Y0 H3 s: `  M1 lCreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景
  N0 h  ]( U' c5 u: j% f& T5 _CreateDC 为专门设备创建设备场景
& A3 C- _( I  i) d5 b+ PCreateEllipticRgn 创建一个椭圆
% e* U* g, b- V$ d2 fCreateEllipticRgnIndirect 创建一个内切于特定矩形的椭圆区域 : y0 _# L" S) D  R* j
CreateIC 为专用设备创建一个信息场景
$ ^4 y0 }5 Q- ]8 c* pCreatePolygonRgn 创建一个由一系列点围成的区域
7 b% ^% o+ \  i6 q, b4 D% ?CreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的
% w( H& |% s; \CreateRectRgn 创建一个矩形区域 ! N4 L, l4 \6 H6 z: Q6 o3 r
CreateRectRgnIndirect 创建一个矩形区域
" K0 M2 o/ m* O9 A6 x  U& x! ~CreateRoundRectRgn 创建一个圆角矩形
# @, o$ S' R, I" O  w" RDeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源
9 Q; ?' |; J3 Z; |: b9 eDPtoLP 将点阵从设备坐标转换到专用设备场景逻辑坐标 . w) u+ H4 z+ B
EqualRgn 确定两个区域是否相等
% s9 e2 ?! B: `5 E+ K. v  j) fExcludeClipRect 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图
& C/ ?6 u; H, @2 j7 qExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域
# L3 {. t" L! Z* N  JExtCreateRegion 根据世界转换修改区域 5 f) `" g( \9 K4 V9 r
ExtSelectClipRgn 将指定区域组合到设备场景的当前剪裁区 ! r8 x- i- T( z, D' \
FillRgn 用指定刷子填充指定区域 9 s2 P/ v, A+ ~. Z: M9 T
FrameRgn 用指定刷子围绕指定区域画一个外框
% N' J& d. ~' {6 ]5 I5 TGetBoundsRect 获取指定设备场景的边界矩形
; l8 X8 u! w) O3 d2 N- N4 \% X$ ]GetClipBox 获取完全包含指定设备场景剪裁区的最小矩形 ; Q" \2 x5 x' d
GetClipRgn 获取设备场景当前剪裁区
" a+ c/ p' z9 v! t* H( k6 ZGetDC 获取指定窗口的设备场景
. W+ S: F' v6 m2 n1 T" k+ {3 p0 yGetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项
) n0 ?4 u' ?6 t" gGetDCOrgEx 获取指定设备场景起点位置(以屏幕坐标表示) 5 C+ ~, C. v$ p0 K
GetDeviceCaps 根据指定设备场景代表的设备的功能返回信息 3 q$ u. l: t+ g+ A! y$ {; `; A
GetGraphicsMode 确定是否允许增强图形模式(世界转换) ) n5 b- ?( A# j0 o3 p
GetMapMode 为特定设备场景调入映象模式
- [" X: i" k9 n; c; R5 Z/ E  yGetRegionData 装入描述一个区域信息的RgnData结构或缓冲区
- o6 L- g- r8 r) z0 p- TGetRgnBox 获取完全包含指定区域的最小矩形
% m, O- e$ h4 H: m; AGetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新 8 l2 Q8 Z8 V4 X2 _  d' w! x7 p
GetViewportExtEx 获取设备场景视口(viewport)范围
& T, ^9 I" ]+ L$ p4 x/ _  t6 o3 D: ?GetViewportOrgEx 获取设备场景视口起点
/ n' q8 k+ _' n5 Q) s! t. JGetWindowDC 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景 - w, A9 X9 W. X; {
GetWindowExtEx 获取指定设备场景的窗口范围 ! p+ Z% x# W* }( y6 |" I
GetWindowOrgEx 获取指定设备场景的逻辑窗口的起点 + f& `) U( R; G0 N
GetWindowRgn 获取窗口区域
; P5 v# f# M8 W: f* ^) \GetWorldTransform 如果有世界转换,为设备场景获取当前世界转换 ! n7 g' B% D0 N$ i. ?
IntersectClipRect 为指定设备定义一个新的剪裁区 + x. R: D! x4 O
InvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画
1 r! }" [  k* P2 \0 ~( [: tInvertRgn 通过颠倒每个像素值反转设备场景指定区域
4 o2 Z8 Z7 s# e  J6 c9 O( LLPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标
% T+ x# W) I8 C* K" p) DModifyWorldTransform 根据指定的模式修改世界转换 # i+ t0 B6 U5 {3 R. Z! `, b
OffsetClipRgn 按指定量平移设备场景剪裁区 ( P  O6 y" o' Z7 h  y: G. K
OffsetRgn 按指定偏移量平移指定区域
1 d  d4 _& ^& H4 L0 P3 KOffsetViewportOrgEx 平移设备场景视口区域
6 d4 T9 _. s3 kOffsetWindowOrgEx 平移指定设备场景窗口起点 + n% k" D7 B4 a
PaintRgn 用当前刷子背景色填充指定区域
- A+ i. z& e) N) ^2 a! I- lPtInRegion 确定点是否在指定区域内 " s8 W/ F5 e! |1 s, D
PtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内) % N8 T4 S3 h% ~
RectInRegion 确定矩形是否有部分在指定区域内 ( ]/ c  n0 e; }6 ^
RectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内)
8 y. x' L% b8 @& [% x1 n- oReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景
3 Z6 ~" v/ `0 G+ q% I7 F+ BRestoreDC 从设备场景堆栈恢复一个原先保存的设备场景
/ W+ U6 p1 z3 v! q) }% L/ o( |' u, XSaveDC 将指定设备场景状态保存到Windows设备场景堆栈
0 }# j& ^' J- `4 t3 [* Z- ?! uScaleViewportExtEx 缩放设备场景视口的范围
5 I# K' @+ t% W3 E, BScaleWindowExtEx 缩放指定设备场景窗口范围 & F5 m. [$ C9 K" z  q  a
ScrollDC 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形 % o$ d8 f: X! W8 B0 ~3 l
SelectClipRgn 为指定设备场景选择新的剪裁区 / |4 I' F% s9 }* R
SetBoundsRect 设置指定设备场景的边界矩形 & U' d- q% h! ~/ S2 a
SetGraphicsMode 允许或禁止增强图形模式,以提供某些支持(包括世界转换) 7 R: |- t% r; E+ r4 O. m
SetMapMode 设置指定设备场景的映射模式
$ ~0 M! P2 {: s, l3 @SetRectRgn 设置区域为指定的矩形
; a1 b7 @# U7 P( t8 G0 USetViewportExtEx 设置设备场景视口范围 ) K; k% x% z- u& I- f
SetViewportOrgEx 设置设备场景视口起点
# J% q6 S! D# g8 _) ESetWindowExtEx 设置指定设备场景窗口范围 ; r$ J6 I5 a; w
SetWindowOrgEx 设置指定设备场景窗口起点 5 }& T1 |3 a" P. t: z5 Q; Y7 A
SetWindowRgn 设置窗口区域 , e5 U" X8 Q, u: b% T# e! {: M
SetWorldTransform 设置世界转换
0 ?3 g/ E2 O0 MValidateRgn 激活窗口中指定区域,把它从刷新区移走 0 O2 q5 F- l$ [: u. y
WindowFromDC 取回与某一设备场景相关的窗口的句柄
6 L+ z! Z0 b6 h* w10. API之硬件与系统函数
! L  |* _4 ^" |8 e* Y: CActivateKeyboardLayout 激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义
3 y, F9 }- o0 a4 `/ `Beep 用于生成简单的声音 # G1 E$ x4 o% a
CharToOem 将一个字串从ANSI字符集转换到OEM字符集
0 B( Z) G" B+ }1 oClipCursor 将指针限制到指定区域 # @% E# g6 Q1 F  x! g5 D7 i
ConvertDefaultLocale 将一个特殊的地方标识符转换成真实的地方ID ; H2 l, T& J2 r( p/ _. m7 X
CreateCaret 根据指定的信息创建一个插入符(光标),并将它选定为指定窗口的默认插入符 2 o2 b( D4 V, d* o  i
DestroyCaret 清除(破坏)一个插入符
  p1 l9 o" M3 w3 Z) yEnumCalendarInfo 枚举在指定"地方"环境中可用的日历信息 , n5 [4 ]; P' \4 K5 K( J
EnumDateFormats 列举指定的"当地"设置中可用的长、短日期格式
) u& [2 H/ u9 c/ d- }/ n7 {EnumSystemCodePages 枚举系统中已安装或支持的代码页 ; J; ?0 h9 G! a- A
EnumSystemLocales 枚举系统已经安装或提供支持的"地方"设置 % @6 h, ~& B! G. x. y
EnumTimeFormats 枚举一个指定的地方适用的时间格式 $ o! t) j# ~: P! h8 w
ExitWindowsEx 退出windows,并用特定的选项重新启动 ; q0 o7 L( j9 c5 [: X) R" _
     WINUSERAPI BOOL WINAPI ExitWindowsEx(
8 o4 J' J; H' F) wUINT uFlags,       //EWX_LOGOFF|EWX_REBOOT|EWX_FORCE|EWX_POWEROFF|EWX_FORCEIFHUNG
/ n, b, I' o5 z     DWORD dwReserved); //0
" \& [5 i; P1 T1 E( hExpandEnvironmentStrings 扩充环境字串
" J: L# Q7 g2 h6 n9 iFreeEnvironmentStrings 翻译指定的环境字串块 " f  I1 g% J( G1 F$ |
GetACP 判断目前正在生效的ANSI代码页 1 j4 N& [: y- n7 C9 D8 I, \# g3 u
GetAsyncKeyState 判断函数调用时指定虚拟键的状态
  H8 V: r  [) V' b6 u. qGetCaretBlinkTime 判断插入符光标的闪烁频率
* o! U; A4 Z3 qGetCaretPos 判断插入符的当前位置
; L  A  s3 y! B( C8 f0 DGetClipCursor 取得一个矩形,用于描述目前为鼠标指针规定的剪切区域
# k: F5 S( g( `! _7 ~GetCommandLine 获得指向当前命令行缓冲区的一个指针
9 o: w$ C( X. |. M' C5 y  RGetComputerName 取得这台计算机的名称
) h5 ~  J. i. Y, Z7 V5 aGetCPInfo 取得与指定代码页有关的信息
  A9 |- q0 v8 f4 ~GetCurrencyFormat 针对指定的"地方"设置,根据货币格式格式化一个数字
8 \: j5 L4 r8 |+ I6 OGetCursor 获取目前选择的鼠标指针的句柄 / U$ k$ W' ^* H% W
GetCursorPos 获取鼠标指针的当前位置
, B0 w" [2 V: \/ O0 C  `( tGetDateFormat 针对指定的"当地"格式,对一个系统日期进行格式化
. r+ h% n+ L6 E- @6 F5 x5 S) j0 FGetDoubleClickTime 判断连续两次鼠标单击之间会被处理成双击事件的间隔时间 , \! m: ^1 Q3 ?5 Q/ [
GetEnvironmentStrings 为包含了当前环境字串设置的一个内存块分配和返回一个句柄   P% x4 l! l8 k8 f' G: B  v
GetEnvironmentVariable 取得一个环境变量的值
* ~& n1 k! G0 V) Y0 C3 _GetInputState 判断是否存在任何待决(等待处理)的鼠标或键盘事件 + |- h: O( O$ H) n
GetKBCodePage 由GetOEMCP取代,两者功能完全相同 8 R; a9 Q) R' p  x( y
GetKeyboardLayout 取得一个句柄,描述指定应用程序的键盘布局
, U. r# N7 i" v% WGetKeyboardLayoutList 获得系统适用的所有键盘布局的一个列表 , V1 m  M+ a8 l6 j, a/ l
GetKeyboardLayoutName 取得当前活动键盘布局的名称
# H# A" {" V" VGetKeyboardState 取得键盘上每个虚拟键当前的状态
2 v3 c9 L( V  I2 w8 hGetKeyboardType 了解与正在使用的键盘有关的信息
6 }2 b& L) G- p. [GetKeyNameText 在给出扫描码的前提下,判断键名 5 H! K" z: [, J* Z: B$ M; b8 N
GetKeyState 针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态 : \3 a/ z0 |2 Q/ p1 x& R" ~
GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息 , j* A1 ?# g# W3 C$ g1 H" L- H8 b
GetLocaleInfo 取得与指定"地方"有关的信息 4 h) ?8 R( M, o! G1 C' q
GetLocalTime 取得本地日期和时间
% \% T/ z% z! _5 I7 D( `8 kGetNumberFormat 针对指定的"地方",按特定的格式格式化一个数字 4 ^8 a" \% q( J6 h# N
GetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页 4 g) F, ]" q/ u9 U) I* Q# ]
GetQueueStatus 判断应用程序消息队列中待决(等待处理)的消息类型
& @# K9 ]& {3 S: g* C5 I% _4 bGetSysColor 判断指定windows显示对象的颜色 " b2 q/ |& y' Y% k, x  \
GetSystemDefaultLangID 取得系统的默认语言ID
3 Q# w% ?3 o$ i6 G* ~5 g. h/ I8 OGetSystemDefaultLCID 取得当前的默认系统"地方"
2 W7 f' n- Y+ ]% }4 H' PGetSystemInfo 取得与底层硬件平台有关的信息 ) y* h9 i9 r4 ^/ d, ^) Q0 V- A. p
GetSystemMetrics 返回与windows环境有关的信息 ( O9 t: t' Y! P% ?, f* R0 |
GetSystemPowerStatus 获得与当前系统电源状态有关的信息 * i) v8 U9 a* R" ?( b
GetSystemTime 取得当前系统时间,这个时间采用的是"协同世界时间"(即UTC,也叫做GMT)格式 7 C+ I8 ~& A( j% w
GetSystemTimeAdjustment 使内部系统时钟与一个外部的时钟信号源同步 & W- n" B/ ?/ N# w) f3 k
GetThreadLocale 取得当前线程的地方ID
& w3 d8 ?' A% u. ?# |& c) HGetTickCount 用于获取自windows启动以来经历的时间长度(毫秒) 3 r0 H5 x. p2 K$ v
GetTimeFormat 针对当前指定的"地方",按特定的格式格式化一个系统时间
( D+ E' f) V8 n1 u- D! ]; CGetTimeZoneInformation 取得与系统时区设置有关的信息
3 t) Q7 h- B) sGetUserDefaultLangID 为当前用户取得默认语言ID 3 g: D4 ?# z( p
GetUserDefaultLCID 取得当前用户的默认"地方"设置 $ r! o! {% {# L( U
GetUserName 取得当前用户的名字
3 k, X/ P: m/ a2 X) T- }GetVersion 判断当前运行的Windows和DOS版本
) h: I; \* b' E$ vGetVersionEx 取得与平台和操作系统有关的版本信息
2 @" [' S" N2 \# u' m, ~5 i; \HideCaret 在指定的窗口隐藏插入符(光标) 0 R( X( N) w; ~5 ~' ]
IsValidCodePage 判断一个代码页是否有效 6 J/ ^" f' f$ M) I
IsValidLocale 判断地方标识符是否有效 9 Q$ w8 y8 A  C" Y3 y* p. d  x
keybd_event 这个函数模拟了键盘行动 * w* F6 v2 ?; J7 r( }0 g; F
LoadKeyboardLayout 载入一个键盘布局
7 H+ B& ^  f# L( l" C3 ~$ lMapVirtualKey 根据指定的映射类型,执行不同的扫描码和字符转换
" F$ z& e" f6 d' ~& f7 n( lMapVirtualKeyEx 根据指定的映射类型,执行不同的扫描码和字符转换   k/ e" K' g, F
MessageBeep 播放一个系统声音。系统声音的分配方案是在控制面板里决定的 * X5 c* Y, d3 o( p) X; r' x
mouse_event 模拟一次鼠标事件
% \0 r3 U3 U$ O; n  iOemKeyScan 判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态
$ [; D) \5 `- G5 {  w. M9 ZOemToChar 将OEM字符集的一个字串转换到ANSI字符集 ! S. ^9 M# R: k
SetCaretBlinkTime 指定插入符(光标)的闪烁频率
" [! h. N. K- @9 CSetCaretPos 指定插入符的位置
, G! }7 C/ r6 E8 ISetComputerName 设置新的计算机名
$ c) ?+ b- K1 Y2 `5 T0 e* ~SetCursor 将指定的鼠标指针设为当前指针
# `" q6 H4 ?) \" E3 d, e+ |SetCursorPos 设置指针的位置
1 k% G' e( Z, A; K9 k) W. HSetDoubleClickTime 设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间
& g* q1 ]: d: E2 m! f9 @6 JSetEnvironmentVariable 将一个环境变量设为指定的值
8 V( `1 A2 a3 a$ f! a! ?! X' oSetKeyboardState 设置每个虚拟键当前在键盘上的状态 ! z) c" x* `6 ~/ W0 D
SetLocaleInfo 改变用户"地方"设置信息 + W5 S) b: S6 Y
SetLocalTime 设置当前地方时间 8 ~# ?7 w: f+ W( S9 p$ n1 r7 p0 d
SetSysColors 设置指定窗口显示对象的颜色 2 C1 u. p. W" I) }! t8 L
SetSystemCursor 改变任何一个标准系统指针
: u6 w) a- V5 L6 [. k  h: mSetSystemTime 设置当前系统时间
  o4 p9 E0 E( R9 kSetSystemTimeAdjustment 定时添加一个校准值使内部系统时钟与一个外部的时钟信号源同步 % x7 m8 x6 u- ]- t
SetThreadLocale 为当前线程设置地方 5 N6 A: s0 Q9 C$ W+ t  o/ R! k
SetTimeZoneInformation 设置系统时区信息
0 X% m1 w, T# Q6 Y3 qShowCaret 在指定的窗口里显示插入符(光标) 2 E$ f& O6 h9 u. `+ {) t) g5 k6 U: t
ShowCursor 控制鼠标指针的可视性
1 Z% R2 c; l. bSwapMouseButton 决定是否互换鼠标左右键的功能   i  v7 N2 ^+ u& I( s6 }+ I( L
SystemParametersInfo 获取和设置数量众多的windows系统参数 5 Y: R5 K5 p4 j# \
SystemTimeToTzSpecificLocalTime 将系统时间转换成地方时间
5 V4 O) h" c3 q: ^$ B5 ?9 h2 {ToAscii 根据当前的扫描码和键盘信息,将一个虚拟键转换成ASCII字符
! N+ h3 \( O  i: cToUnicode 根据当前的扫描码和键盘信息,将一个虚拟键转换成Unicode字符
  W. B6 m2 E0 [- w& DUnloadKeyboardLayout 卸载指定的键盘布局 : ^+ q% ?3 y. D7 |
VkKeyScan 针对Windows字符集中一个ASCII字符,判断虚拟键码和Shift键的状态
# S: S" I& [2 C4 n" x4 U11. API之进程和线程函数 1 s- [+ h8 C- K+ L2 Z4 Q
CancelWaitableTimer 这个函数用于取消一个可以等待下去的计时器操作 - l5 ?# }9 X, z8 A# b. v# P
CallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用
1 c  Q& T3 H& P3 k) s# qConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个命名管道连接
0 t' U5 Z6 m$ z; ?& ?( ~8 kCreateEvent 创建一个事件对象
$ M% a4 K) J, }CreateMailslot 创建一个邮路。返回的句柄由邮路服务器使用(收件人) . K3 h0 a9 B: ?2 A( v& P
CreateMutex 创建一个互斥体(MUTEX)
' W1 D+ o6 b7 L& X5 a% C& Y2 w' B8 }: sCreateNamedPipe 创建一个命名管道。返回的句柄由管道的服务器端使用
) M: P( u5 E$ B8 B( ICreatePipe 创建一个匿名管道 5 |7 @; J/ n! P. ~5 A( D
CreateProcess 创建一个新进程(比如执行一个程序)
- T  C; A! w9 uCreateSemaphore 创建一个新的信号机
% `& r5 u, w9 L% ECreateWaitableTimer 创建一个可等待的计时器对象 / V" _0 X" F" r0 U" Y/ z3 q3 n
DisconnectNamedPipe 断开一个客户与一个命名管道的连接
( [- F, |5 Q* A: n! i8 x( j* c2 fDuplicateHandle 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄
3 \7 r1 n) A6 r5 Q7 E6 k* ZExitProcess 中止一个进程
0 j: C5 D& m+ d' |+ l9 `FindCloseChangeNotification 关闭一个改动通知对象
& [0 x0 q, I  ?- K! P( M6 ]$ b. T; fFindExecutable 查找与一个指定文件关联在一起的程序的文件名 4 ?" g: @8 w7 M; O/ _0 C+ f6 G
FindFirstChangeNotification 创建一个文件通知对象。该对象用于监视文件系统发生的变化
7 D: \# N4 G9 R5 U9 hFindNextChangeNotification 重设一个文件改变通知对象,令其继续监视下一次变化
* O- }$ F' Z$ x& tFreeLibrary 释放指定的动态链接库 , m6 Z  Z$ p2 w1 }6 C; p; c
GetCurrentProcess 获取当前进程的一个伪句柄 0 d# e$ `# E6 G! G% J% Y8 v/ T
GetCurrentProcessId 获取当前进程一个唯一的标识符
! ~8 @4 Z/ q0 R/ L% H! ~GetCurrentThread 获取当前线程的一个伪句柄
/ R4 M6 U; L: A& _$ {( M+ _GetCurrentThreadId 获取当前线程一个唯一的线程标识符
; d. O/ @4 U9 d& j' R5 KGetExitCodeProces 获取一个已中断进程的退出代码 ' h! F0 B0 w  O3 b* V4 ~! k7 S1 F
GetExitCodeThread 获取一个已中止线程的退出代码 0 F  H2 A7 l- C. _' a  y: k1 ]
GetHandleInformation 获取与一个系统对象句柄有关的信息 8 Q0 O2 \6 H* I: W) O. ]0 v# z$ z
GetMailslotInfo 获取与一个邮路有关的信息
8 w" `/ d$ t5 {1 t6 @- ^1 UGetModuleFileName 获取一个已装载模板的完整路径名称 ) i2 P" F, `% q/ o) w8 j
GetModuleHandle 获取一个应用程序或动态链接库的模块句柄
: k1 @* L5 g% c     GetModuleHandleA(LPCSTR lpModuleName);
& k% P" g% [% ?/ d& IGetPriorityClass 获取特定进程的优先级别 & x! ~+ V. ?+ X, A* Y. P  u
GetProcessShutdownParameters 调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况
& H" b9 @; ?" Y/ |6 J$ B" EGetProcessTimes 获取与一个进程的经过时间有关的信息 ; w4 K* L7 U# z/ h5 w, a# h
GetProcessWorkingSetSize 了解一个应用程序在运行过程中实际向它交付了多大容量的内存
% P6 m0 O0 M# [1 rGetSartupInfo 获取一个进程的启动信息 % F' }3 W: Y1 I2 Z
GetThreadPriority 获取特定线程的优先级别 6 ~, B2 {8 ?# Z
GetTheardTimes 获取与一个线程的经过时间有关的信息
% K3 P1 G: Y$ Z7 d# R- {GetWindowThreadProcessId 获取与指定窗口关联在一起的一个进程和线程标识符 5 H% ^9 F9 J, y6 \  _/ U5 _2 ?
LoadLibrary 载入指定的动态链接库,并将它映射到当前进程使用的地址空间 # i; k# |. r& |9 ]) r) \1 Q) {* j
LoadLibraryEx 装载指定的动态链接库,并为当前进程把它映射到地址空间 * f8 g& {4 w4 ^% h
LoadModule 载入一个Windows应用程序,并在指定的环境中运行
# ]; w2 S% c$ e) E5 w- U+ @MsgWaitForMultipleObjects 等侯单个对象或一系列对象发出信号。如返回条件已经满足,则立即返回
1 y9 L. l: i6 \' P: V0 r" R; `SetPriorityClass 设置一个进程的优先级别
. k3 |3 x) [) m( K" nSetProcessShutdownParameters 在系统关闭期间,为指定进程设置他相对于其它程序的关闭顺序 : g8 ^  H. O9 i/ Z
SetProcessWorkingSetSize 设置操作系统实际划分给进程使用的内存容量 ( X9 T& {; V! Q8 A: Q- }) t) G( y
SetThreadPriority 设定线程的优先级别
% K4 ~7 a* \8 Q; C* K5 {8 Y3 IShellExecute 查找与指定文件关联在一起的程序的文件名 9 c5 V. g* B* O2 m& F# v6 E
TerminateProcess 结束一个进程 3 j) \# o5 N# ?. V2 @
WinExec 运行指定的程序 ) n' a+ a+ @" L* v, [
12. API之控件与消息函数
5 f  r0 T3 u9 U. oAdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小
9 ~, P& t) m! D8 d9 q; hAnyPopup 判断屏幕上是否存在任何弹出式窗口
, p7 h9 `2 m3 `7 H: _0 u( cArrangeIconicWindows 排列一个父窗口的最小化子窗口 ; f, S8 i3 Y0 k( ~1 A: ^
AttachThreadInput 连接线程输入函数 , d. b- y8 f3 [
BeginDeferWindowPos 启动构建一系列新窗口位置的过程 8 O' X! R  \( B9 G3 j: x$ [
BringWindowToTop 将指定的窗口带至窗口列表顶部
. j+ o6 t6 a3 X4 `/ ~CascadeWindows 以层叠方式排列窗口 0 n; O. o( m9 \5 r
ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄
( e" }$ M8 A: G0 T5 {0 f* \ClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标 ; ^5 c( k( o8 L8 m/ }0 T# T( J
CloseWindow 最小化指定的窗口
" [  x8 m; Y5 {7 d4 HCopyRect 矩形内容复制 % W8 `% C6 s; q- P8 o& R4 x
DeferWindowPos 该函数为特定的窗口指定一个新窗口位置 ; `4 B7 E5 b* D/ a# M
DestroyWindow 清除指定的窗口以及它的所有子窗口 $ q% T) x( I& }" [1 P7 k
DrawAnimatedRects 描绘一系列动态矩形
( ]( A1 T: p  P: N' E' s$ e  A% R6 ?7 KEnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入 & J) `* y$ \, q2 \
EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态 2 R/ k" m) e! K
EnumChildWindows 为指定的父窗口枚举子窗口
6 S* ~& l8 h# b- ?5 dEnumThreadWindows 枚举与指定任务相关的窗口
3 X! i  j0 F! }% i, T) x; \EnumWindows 枚举窗口列表中的所有父窗口 ; N8 A8 Z  W! S$ q  W" g. ^
EqualRect 判断两个矩形结构是否相同
, g/ W% F! o% P) e& C; RFindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口 8 d* k4 _* V' B2 c" d" X
FindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口 ( E3 Y# I% j' ]! l- J! l
FlashWindow 闪烁显示指定窗口 ' e# s- d$ Q7 }3 W- Y
GetActiveWindow 获得活动窗口的句柄 3 t" w) x% V; u, B
GetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收)
% o& q+ |8 H; p( U+ [GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息 + s& W, m- Y" N- x! W
GetClassLong 取得窗口类的一个Long变量条目 8 J7 M5 i, h  i, \# J7 E- s% Q7 R
GetClassName 为指定的窗口取得类名
5 s8 j9 d; N9 t3 u6 u- _" rGetClassWord 为窗口类取得一个整数变量
8 O/ I, i" O  s8 s% gGetClientRect 返回指定窗口客户区矩形的大小
$ @, g# K& E& Q4 ?  \( d3 fGetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄 3 R; I" e7 e% }' O
GetFocus 获得拥有输入焦点的窗口的句柄 6 [3 O1 }0 ~/ h1 u! w; Q
GetForegroundWindow 获得前台窗口的句柄
/ q  G+ \2 g) c" L3 EGetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄 ( k! @; l$ p5 I; W& D- k  f
GetParent 判断指定窗口的父窗口 , {* w, i0 f) a- m+ u( Y, Q
GetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄
, C/ }$ R: S% Y( d7 C" q( C! vGetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分
8 J7 m$ p- h8 z; o* I4 L7 a0 FGetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系
% t/ t" A4 ]8 q4 o+ a$ G% TGetWindowContextHelpId 取得与窗口关联在一起的帮助场景ID
. L9 _& v2 F) p7 _GetWindowLong 从指定窗口的结构中取得信息
7 k# `$ J4 y! W9 p0 c( F8 L7 h5 }GetWindowPlacement 获得指定窗口的状态及位置信息
. T( p7 l2 p1 y# M' P/ \! a+ GGetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内 * i) l4 C7 h( k# m7 ^& [5 p4 S
GetWindowText 取得一个窗体的标题(caption)文字,或者一个控件的内容
$ Q5 `* {/ Y, \0 v+ ^GetWindowTextLength 调查窗口标题文字或控件内容的长短
* _- |1 X' \8 z& wGetWindowWord 获得指定窗口结构的信息
7 c% R+ z2 S; m  f8 n0 ]InflateRect 增大或减小一个矩形的大小   E  l, U6 C+ R: b
IntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集
0 m; e& B6 s% M) Z0 Z# E  U+ y/ uInvalidateRect 屏蔽一个窗口客户区的全部或部分区域
2 r& O( H3 g* ^9 YIsChild 判断一个窗口是否为另一窗口的子或隶属窗口 + _4 E! ]$ N" G$ H6 ?
IsIconic 判断窗口是否已最小化 2 \; |- V& m# E0 t/ r" F
IsRectEmpty 判断一个矩形是否为空
( D/ K$ ^: ^* uIsWindow 判断一个窗口句柄是否有效
0 ?- c) V) D. l" k2 b; X4 yIsWindowEnabled 判断窗口是否处于活动状态   x% \: [" @8 j2 a* t
IsWindowUnicode 判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字
0 @$ W) B5 N0 }0 ~" B+ ?IsWindowVisible 判断窗口是否可见
8 z$ D- n' t0 SIsZoomed 判断窗口是否最大化
7 a- D: O! V# cLockWindowUpdate 锁定指定窗口,禁止它更新 , E4 v( O" |. N  P2 _. g
MapWindowPoints 将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统 - {& v& I1 h; ?5 z
MoveWindow 改变指定窗口的位置和大小 / A; _% i9 s. Z* n+ K! j9 T
OffsetRect 通过应用一个指定的偏移,从而让矩形移动起来
! b/ k. J9 J$ U: v2 N# qOpenIcon 恢复一个最小化的程序,并将其激活 6 q! m1 j  _! x& X* y* I0 b: [6 M
PtInRect 判断指定的点是否位于矩形内部   o! c6 A! f2 |' V; R9 C4 Q
RedrawWindow 重画全部或部分窗口 / K( ^" `6 K* C1 r3 H) {7 }- S
ReleaseCapture 为当前的应用程序释放鼠标捕获
; L' }; o7 n% ^) f4 cScreenToClient 判断屏幕上一个指定点的客户区坐标
% \; r4 q9 _0 I' |7 p: g& iScrollWindow 滚动窗口客户区的全部或一部分
! g3 b- o& C1 j* ~ScrollWindowEx 根据附加的选项,滚动窗口客户区的全部或部分 , ]& b* u, O+ j6 g& ~
SetActiveWindow 激活指定的窗口 7 Z7 I1 ^2 A, D' D2 b, i
SetCapture 将鼠标捕获设置到指定的窗口 & x' ]- X( H( w% \5 B3 Z% ?5 q# C
SetClassLong 为窗口类设置一个Long变量条目
" `' ]: V9 M: mSetClassWord 为窗口类设置一个条目 - q! k8 X& D7 h
SetFocusAPI 将输入焦点设到指定的窗口。如有必要,会激活窗口
. w8 m& u8 L4 D* XSetForegroundWindow 将窗口设为系统的前台窗口
- g( z) C) l( Z0 u6 Y& m' B3 n; NSetParent 指定一个窗口的新父
% _. q& o5 O5 ]! ESetRect 设置指定矩形的内容 : ]) @+ \- k5 W  V
SetRectEmpty 将矩形设为一个空矩形
) j* ~: N/ l, E2 [4 W5 {. wSetWindowContextHelpId 为指定的窗口设置帮助场景(上下文)ID
% \$ T, b! m0 h6 hSetWindowLong 在窗口结构中为指定的窗口设置信息
% \! l, t# _: Y* I: G' X; n: uSetWindowPlacement 设置窗口状态和位置信息 7 {' H' O1 m2 w! B9 Y2 `8 @
SetWindowPos 为窗口指定一个新位置和状态 , d! _! O4 U( [$ m3 W& `
SetWindowText 设置窗口的标题文字或控件的内容 * G; K2 d: V# n$ z0 {& G6 n
SetWindowWord 在窗口结构中为指定的窗口设置信息
! k( P, Z' u* g0 S" x% _: d6 VShowOwnedPopups 显示或隐藏由指定窗口所有的全部弹出式窗口 8 d% U8 A4 q! G4 t( w; {0 N! G& Z0 h
ShowWindow 控制窗口的可见性 . d, n0 C7 D6 r, u$ o& s- E9 ?# f
ShowWindowAsync 与ShowWindow相似 % k' G& @+ {/ C
SubtractRect 装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果
7 X! I8 f7 L7 A, oTileWindows 以平铺顺序排列窗口
% ~% I9 b- w  R: @  P" j/ SUnionRect 装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect联合起来的结果
) Q4 X+ ~' b; H  TUpdateWindow 强制立即更新窗口   L- i2 \. x/ j* u, s- I% z+ c9 n5 z
ValidateRect 校验窗口的全部或部分客户区
1 S$ u) u$ O8 W! oWindowFromPoint 返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口7 b: ~" B# v7 s% `
高级音频函数—参看《VC++ 编程指南.chm》11.62 L, ~- h% h+ N8 x6 t
     Windows提供了三个特殊的播放声音的高级音频函数:MessageBeep、PlaySound和sndPlaySound。这三个函数可以满足播放波形声音的一般需要,但它们播放的WAVE文件(波形声音文件)的大小不能超过100KB,如果要播放较大的WAVE文件,则应该使用MCI服务。% L  N5 ~0 J2 o# O
     BOOL MessageBeep(UINT uType);
2 o% \! O) O9 w0 a- ~该函数主要用来播放系统报警声音。系统报警声音是由用户在控制面板中的声音(Sounds)程序中定义的,或者在WIN.INI的[sounds]段中指定。
  i* O. }/ N/ L+ {" X参数uType说明了告警级,如下表所示。若成功则函数返回TRUE。
' p: f5 ~2 x% D/ L! E
级别
# @" i% Y9 d3 e# W- Z
描述
, r' K& r' y/ z, A$ w
-1 + e% ]! ^" C% g& O3 l+ |2 b5 P
从机器的扬声器中发出蜂鸣声。 9 E0 W: K( i9 r) ?/ W
MB_ICONASTERISK
/ E5 ]1 E" b& `1 h4 g0 p
播放由SystemAsterisk定义的声音。
8 |, `! A. O( K- |2 l
MB_ICONEXCLAMATION
$ q' ?: F  Y, \6 Y2 s
播放由SystemExclamation定义的声音。 9 e9 l( ~, t( ~  y
MB_ICONHAND
# S& N* i- r, S; J9 M' t  R
播放由SystemHand定义的声音。
7 Q( U" q, |" S
MB_ICONQUESTION
$ p' A' L/ u0 m* r4 k; u* ~
播放由SystemQuestion定义的声音。 : k- o# ]6 t0 V
MB_OK 1 O2 w! B& j8 S6 Z) z. e
播放由SystemDefault定义的声音 ) x! e7 Z5 j0 t& ]6 \/ ~# k# p+ h/ q/ M
BOOL PlaySound(LPCSTR pszSound,     HMODULE hmod,      DWORD fdwSound);
8 R" n9 T4 |" Y3 b参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。
. J9 e+ C8 l3 }( e参数hmod是应用程序的实例句柄,当播放WAV资源时要用到该参数,否则它必须为NULL。' \, e* F1 W9 j/ B# h
参数fdwSound是标志的组合,如下表所示。若成功则函数返回TRUE,否则返回FALSE。; `+ U6 O/ Z0 b7 x6 g
标志 * c' n  P: z2 P: b
含义 3 L- i" W+ a8 B7 a) t8 R3 i9 Z
SND_APPLICATION % d# H7 s% X2 B' n; T. K2 h. Y
用应用程序指定的关联来播放声音。 ) {4 F" n/ a$ }4 [" x1 A* E7 Q
SND_ALIAS # j  c* t/ K) d/ j
pszSound参数指定了注册表或WIN.INI中的系统事件的别名。 " F0 j2 F5 Z1 s7 Q
SND_ALIAS_ID
) h" H* h% i5 H) a- d' P9 Z& t9 f
pszSound参数指定了预定义的声音标识符。 - r5 J% h8 \3 F' O: v
SND_ASYNC
: G; C7 u9 {# V' o
用异步方式播放声音,PlaySound函数在开始播放后立即返回。
/ V2 Z7 G1 b9 m6 x+ k, |! m, L
SND_FILENAME   r! A8 p/ n+ J3 i- ?2 M' |+ N
pszSound参数指定了WAVE文件名。 + H, ~' r  `( w  Y& N6 Z% @
SND_LOOP
% W8 ^" a( B" U! Y) J/ i3 r  [" P3 K
重复播放声音,必须与SND_ASYNC标志一块使用。
7 Y% r) q0 w6 J* Y& V7 w2 |1 F
SND_MEMORY / _& }* ^. z& m1 G( v" D" q, N( z2 R
播放载入到内存中的声音,此时pszSound是指向声音数据的指针。 7 c0 _) c8 X$ ^  j" S
SND_NODEFAULT
2 ?- I3 r7 ?( G' ]
不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。 7 g7 I. E$ A: e, S* ~
SND_NOSTOP 6 Q8 Y" p" t' N% }  X
PlaySound不打断原来的声音播出并立即返回FALSE。
* P. {3 ^! T5 U. z0 C' R  v. E+ X% W
SND_NOWAIT
( K5 i  m$ @! k4 @( I
如果驱动程序正忙则函数就不播放声音并立即返回。 1 o  @& `' v- z4 ^
SND_PURGE
# T5 K2 {: V+ c- b0 L9 t- F- Y
停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。 5 u9 @7 j6 y5 u7 }* B: p
SND_RESOURCE & m* F& j. Q7 k% M, T
pszSound参数是WAVE资源的标识符,这时要用到hmod参数。 0 V* }, ]; Q, W% N" H
SND_SYNC
2 W' |3 v% U$ R. \7 d2 ]0 r1 r- _
同步播放声音,在播放完后PlaySound函数才返回。 : `1 p4 M% l8 s2 e  ?3 c
BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound);% u9 b: a6 k! i
函数sndPlaySound的功能与PlaySound类似,但少了一个参数。除了不能指定资源名字外,参数lpszSound与PlaySound的是一样的。
0 H5 H: l! k% {9 q$ Z; R9 m/ x& KMCI播放) H" q/ b5 Y6 ?5 z) g7 n- S
所有的MCI命令字符串都是通过多媒体API函数mciSendString传递给MCI的,该函数的声明为:4 R+ A; r3 _; e# T( i/ z* {
MCIERROR mciSendString(
( x: G2 _/ w/ h/ ILPCTSTR lpszCommand, //MCI命令字符串& c: w2 G4 p3 r& n6 {
LPTSTR lpszReturnString, //存放反馈信息的缓冲区* @4 g5 J/ V& @- g8 L( b  Z5 y
UINT cchReturn, //缓冲区的长度4 X0 L# o  C1 I. f8 x8 r8 f/ R
HANDLE hwndCallback //回调窗口的句柄,一般为NULL+ {5 [5 @0 {- X# Z' U. e
); //若成功则返回0,否则返回错误码。, U. Y! n% h" b4 y8 J9 O6 g
该函数返回的错误码可以用mciGetErrorString函数进行分析,该函数的声明为:% D9 i- y( x& ~) z" D
BOOL mciGetErrorString(
- b, W; Z- [/ JDWORD fdwError, //函数mciSendString或mciSendCommand返回的错误码
: F$ [4 T* Q' ]& L1 ?: n: KLPTSTR lpszErrorText, //接收描述错误的字符串的缓冲区
7 Z& v6 C0 O! b$ g# j$ B8 ]UINT cchErrorText //缓冲区的长度- @  E8 H& F' x1 @8 Z! R
);
# ~( Z  S+ L, K, I( S
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2025-11-14 23:43 , Processed in 0.022711 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表