0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

API技巧集(二)

OBEason 来源: jf_88563726 作者: jf_88563726 2023-05-22 16:49 次阅读

(一)不规则窗口

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
    API
    +关注

    关注

    2

    文章

    1525

    浏览量

    62552
  • 函数
    +关注

    关注

    3

    文章

    4350

    浏览量

    63131
收藏 人收藏

    相关推荐

    api技巧(四)

    链接则会弹出浏览器窗口打开指定的URL或是运行默认的E-Mail程序撰写新邮件,就和真的超链接一样。你是不是也想在你的程序里做一个呢?其实,我们只要调用API函数ShellExecute和在鼠标移动时改变一下文字的颜色,就可以在自己的程序中出现这种效果
    的头像 发表于 05-23 11:11 570次阅读

    鸿蒙元服务API全新呈现-开发更清晰高效

    鸿蒙元服务API全新呈现,开发更清晰高效,具体见如下截图,深黑色部分即本阶段公布支持的元服务API。 本材料整理来源于HarmonyOS NEXT Developer Beta1官
    发表于 07-11 10:23

    基于onepanel使用kaggle api提交结果和下载数据的步骤

    在onepanel上使用kaggle api提交结果和下载数据
    发表于 04-22 11:00

    高阶API构建模型和数据使用

    了TensorFlow2.0Beta版本,同pytorch一样支持动态执行(TensorFlow2.0默认eager模式,无需启动会话执行计算图),同时删除了杂乱低阶API,使用高阶API简单地构建复杂神经网络模型,本文主要分享用高阶A
    发表于 11-04 07:49

    HarmonyOS/OpenHarmony应用开发-HUAWEI DevEco Studio 3.1API9成SDK

    /module.json5”中添加网络权限。*附件:HarmonyOSOpenHarmony应用开发-HUAWEI DevEco Studio 3.1API9成SDK.docx
    发表于 03-27 10:06

    vc++ api函数 (Windows API大全)

    Windows API大全,本书主要介绍VC++里API函数及其用法-WindowsAPI Daquan, the book introduces VC Lane API function
    发表于 10-14 11:45 32次下载

    JDBCTM 2.0 API

    The JDBCTM API is the JavaTM standard call-level API for database access. This documentcontains the final specification of the JDBC 2.0
    发表于 10-14 17:42 6次下载

    PC键盘第套扫描码

    PC键盘第套扫描码
    发表于 09-22 11:08 5次下载
    PC键盘第<b class='flag-5'>二</b>套扫描码<b class='flag-5'>集</b>

    什么是API,不同场景中的API

    当公司构建他们的应用时,他们把它们设计成一组交互的API。最容易理解的例子是Lyft(或者Uber)。你可能想在Lyft应用中做一些事情,它们在幕后都会触发不同的API
    的头像 发表于 08-10 11:20 2558次阅读

    API+DevOps:华为云API Arts一体化平台,端到端呵护您的API

    API+ | 以API-First理论为基础,以API为核心构建数字化生态 摘要:华为云API Arts是API全生命周期一体化协作平台,支
    的头像 发表于 02-17 19:05 1193次阅读

    API+DevOps:华为云API Arts一体化平台,端到端呵护您的API

    华为云API Arts是API全生命周期一体化协作平台,支持开发者一站式高效实现API设计、API开发、API测试、
    的头像 发表于 03-01 15:45 860次阅读
    <b class='flag-5'>API</b>+DevOps:华为云<b class='flag-5'>API</b> Arts一体化平台,端到端呵护您的<b class='flag-5'>API</b>

    API Arts 全探秘 | 华为云新一代设计管理平台,功能强大!

    API设计不一致?API没地方归档?云服务开发项目合作低效?...... ? 华为云为广大开发者带来最新API设计管理平台:API Arts。它
    的头像 发表于 03-10 18:40 539次阅读

    API技巧(三)

    (一)闪烁程序的标题栏 在某些专业的应用程序中,当程序需要提醒用户或要引起用户的注意时,就不停地闪烁程序的标题栏。要实现这个功能,只需要一个Timer组件和使用一个API函数
    的头像 发表于 05-23 11:10 518次阅读

    api接口怎么使用

    的一组例程,而又无需访问源码,或理解内部工作机制的细节。 、为什么要懂API文档 既然API如此复杂,又不属于PM的工作范畴,我们为何需要大费周章的理解它呢,我们的目的是什么。 1. 明确需要的接口服务
    的头像 发表于 05-24 14:44 1535次阅读

    API Arts 全探秘 | 华为云新一代设计管理平台,功能强大!

    API 设计不一致?API 没地方归档?云服务开发项目合作低效?...... ? 华为云为广大开发者带来最新 API 设计管理平台:API Arts。它
    的头像 发表于 09-03 00:36 432次阅读
    <b class='flag-5'>API</b> Arts 全探秘 | 华为云新一代设计管理平台,功能强大!