首页 / 软件开发 / Delphi / DELPHI中利用API函数实现多态FORM
DELPHI中利用API函数实现多态FORM2010-11-27陈学军实现异型FORM并不是一件难事,本文将向您介绍如何利用API函数实现圆角矩 形和椭圆形FORM,并在此基础之上探讨实现TWINcontrol类的后裔的异型的实现 。欲改变FORM的形状,也就是实现对区域(region)的控制。在Win32 API程序 参考手册有关区域(region)的定义是这样描述的:它可以是一个矩形,多边形 ,椭圆形(或者是两者的复合,或者是更多的形状),这些都可以被填充,画图 ,翻转,结构化并可以得到焦点执行。由定义得出结论:区域(region)是可以被改变和操纵的,依据我们的需求 可定义区域并制作出我们所要求的形状。应当指出的是区域(region)也能对任何TWINcontrol类的后裔定义和控制( 不仅仅是FORMS),就是说,可以将区域(region)的定义运用到向Tpanel或 TEdit这样的对象。在改变TWINcontrol类的后裔控件的形状时,需要提供一句柄 并创建一些改变形状的函数。具体实现方式一般分为两步:1.定义所需形状的区域边界形状(比如:椭圆形)。2.将已定义的区域边界形状运用到窗口。这里,我们将通过调用Windows API函数完成以上两个步骤,下面就具体函数 的应用予以说明:实现第一步:定义区域边界。在这里将调用三个WinAPI,这三个函数是:CreateEllipticRgn()功能是生成椭圆形区域;CreateRoundRectRgn()功能是生成圆角矩形区域;CreatePolygonRgn()功能是生成多边形区域,Windows要确保使其顶点自动 相连形成一封闭的区域。这三个函数通过返回的指针变量标识所生成的区域将被第二步所应用。这些 函数在Delphi中的函数声明及参数含义说明如下:(1)椭圆形区域生成函数:函数原形:HRGN CreateEllipticRgn(int nLeftRect,int nTopRect,int nRightRect,int nBottomRect);参数含义:nLeftRect,nTopRect:区域的左上角坐标;nRightRect, nBottomRect:区域的右下角坐标;