windows异性窗体.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文档。上传文档
查看更多
windows异性窗体

windows异性窗体 windows异性窗体.txt31岩石下的小草教我们坚强,峭壁上的野百合教我们执著,山顶上的松树教我们拼搏风雨,严寒中的腊梅教我们笑迎冰雪。windows异性窗体   WINDOWS图形界面应用程序都是基于窗口的。在Windows操作系统中,窗口是应用程序与用户之间的界 面。微软对窗口的定义是:窗口是屏幕上的一块方形部分,用来显示输出和接受用户的输入。编写基于 Windows 的GUI程序首先要做的事情之一便是创建一个或多个窗口。我们通常使用CreateWindow和 CreateWindowEx这两个API函数创建窗口,此外通过DialogBox,CreateDialog和MessageBox等函数还可以 创建特殊用途的窗口(如对话框、消息框等)。   不管是以上哪个函数,都将无一例外的得到矩形窗口。但是,有时为了实现特殊效果,有时希望使用不 规则形状的窗口。而本文就将探讨怎样实现这些异形窗口,如圆形、椭圆形、星形等窗口。   为了实现不规则形状的窗口,需要用到“区域”(Region)这一概念。在微软Windows操作系统中,区域 是指能对其进行填充、绘制、加边框、颜色翻转等操作的长方形、(椭)圆形、多边形,或者这些形状的叠 加。   区域的创建   通过以下API函数,我们可以创建区域,它们是:CreateRectRgn(长方形),CreateRoundRectRgn (圆角长方形),CreateEllipticRgn(圆形和椭圆形),以及CreatePolygonRgn和 CreatePolyPolygonRgn。如果调用成功的话,它们都会返回一个指向新建区域的句柄。下面先简单地介绍 CreatePolygonRgn和CreateEllipticRgn的用法:   HRGN CreatePolygonRgn( //创建多边形区域    CONST POINT *lppt, //指向一个POINT类型的数组    int cPoints, //数组中元数的个数    int fnPolyFillMode //多边形填充模式    );   HRGN CreateEllipticRgn( //创建圆形或者椭圆形区域   int nLeftRect, //(椭)圆外切长方形左上角的X坐标   int nTopRect, //(椭)圆外切长方形左上角的Y坐标    int nRightRect, //(椭)圆外切长方形右下角的X坐标    int nBottomRect //(椭)圆外切长方形右下角的Y坐标    );   区域的一个非常重要的性质是:任意两个区域可以进行合成操作,进而生成一个新的区域。   区域的合成   利用已有的区域可以合成新的区域,这便是函数CombineRgn的作用。该函数的C语言原型声明如下:   int CombineRgn(    HRGN hrgnDest, // 指向目的区域    HRGN hrgnSrc1, // 指向源区域    HRGN hrgnSrc2, // 指向源区域    int fnCombineMode // 区域结合模式    );   在上述函数中,第二、三个参数为源区域;第一个参数hrgnDest指向的是目的区域,这块区域将用来盛 放由hrgnSrc1和hrgnSrc2合成的新区域,所以必须保证hrgnDest所指向的区域在调用函数CombineRgn之前 已经存在。   第四个参数,即fnCombineMode,指明了合成方式,它的取值及含义如表1所示:   表1   合成方式  含 义   RNG_AND 新区域为两块源区域的相交部分。   RNG_COPY 新区域为第一块源区域的拷贝。   RNG_DIFF 新区域为第一块源区域减去与第二块源区域共有的部分。   RNG_OR 新区域为两块源区域的并集。   RNG_XOR 新区域为两块源区域的非公共部分的并集。   区域的使用   创建或者合成了一定形状的区域之后,并不能看到任何东西。区域要与具体的窗口结合才能起作用。把 区域同窗口挂起钩来,要用到名为SetWindowRgn的API函数。它的原型如下:   int SetWindowRgn(    HWND hWnd, // 指向窗口区域已被设定好的窗口    HRGN hRgn, // 指向区域    BOOL bRedraw // 窗口重画标志    );   当成功地调用了此函数后,操作系统将拥有hRgn所指定的那块区域。区域的坐标是相对于窗口的左上角 (包括标题区在内)。窗口中只有在区域内的那部分是可见的,对位于区域之外的窗口部分,系统将不予显 示

文档评论(0)

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

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档