WindowsAPI技巧集.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WindowsAPI技巧集

一)不规则窗口 ( p Q: e3 ^9 n3 n E4 k4 ^) e4 q; c: F. q   Windows提供的只是标准的矩形窗口,要想建立一个不规则的窗口就需要调用API函数来实现。建立一个不规则的窗口,一般是先用创建区域的API函数建立一个不规则的区域,再用API函数SetWindowRgn改变窗口的区域。这些API函数在C++Builder中包含在头文件wingdi.h和winuser.h里面,因此,要使用这些API函数就要先在程序头部加上包含头文件的语句:- s1 A+ r/ B% ]- Y- W0 D3 W7 X0 Q 0 b, o5 {$ q* W5 s: G??[0 `; i0 `* _ include wingdi.h l+ }5 ?( q4 j/ Y9 t??] I% ^3 a( d8 t: m4 i include winuser.h% H* V( k: X7 a; Y @ 0 Z- j! R8 \3 }( w d   SetWindowRgn函数能改变一个窗口的区域,该函数有三个参数,第一个参数hWnd是欲设置区域的窗口句柄,第二个参数hRgn是欲设置的区域,第三个参数bRedraw一般设为true,即立即重画窗口。 6 t5 |4 T2 B8 @) c+ S ) A0 V; G a2 M2 L0 X  用来创建区域的API函数有多个,最常用的有三个:: w v+ H* x T* S9 S! N ; G2 a0 I1 m% j6 B, V, P) {  1、CreateRectRgn函数,用来创建一个由X1、Y1和X2、Y2坐标点确定的矩形区域。当坐标点X1和Y1相等、X2和Y2也相等的时候,创建的是一个正方形。: @4 _, w* I y( W 5 z, h4 e$ N1 g: ~! [7 Y6 T  例子: / y+ c* a9 _6 a/ ~2 e # }$ @) H/ q/ w7 `: G) z//创建长方形 6 i: ?% P( V. ]. O??^+ y 7 A+ W$ |$ r: f/ }HRGN hRect=CreateRectRgn(0,0,400,200); E8 P7 ]7 g# z. u2 \ L- _3 C0 F SetWindowRgn(Handle,hRect,true);0 @ L0 M7 C$ r % f% ~1 A/ z: I! g8 G??T* ^??F//创建正方形 c3 ^ r# g5 L | K2 k$ S??{- E1 K7 O/ b- m8 ` HRGN hRect=CreateRectRgn(0,0,300,300); ( x7 W3 ?4 M! o h- P8 Y : Y# {??{4 h9 Z8 W2 c, U ~6 A2 RSetWindowRgn(Handle,hRect,true); 1 p. {( n1 B; V# e _5 h |7 K2 s8 p ^5 l5 O   2、CreateEllipticRgn函数,用来创建一个由X1、Y1和X2、Y2坐标点确定的矩形所内切的椭圆。同样,X1、Y1和X2、Y2坐标点所确定的矩形为正方形时,创建的就是一个圆形。$ B2 B }, m+ k7 p0 @- ` # Y8 T% D2 I h f2 ?; A  例子: ; T ? p7 f6 X$ \5 J: I , f2 Q {??N2 R+ V7 v P ]//创建椭圆+ T5 W# \. x D! Z) N8 | w N??R7 R( v8 p3 E3 z( VHRGN hElliptic=CreateEllipticRgn(0,0,400,250); # t# W7 m [ b2 A/ l ! \2 w; T7 U+ R t. w2 DSetWindowRgn(Handle,hElliptic,true);4 {, f) w4 P g+ Y) g9 Q6 t % D# \ z6 v4 J% e4 X. T2 D0 X0 y+ a//创建圆形 , n/ L2 C0 U; @ _: z, y3 H+ oHRGN hElliptic=CreateEllipticRgn(0,0,400,400);8 {- A. q; V6 T, b- T3 Z 4 R, C2 {- ~# I; N% o6 k8 W SetWindowRgn(Handle,hElliptic,true); 5 z) P8 ~4 K8 s??|1 c* W# ?- ^ 4 X1 y1 h( i. D* a1 |/ R6 y9 b  3、CombineRgn函数,能将两个区域组合为一个新区域,它有四个参数,第一个参数hrgnDest保存合并后的新区域,第二个参

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档