C++中园形三角形按钮的实现

C++中园形三角形按钮的实现,第1张

C++中园形三角形按钮的实现,第2张

Window 95增加了对窗口区域概念的支持,使窗口区域看起来像定义的窗口,窗口区域充当窗口的实际边界区域。这样,窗口区域不仅定义了窗口的可绘制区域,还定义了窗口下的隐藏区域和响应鼠标按键的窗口区域。

-按钮的形状在运行时设置,而不是在设计时设置。设计的时候,按钮的形状还是长方形或者正方形。

-按钮形状的设计分为两步。

-第一步是创建按钮的形状,即定义窗口区域。使用API的区域创建功能来实现目标。区域创建函数有很多,包括CreateEllipticRgn、CreatePolygonRgn、CreateRectRgn和CreateRoundRectRgn,用于创建不同类型的区域显示。如果需要复杂的区域形状,可以使用不同的区域函数来创建不同的区域,然后调用CombineRgn API函数来组合它们。因此,我们不仅可以创建圆形和三角形按钮,还可以创建其他形状的按钮。

-第二步是将区域显示应用于窗口。一旦使用area函数创建了新的区域显示,就可以使用SetWindowsRgn函数将该区域应用于窗口。

-下面给出实现圆形和三角形按钮的具体代码。为了直观地显示效果,将窗体的背景色设置为黑色(Color为clBtnText),并将两个按钮的光标设置为crCross。在窗体中放置两个按钮Button,分别定义为Rbutton和Tbutton。实现窗口区域的时间是第一次创建表单的时候,所以将处理程序放在OnCreate事件中。

void _ _ fast call t form 1::form create(to object * Sender)

{

//创建一个圆形按钮

HRGN HR gnr = createelliplargn(0,0,r button-->

Width,Rbutton-> Height);

SetWindowRgn(Rbutton->Handle,hRgnR,TRUE);

//创建一个三角形按钮

TrPoint[0]。x = t button-> Width/2;

TrPoint[0]。y = 0;

TrPoint[1]。x = 0;

TrPoint[1]。y = t button-> Height;

TrPoint[2]。x = t button-> Width;

TrPoint[2]。y = t button-> Height;

HRGN HR gnt = CreatePolygonRgn(tr point,3,ALTERNATE);

SetWindowRgn(Tbutton->Handle,hRgnT,TRUE);

}

TrPoint在Unit.h的头文件中定义如下:

私有://用户声明

POINT tr POINT[3];

-上面的代码在按钮的边界内创建了一个圆形区域和一个三角形区域,然后将其分配给每个按钮作为一个新的窗口区域。创建圆形按钮时,使用椭圆区域创建功能。为了使按钮呈圆形,按钮在设计上应设计成方形。此外,该区域是以按钮坐标而不是屏幕坐标的形式定义的。(0,0)点是按钮的左上角,而(宽,高)点是按钮的右下角。

-需要注意的是,一旦你给按钮分配了区域句柄,你就不能对区域句柄做任何事情了。如果区域句柄被分配给按钮,修改或删除该句柄将导致程序崩溃。

-光标仅在圆形和三角形区域变为十字形状。为了让按钮美观,可以使用BitBtn或者SpeedButton,在按钮上附加一个位图。API区域函数的使用见Win32SDK.hlp帮助文件。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++中园形三角形按钮的实现

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情