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

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

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

API技巧集(二)

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

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

Windows提供的只是標準的矩形窗口,要想建立一個不規(guī)則的窗口就需要調(diào)用API函數(shù)來實現(xiàn)。建立一個不規(guī)則的窗口,一般是先用創(chuàng)建區(qū)域的API函數(shù)建立一個不規(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ù)能改變一個窗口的區(qū)域,該函數(shù)有三個參數(shù),第一個參數(shù)hWnd是欲設(shè)置區(qū)域的窗口句柄,第二個參數(shù)hRgn是欲設(shè)置的區(qū)域,第三個參數(shù)bRedraw一般設(shè)為true,即立即重畫窗口。

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

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

例子:

//創(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)建一個由X1、Y1和X2、Y2坐標點確定的矩形所內(nèi)切的橢圓。同樣,X1、Y1和X2、Y2坐標點所確定的矩形為正方形時,創(chuàng)建的就是一個圓形。

例子:

//創(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ù),能將兩個區(qū)域組合為一個新區(qū)域,它有四個參數(shù),第一個參數(shù)hrgnDest保存合并后的新區(qū)域,第二個參數(shù)hrgnSrc1、三個參數(shù)hrgnSrc2為欲合并的兩個區(qū)域,第四個參數(shù)fnCombineMode是區(qū)域組合的方式,它的值是為下面組合方式之一:

組合方式 說明

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

RGN_COPY 建立hrgnSrc1的拷貝

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

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

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

例子:

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

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函數(shù)的hRgn參數(shù)設(shè)為0就行了,如:

SetWindowRgn(Handle,0,true);

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

當我們編寫一個多媒體程序(如播放器)的時候,有時需要檢測一下計算機中是否安裝了聲卡,如果沒有裝聲卡程序則會終止運行。

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

例子:

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

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

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

int Num;

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

Num=waveOutGetNumDevs();

if(Num)

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

else

{

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

Close();

}

審核編輯黃宇

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

    關(guān)注

    2

    文章

    1472

    瀏覽量

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

    關(guān)注

    3

    文章

    4277

    瀏覽量

    62323
收藏 人收藏

    評論

    相關(guān)推薦

    api技巧(四)

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

    鴻蒙元服務(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一樣支持動態(tài)執(zhí)行(TensorFlow2.0默認eager模式,無需啟動會話執(zhí)行計算圖),同時刪除了雜亂低階API,使用高階API簡單地構(gòu)建復雜神經(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,不同場景中的API

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

    API+DevOps:華為云API Arts一體化平臺,端到端呵護您的API

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

    API+DevOps:華為云API Arts一體化平臺,端到端呵護您的API

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

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

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

    API技巧(三)

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

    api接口怎么使用

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

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

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