API技巧集(二)

网友投稿 122 2024-01-24

(一)不规则窗口 Windows提供的只是标准的矩形窗口,要想建立一个不规则的窗口就需要调用API函数来实现建立一个不规则的窗口,一般是先用创建区域的API函数建立一个不规则的区域,再用API函数SetWindowRgn改变窗口的区域。

这些API函数在C++ Builder中包含在头文件wingdi.h和winuser.h里面,因此,要使用这些API函数就要先在程序头部加上包含头文件的语句: include $#@60;wingdi.h$#@62;

include $#@60;winuser.h$#@62; SetWindowRgn函数能改变一个窗口的区域,该函数有三个参数,第一个参数hWnd是欲设置区域的窗口句柄,第二个参数hRgn是欲设置的区域,第三个参数bRedraw一般设为true,即立即重画窗口。

用来创建区域的API函数有多个,最常用的有三个: 1、CreateRectRgn函数,用来创建一个由X1、Y1和X2、Y2坐标点确定的矩形区域当坐标点X1和Y1相等、X2和Y2也相等的时候,创建的是一个正方形。

例子: //创建长方形 HRGN hRect=CreateRectRgn(0,0,400,200); SetWindowRgn(Handle,hRect,true); //创建正方形 HRGN hRect=CreateRectRgn(0,0,300,300);

SetWindowRgn(Handle,hRect,true); 2、CreateEllipticRgn函数,用来创建一个由X1、Y1和X2、Y2坐标点确定的矩形所内切的椭圆同样,X1、Y1和X2、Y2坐标点所确定的矩形为正方形时,创建的就是一个圆形。

例子: //创建椭圆 HRGN hElliptic=CreateEllipticRgn(0,0,400,250); SetWindowRgn(Handle,hElliptic,true); //创建圆形

HRGN hElliptic=CreateEllipticRgn(0,0,400,400); SetWindowRgn(Handle,hElliptic,true); 3、CombineRgn函数,能将两个区域组合为一个新区域,它有四个参数,第一个参数hrgnDest保存合并后的新区域,第二个参数hrgnSrc1、三个参数hrgnSrc2为欲合并的两个区域,第四个参数fnCombineMode是区域组合的方式,它的值是为下面组合方式之一:

组合方式 说明 RGN_AND 建立两个区域的交集 RGN_COPY 建立hrgnSrc1的拷贝 RGN_DIFF 建立两个区域不相交的部分 RGN 建立两个区域的并集 RGN_XOR 建立除两个区域并集之外的部分

例子: //创建一个圆形和长方形交集的组合形状 HRGN hRect=CreateRectRgn(0,0,300,300); HRGN hElliptic=CreateEllipticRgn(0,0,400,250);

CombineRgn(hRect,hRect,hElliptic,RGN_OR); SetWindowRgn(Handle,hRect,true); 当需要将窗口还原为标准Windows矩形窗口时,只要将SetWindowRgn函数的hRgn参数设为0就行了,如:

SetWindowRgn(Handle,0,true); (二)得到系统声卡的个数 当我们编写一个多媒体程序(如播放器)的时候,有时需要检测一下计算机中是否安装了声卡,如果没有装声卡程序则会终止运行。

在这里,我们就要使用API函数waveOutGetNumDevs,调用这个函数可返回系统中安装了的声卡的个数在C++ Builder 5.0中,它被包含在头文件“mmsystem.h”里面 例子:。

1、首先在程序头部加入包含头文件的代码: #include $#@60;mmsystem.h$#@62; 2、在窗体的OnCreate事件中加入下面的代码: int Num; //得到声卡的个数

Num=waveOutGetNumDevs(); if(Num) ShowMessage("你有安装了"+IntToStr(Num)+"块声卡"); else { ShowMessage("你没有安装声卡!n程序终止运行!");

Close(); } 审核编辑黄宇

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Akamai 宣布推出用于保护 API 免受业务滥用和数据盗窃的 API Security 产品
下一篇:介绍RAW API接口及应用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~