0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

API技巧集(二)

OBEason ? 來源: jf_88563726 ? 作者: jf_88563726 ? 2023-05-22 16:49 ? 次閱讀

(一)不規(guī)則窗口

Windows提供的只是標(biāo)準(zhǔn)的矩形窗口,要想建立一個(gè)不規(guī)則的窗口就需要調(diào)用API函數(shù)來實(shí)現(xiàn)。建立一個(gè)不規(guī)則的窗口,一般是先用創(chuàng)建區(qū)域的API函數(shù)建立一個(gè)不規(guī)則的區(qū)域,再用API函數(shù)SetWindowRgn改變窗口的區(qū)域。這些API函數(shù)在C++ Builder中包含在頭文件wingdi.h和winuser.h里面,因此,要使用這些API函數(shù)就要先在程序頭部加上包含頭文件的語句:

include $#@60;wingdi.h$#@62;

include $#@60;winuser.h$#@62;

SetWindowRgn函數(shù)能改變一個(gè)窗口的區(qū)域,該函數(shù)有三個(gè)參數(shù),第一個(gè)參數(shù)hWnd是欲設(shè)置區(qū)域的窗口句柄,第二個(gè)參數(shù)hRgn是欲設(shè)置的區(qū)域,第三個(gè)參數(shù)bRedraw一般設(shè)為true,即立即重畫窗口。

用來創(chuàng)建區(qū)域的API函數(shù)有多個(gè),最常用的有三個(gè):

1、CreateRectRgn函數(shù),用來創(chuàng)建一個(gè)由X1、Y1和X2、Y2坐標(biāo)點(diǎn)確定的矩形區(qū)域。當(dāng)坐標(biāo)點(diǎn)X1和Y1相等、X2和Y2也相等的時(shí)候,創(chuàng)建的是一個(gè)正方形。

例子:

//創(chuàng)建長方形

HRGN hRect=CreateRectRgn(0,0,400,200);

SetWindowRgn(Handle,hRect,true);

//創(chuàng)建正方形

HRGN hRect=CreateRectRgn(0,0,300,300);

SetWindowRgn(Handle,hRect,true);

2、CreateEllipticRgn函數(shù),用來創(chuàng)建一個(gè)由X1、Y1和X2、Y2坐標(biāo)點(diǎn)確定的矩形所內(nèi)切的橢圓。同樣,X1、Y1和X2、Y2坐標(biāo)點(diǎn)所確定的矩形為正方形時(shí),創(chuàng)建的就是一個(gè)圓形。

例子:

//創(chuàng)建橢圓

HRGN hElliptic=CreateEllipticRgn(0,0,400,250);

SetWindowRgn(Handle,hElliptic,true);

//創(chuàng)建圓形

HRGN hElliptic=CreateEllipticRgn(0,0,400,400);

SetWindowRgn(Handle,hElliptic,true);

3、CombineRgn函數(shù),能將兩個(gè)區(qū)域組合為一個(gè)新區(qū)域,它有四個(gè)參數(shù),第一個(gè)參數(shù)hrgnDest保存合并后的新區(qū)域,第二個(gè)參數(shù)hrgnSrc1、三個(gè)參數(shù)hrgnSrc2為欲合并的兩個(gè)區(qū)域,第四個(gè)參數(shù)fnCombineMode是區(qū)域組合的方式,它的值是為下面組合方式之一:

組合方式 說明

RGN_AND 建立兩個(gè)區(qū)域的交集

RGN_COPY 建立hrgnSrc1的拷貝

RGN_DIFF 建立兩個(gè)區(qū)域不相交的部分

RGN 建立兩個(gè)區(qū)域的并集

RGN_XOR 建立除兩個(gè)區(qū)域并集之外的部分

例子:

//創(chuàng)建一個(gè)圓形和長方形交集的組合形狀

HRGN hRect=CreateRectRgn(0,0,300,300);

HRGN hElliptic=CreateEllipticRgn(0,0,400,250);

CombineRgn(hRect,hRect,hElliptic,RGN_OR);

SetWindowRgn(Handle,hRect,true);

當(dāng)需要將窗口還原為標(biāo)準(zhǔn)Windows矩形窗口時(shí),只要將SetWindowRgn函數(shù)的hRgn參數(shù)設(shè)為0就行了,如:

SetWindowRgn(Handle,0,true);

(二)得到系統(tǒng)聲卡的個(gè)數(shù)

當(dāng)我們編寫一個(gè)多媒體程序(如播放器)的時(shí)候,有時(shí)需要檢測(cè)一下計(jì)算機(jī)中是否安裝了聲卡,如果沒有裝聲卡程序則會(huì)終止運(yùn)行。

在這里,我們就要使用API函數(shù)waveOutGetNumDevs,調(diào)用這個(gè)函數(shù)可返回系統(tǒng)中安裝了的聲卡的個(gè)數(shù)。在C++ Builder 5.0中,它被包含在頭文件“mmsystem.h”里面。

例子:

1、首先在程序頭部加入包含頭文件的代碼:

#include $#@60;mmsystem.h$#@62;

2、在窗體的OnCreate事件中加入下面的代碼:

int Num;

//得到聲卡的個(gè)數(shù)

Num=waveOutGetNumDevs();

if(Num)

ShowMessage("你有安裝了"+IntToStr(Num)+"塊聲卡");

else

{

ShowMessage("你沒有安裝聲卡!n程序終止運(yùn)行!");

Close();

}

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1507

    瀏覽量

    62217
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4343

    瀏覽量

    62806
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    api技巧(四)

    鏈接則會(huì)彈出瀏覽器窗口打開指定的URL或是運(yùn)行默認(rèn)的E-Mail程序撰寫新郵件,就和真的超鏈接一樣。你是不是也想在你的程序里做一個(gè)呢?其實(shí),我們只要調(diào)用API函數(shù)ShellExecute和在鼠標(biāo)移動(dòng)時(shí)改變一下文字的顏色,就可以在自己的程序中出現(xiàn)這種效果
    的頭像 發(fā)表于 05-23 11:11 ?550次閱讀

    鴻蒙元服務(wù)API全新呈現(xiàn)-開發(fā)更清晰高效

    鴻蒙元服務(wù)API全新呈現(xiàn),開發(fā)更清晰高效,具體見如下截圖,深黑色部分即本階段公布支持的元服務(wù)API。 本材料整理來源于HarmonyOS NEXT Developer Beta1官
    發(fā)表于 07-11 10:23

    基于onepanel使用kaggle api提交結(jié)果和下載數(shù)據(jù)的步驟

    在onepanel上使用kaggle api提交結(jié)果和下載數(shù)據(jù)
    發(fā)表于 04-22 11:00

    高階API構(gòu)建模型和數(shù)據(jù)使用

    了TensorFlow2.0Beta版本,同pytorch一樣支持動(dòng)態(tài)執(zhí)行(TensorFlow2.0默認(rèn)eager模式,無需啟動(dòng)會(huì)話執(zhí)行計(jì)算圖),同時(shí)刪除了雜亂低階API,使用高階API簡(jiǎn)單地構(gòu)建復(fù)雜神經(jīng)網(wǎng)絡(luò)模型,本文主要分享用高階A
    發(fā)表于 11-04 07:49

    HarmonyOS/OpenHarmony應(yīng)用開發(fā)-HUAWEI DevEco Studio 3.1API9成SDK

    /module.json5”中添加網(wǎng)絡(luò)權(quán)限。*附件:HarmonyOSOpenHarmony應(yīng)用開發(fā)-HUAWEI DevEco Studio 3.1API9成SDK.docx
    發(fā)表于 03-27 10:06

    vc++ api函數(shù) (Windows API大全)

    Windows API大全,本書主要介紹VC++里API函數(shù)及其用法-WindowsAPI Daquan, the book introduces VC Lane API function
    發(fā)表于 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
    發(fā)表于 10-14 17:42 ?6次下載

    PC鍵盤第套掃描碼

    PC鍵盤第套掃描碼
    發(fā)表于 09-22 11:08 ?5次下載
    PC鍵盤第<b class='flag-5'>二</b>套掃描碼<b class='flag-5'>集</b>

    什么是API,不同場(chǎng)景中的API

    當(dāng)公司構(gòu)建他們的應(yīng)用時(shí),他們把它們?cè)O(shè)計(jì)成一組交互的API。最容易理解的例子是Lyft(或者Uber)。你可能想在Lyft應(yīng)用中做一些事情,它們?cè)谀缓蠖紩?huì)觸發(fā)不同的API
    的頭像 發(fā)表于 08-10 11:20 ?2230次閱讀

    API+DevOps:華為云API Arts一體化平臺(tái),端到端呵護(hù)您的API

    API+ | 以API-First理論為基礎(chǔ),以API為核心構(gòu)建數(shù)字化生態(tài) 摘要:華為云API Arts是API全生命周期一體化協(xié)作平臺(tái),支
    的頭像 發(fā)表于 02-17 19:05 ?1142次閱讀

    API+DevOps:華為云API Arts一體化平臺(tái),端到端呵護(hù)您的API

    華為云API Arts是API全生命周期一體化協(xié)作平臺(tái),支持開發(fā)者一站式高效實(shí)現(xiàn)API設(shè)計(jì)、API開發(fā)、API測(cè)試、
    的頭像 發(fā)表于 03-01 15:45 ?820次閱讀
    <b class='flag-5'>API</b>+DevOps:華為云<b class='flag-5'>API</b> Arts一體化平臺(tái),端到端呵護(hù)您的<b class='flag-5'>API</b>

    API Arts 全探秘 | 華為云新一代設(shè)計(jì)管理平臺(tái),功能強(qiáng)大!

    API設(shè)計(jì)不一致?API沒地方歸檔?云服務(wù)開發(fā)項(xiàng)目合作低效?...... ? 華為云為廣大開發(fā)者帶來最新API設(shè)計(jì)管理平臺(tái):API Arts。它
    的頭像 發(fā)表于 03-10 18:40 ?507次閱讀

    API技巧(三)

    (一)閃爍程序的標(biāo)題欄 在某些專業(yè)的應(yīng)用程序中,當(dāng)程序需要提醒用戶或要引起用戶的注意時(shí),就不停地閃爍程序的標(biāo)題欄。要實(shí)現(xiàn)這個(gè)功能,只需要一個(gè)Timer組件和使用一個(gè)API函數(shù)
    的頭像 發(fā)表于 05-23 11:10 ?468次閱讀

    api接口怎么使用

    的一組例程,而又無需訪問源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。 、為什么要懂API文檔 既然API如此復(fù)雜,又不屬于PM的工作范疇,我們?yōu)楹涡枰筚M(fèi)周章的理解它呢,我們的目的是什么。 1. 明確需要的接口服務(wù)
    的頭像 發(fā)表于 05-24 14:44 ?1454次閱讀

    API?Arts?全探秘?|?華為云新一代設(shè)計(jì)管理平臺(tái),功能強(qiáng)大!

    API 設(shè)計(jì)不一致?API 沒地方歸檔?云服務(wù)開發(fā)項(xiàng)目合作低效?......?? 華為云為廣大開發(fā)者帶來最新 API 設(shè)計(jì)管理平臺(tái):API?Arts。它
    的頭像 發(fā)表于 09-03 00:36 ?400次閱讀
    <b class='flag-5'>API</b>?Arts?全探秘?|?華為云新一代設(shè)計(jì)管理平臺(tái),功能強(qiáng)大!