首页 > 其他分享 >API技巧集(二)

API技巧集(二)

时间:2023-05-22 15:11:48浏览次数:41  
标签:API 函数 区域 hRect 声卡 SetWindowRgn 技巧

(一)不规则窗口

  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();

}

标签:API,函数,区域,hRect,声卡,SetWindowRgn,技巧
From: https://www.cnblogs.com/Eason1/p/17420676.html

相关文章

  • < Python全景系列-3 > Python控制流程盘点及高级用法、神秘技巧大揭秘!
    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。这是系列第三篇,在这篇文章中我们将全面深入地......
  • 人像摄影的美姿和构图技巧
    2007年07月31日星期二下午09:242007年07月09日星期一17:351:“美姿”应该注意技巧(一)对于相貌较难看者,应当尽量避免拍摄特写和近照。(二)对于脸型较胖者,可以适当采用头纱手或者其他小饰物来遮挡,同时也可以提高相机机位。(三)大小眼睛的拍摄,应该调整被......
  • shopee的前景以及商用API(代码封装)
    Shopee平台是东南亚和台湾地区最具代表性的电商平台之一,在过去几年里取得了巨大的成功。以下是Shopee平台的发展前景:电商市场的快速增长:东南亚和台湾地区是人口众多、市场潜力巨大的区域,电商市场的增长速度在近年来已经非常快。越来越多的人开始在网上购物,并且消费者也开始更......
  • ABAP DEBUG技巧(持续更新)
    1.根据消息号查找WatchPoint  2.updatetast需要打开调试器的更新模式断点有时候打开也进不去需要watchpoint强制打进去函数或者程序的断点 执行程序前/H 打一个函数断点再执行update的函数 ......
  • 小技巧:WIndows快速创建文件夹
    快速创建文件夹的技巧1.首先创建文本文档将扩展名更改为.bt,mkdir.bat2.写入创建文件夹的代码md文件夹1文件夹2文件夹3pause3.双击执行mkdir.bat......
  • APIO2023 线下又寄
    前情提要:因为\(\text{CSP-S}\)没挂分所以是线下\(\text{Day0}\)下午三点多到的,从高铁站到华山饭店路上跟一中、学军的一路,本来华二和我们差不多一起到的,但不知道为啥他们先走了,不过在车上都不敢跟\(\text{qiuly}\)他们讲话,实在太社恐了/ll然后就是报道,报完道,开幕式也没啥......
  • APIO2023游记
    没报名APIO。Day\(1\)是5.20。Day\(-2\)今天上午怎么有模拟赛。大为震撼。不过徐老师和我们说这场我们可以鸽掉。于是就鸽子了。就看了眼T2,会了。听zak说这是不归之人与望眼欲穿的人们。应徐教练要求,上午我讲课,大概讲了一下【数据删除】,还拿了松松松的【数据删除】做......
  • Selenium 007 API
    SeleniumAPIfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECdriver=webdriver.Chrome()driver.maximize_w......
  • Qt开发经验小技巧266-270
    从Qt6.4版本开始多媒体模块提供了ffmpeg作为后端解码使用(6.5版本默认就是ffmpeg),可以通过设置环境变量来更改使用哪种后端解码,在main函数的第一行qputenv("QT_MEDIA_BACKEND","ffmpeg");目前已知的问题是如果选用ffmpeg则暂时不支持中文目录以及中文名称,如果一定要支持中文则需......
  • 利用 Django REST framework 编写 RESTful API
        自动生成符合RESTful规范的API支持OPTION、HEAD、POST、GET、PATCH、PUT、DELETE根据 Content-Type生成browserable的交互页面(自动为API生成非常友好的浏览器页面)非常细粒度的权限管理(可以细粒度到field级别)示意图安装$pipinstalldjangorestframew......