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

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

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

API技巧集(三)

OBEason ? 來(lái)源:jf_88563726 ? 作者:jf_88563726 ? 2023-05-23 11:10 ? 次閱讀

(一)閃爍程序的標(biāo)題欄

在某些專(zhuān)業(yè)的應(yīng)用程序中,當(dāng)程序需要提醒用戶(hù)或要引起用戶(hù)的注意時(shí),就不停地閃爍程序的標(biāo)題欄。要實(shí)現(xiàn)這個(gè)功能,只需要一個(gè)Timer組件和使用一個(gè)API函數(shù)--FlashWindow。

使用API函數(shù)FlashWindow可以閃爍顯示指定窗口,讓窗口在活動(dòng)與非活動(dòng)的狀態(tài)之間切換,它有兩個(gè)參數(shù):hwnd和bInvert,頭文件為“winuser.h”。其中,參數(shù)hwnd為要閃爍的窗口句柄,參數(shù)bInvert是一個(gè)bool變量,設(shè)為true時(shí),程序窗口標(biāo)題欄從活動(dòng)切換到非活動(dòng)狀態(tài)、或反向切換,當(dāng)設(shè)為false時(shí),窗口標(biāo)題欄還原為最初的狀態(tài)。如果配合一個(gè)時(shí)間組件(Timer組件),以一定的時(shí)間間隔執(zhí)行語(yǔ)句:

FlashWindow( Form1-$#@62;Handle,true);

程序窗口的標(biāo)題欄就在活動(dòng)、非活動(dòng)的狀態(tài)之間不停地切換。若把hwnd指定成為應(yīng)用程序的句柄( Application-$#@62;Handel),將會(huì)閃爍程序在任務(wù)欄上的標(biāo)題欄。

下面就讓我們來(lái)做一個(gè)閃爍窗口標(biāo)題欄和任務(wù)欄上標(biāo)題欄的程序。

首先,在Form1中添加三個(gè)按鈕Button1、Button2和Button3,把它們的屬性分別為“閃爍窗口標(biāo)題欄”、“閃爍任務(wù)標(biāo)題欄”和“停止閃爍”,再加入兩個(gè)時(shí)間組件Timer1和Timer2,將兩個(gè)Timer組件的Enabled屬性都設(shè)為false,將Interval屬性都設(shè)為為500(即半秒),改變這個(gè)屬性的值可以修改閃爍的頻率。

然后,雙擊Timer1,在OnTimer事件中加入:

FlashWindow( Form1-$#@62;Handle,true);

雙擊Timer2,在OnTimer事件中加入:

FlashWindow( Application-$#@62;Handel,true);

雙擊Button1,在Button1的OnClick事件中加入:

Timer1-$#@62;Enabled=true;

雙擊Button2,在Button2的OnClick事件中加入:

Timer2-$#@62;Enabled=true;

最后,雙擊Button3,在Button3的OnClick事件中加入:

Timer1-$#@62;Enabled=false;

Timer2-$#@62;Enabled=false;

FlashWindow( Form1-$#@62;Handle,false);

FlashWindow( Application-$#@62;Handel,false);

這樣,一個(gè)簡(jiǎn)單的例子就完成了。按F9編譯運(yùn)行程序,你就可閃爍窗口標(biāo)題欄或是閃爍任務(wù)欄上? 題欄了。

(二)拖動(dòng)無(wú)標(biāo)題窗體

現(xiàn)在的Windows應(yīng)用程序,大都使用了圖形化的界面、不規(guī)則窗口技術(shù),使得程序界面更加漂亮了。但是,使用界面一般要先把窗體的標(biāo)題欄去掉(在BCB中,將窗體的BorderStyle屬性設(shè)為bsNone,就可以把窗體的標(biāo)題欄去掉),這樣就不能使用原來(lái)的標(biāo)題欄了,出現(xiàn)了窗口不能移動(dòng)的問(wèn)題。沒(méi)有標(biāo)題欄怎樣用鼠標(biāo)拖動(dòng)窗體呢?我們可以使用Windows的API函數(shù)SendMessage來(lái)解決這個(gè)問(wèn)題。

首先,新建一個(gè)工程,把窗體的BorderStyle屬性設(shè)為bsNone去掉窗體的標(biāo)題欄,按F12鍵切換到代碼編輯窗口,在頭部加入包含頭文件"winuser.h"的代碼:

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

然后,在窗體的 OnMouseDown 事件中加入下面的代碼:

if(Button == mbLeft)//判斷是否按了鼠標(biāo)左鍵

{

ReleaseCapture();//釋放鼠標(biāo)操作

SendMessage( Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);

}

這樣,用鼠標(biāo)左鍵點(diǎn)住窗口拖動(dòng),就可以實(shí)現(xiàn)拖動(dòng)沒(méi)有標(biāo)題的窗口了。也可以在窗體上添加組件,然后在該組件的 OnMouseDown 事件中加入上面的代碼,這樣也可以點(diǎn)住這個(gè)組件拖動(dòng)窗口。你還可以把SendMessage函數(shù)的第一個(gè)參數(shù)修改為這個(gè)組件的句柄,如:往窗體添加一個(gè)Button組件,在它的 OnMouseDown 事件中加入上面的代碼,其中把SendMessage那行語(yǔ)句改為:

SendMessage( Button1-$#@62;Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);

這樣就可以在程序運(yùn)行時(shí),用鼠標(biāo)在窗口的范圍內(nèi)移動(dòng)Button1了。

(三)隱藏程序在任務(wù)欄的圖標(biāo)

使用API函數(shù)ShowWindow可以隱藏一個(gè)程序在任務(wù)欄的圖標(biāo),它被包含在頭文件“winuser.h”里面。

1、隱藏任務(wù)欄圖標(biāo)的代碼就是:

ShowWindow( Application-$#@62;Handle, SW_HIDE);

2、要重新顯示的時(shí)候就使用:

ShowWindow( Application-$#@62;Handle, SW_SHOW);

但是,如果將程序最小化后,在任務(wù)欄的圖標(biāo)就會(huì)重新出現(xiàn)。若要在程序還原最小化后,程序在任務(wù)欄的圖標(biāo)重新被隱藏起來(lái),可以在窗體的OnPaint事件中加入隱藏程序在任務(wù)欄的圖標(biāo)的代碼,這樣,程序只有在最小化時(shí)任務(wù)欄才會(huì)出現(xiàn)圖標(biāo),當(dāng)程序還原最小化時(shí)圖標(biāo)又會(huì)重新被隱藏起來(lái)。

(四)重啟、關(guān)閉Windows

當(dāng)用戶(hù)修改了Windows里面的一些設(shè)置,Windows經(jīng)常會(huì)提問(wèn)是否要重新啟動(dòng)計(jì)算機(jī),當(dāng)用戶(hù)點(diǎn)Yes的時(shí)候,計(jì)算機(jī)將會(huì)自動(dòng)重啟。這個(gè)就是API函數(shù)ExitWindowsEx的一個(gè)典型的應(yīng)用。

ExitWindowsEx,顧名思義就是退出Windows的函數(shù),它有兩個(gè)參數(shù),第一個(gè)是退出Windows的選項(xiàng),常用的有:EWX_REBOOT(重新啟動(dòng)計(jì)算機(jī)),EWX_SHUTDOWN(關(guān)閉計(jì)算機(jī)),EWX_LOGOFF(注銷(xiāo)當(dāng)前用戶(hù)),第二個(gè)參數(shù)系統(tǒng)保留沒(méi)有使用,可設(shè)為0。

在自編的程序中(如:注冊(cè)表修改程序),當(dāng)用戶(hù)修改了某項(xiàng)設(shè)置需要重新啟動(dòng)計(jì)算機(jī)的時(shí)候,就要使用EWX_REBOOT選項(xiàng)重啟計(jì)算機(jī)。如:

ExitWindowsEx(EWX_REBOOT,0);

使用WX_SHUTDOWN選項(xiàng),可以實(shí)現(xiàn)關(guān)機(jī)。如:

ExitWindowsEx(EWX_SHUTDOWN,0);

當(dāng)需要注銷(xiāo)的時(shí)候,就使用EWX_LOGOFF選項(xiàng)。如:

ExitWindowsEx(EWX_LOGOFF,0);


審核編輯黃宇

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

    關(guān)注

    2

    文章

    1461

    瀏覽量

    61489
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    API :軟件程序間溝通的橋梁

    或許我們不清楚API是什么,但在現(xiàn)實(shí)生活中,API的應(yīng)用場(chǎng)景卻遠(yuǎn)遠(yuǎn)超出了我們的想象。舉個(gè)例子來(lái)說(shuō),當(dāng)我們想要搜索某個(gè)IP地址時(shí),通常是利用API與離線庫(kù)兩種方式去獲取數(shù)據(jù)信息,那么或許你會(huì)疑惑到底
    的頭像 發(fā)表于 08-27 15:54 ?87次閱讀

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

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

    如何理解機(jī)器學(xué)習(xí)中的訓(xùn)練、驗(yàn)證和測(cè)試

    理解機(jī)器學(xué)習(xí)中的訓(xùn)練、驗(yàn)證和測(cè)試,是掌握機(jī)器學(xué)習(xí)核心概念和流程的重要一步。這者不僅構(gòu)成了模型學(xué)習(xí)與評(píng)估的基礎(chǔ)框架,還直接關(guān)系到模型性能的可靠性和泛化能力。以下是一篇深入探討這
    的頭像 發(fā)表于 07-10 15:45 ?1517次閱讀

    ChatGPT-4 API 密鑰:官方申請(qǐng)指南及國(guó)內(nèi)直連使用攻略

    如何使用 ChatGPT 4.0 API 一、獲取 API Key 要使用 ChatGPT 4.0,首先需要獲取一個(gè) API Key,它將作為訪問(wèn) token 額度的憑證。您可以通過(guò)以下步驟獲取
    的頭像 發(fā)表于 05-29 17:08 ?5078次閱讀
    ChatGPT-4 <b class='flag-5'>API</b> 密鑰:官方申請(qǐng)指南及國(guó)內(nèi)直連使用攻略

    華為云發(fā)布 CodeArts API,為 API 護(hù)航

    4 月 10 日,華為云正式發(fā)布 API 全生命周期管理一體化協(xié)作平臺(tái) CodeArts API,支持開(kāi)發(fā)者高效實(shí)現(xiàn) API 設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、托管、運(yùn)維、變現(xiàn)的一站式體驗(yàn)。以 API
    的頭像 發(fā)表于 05-09 23:17 ?409次閱讀
    華為云發(fā)布 CodeArts <b class='flag-5'>API</b>,為 <b class='flag-5'>API</b> 護(hù)航

    谷歌開(kāi)放ZenDeviceEffects API,助第方應(yīng)用實(shí)現(xiàn)睡前屏幕管理

    據(jù)報(bào)道,谷歌近日在安卓 15 開(kāi)發(fā)者預(yù)覽版 2 中推出了全新 ZenDeviceEffects API,允許第方應(yīng)用訪問(wèn)數(shù)字健康的就寢模式功能。
    的頭像 發(fā)表于 05-08 16:41 ?364次閱讀

    什么是國(guó)外API代理?

    API
    jf_60146132
    發(fā)布于 :2024年04月30日 06:47:18

    OpenAI API Key獲取與充值教程:助開(kāi)發(fā)者解鎖GPT-4.0 API

    OpenAI 的 API Key,以及如何使用這個(gè) Key 來(lái)調(diào)用 GPT-4.0 API。 第一步:獲取 OpenAI API Key 要開(kāi)始使用 OpenAI 的服務(wù),你首先需要注冊(cè)并獲取一個(gè)
    的頭像 發(fā)表于 04-28 16:35 ?7848次閱讀
    OpenAI <b class='flag-5'>API</b> Key獲取與充值教程:助開(kāi)發(fā)者解鎖GPT-4.0 <b class='flag-5'>API</b>

    API安全風(fēng)險(xiǎn)顯現(xiàn),F(xiàn)5助API實(shí)現(xiàn)可信訪問(wèn)

    API在現(xiàn)代軟件開(kāi)發(fā)中占據(jù)著重要地位,是應(yīng)用和數(shù)據(jù)的網(wǎng)關(guān),實(shí)時(shí)API更是構(gòu)建數(shù)字業(yè)務(wù)的基礎(chǔ)。Salt Labs報(bào)告顯示,過(guò)去6個(gè)月中,API攻擊活動(dòng)數(shù)量快速增長(zhǎng)了400%,可見(jiàn)API
    的頭像 發(fā)表于 04-17 16:09 ?318次閱讀
    <b class='flag-5'>API</b>安全風(fēng)險(xiǎn)顯現(xiàn),F(xiàn)5助<b class='flag-5'>API</b>實(shí)現(xiàn)可信訪問(wèn)

    Kubernetes Gateway API攻略教程

    Kubernetes Gateway API 剛剛 GA,旨在改進(jìn)將集群服務(wù)暴露給外部的過(guò)程。這其中包括一套更標(biāo)準(zhǔn)、更強(qiáng)大的 API資源,用于管理已暴露的服務(wù)。在這篇文章中,我將介紹 Gateway
    的頭像 發(fā)表于 01-12 11:32 ?699次閱讀
    Kubernetes Gateway <b class='flag-5'>API</b>攻略教程

    極管的共放大器設(shè)計(jì)與分析

    極管共放大器是一種常見(jiàn)的電子電路,廣泛應(yīng)用于信號(hào)處理、通信等領(lǐng)域。本文將介紹極管共放大器的設(shè)計(jì)與分析方法。 一、極管共
    的頭像 發(fā)表于 12-30 17:09 ?990次閱讀
    <b class='flag-5'>三</b>極管的共<b class='flag-5'>集</b>放大器設(shè)計(jì)與分析

    調(diào)用第API接口會(huì)遇到哪些問(wèn)題?如何解決?

    在實(shí)際工作中,我們經(jīng)常需要在項(xiàng)目中調(diào)用第API接口,獲取數(shù)據(jù),或者上報(bào)數(shù)據(jù),進(jìn)行數(shù)據(jù)交換和通信。
    的頭像 發(fā)表于 11-30 11:05 ?1905次閱讀
    調(diào)用第<b class='flag-5'>三</b>方<b class='flag-5'>API</b>接口會(huì)遇到哪些問(wèn)題?如何解決?

    api網(wǎng)關(guān) kong 教程入門(mén)

    為什么使用API-Gateway 方便客戶(hù)端維護(hù)– 每個(gè)請(qǐng)求方不用管理多個(gè)api url,統(tǒng)一訪問(wèn)api-gateway即可 接口重構(gòu)時(shí)調(diào)用方不須了解接口本身等拆分和聚合 客戶(hù)端無(wú)須關(guān)心接口協(xié)議
    的頭像 發(fā)表于 11-10 11:39 ?566次閱讀
    <b class='flag-5'>api</b>網(wǎng)關(guān) kong 教程入門(mén)

    深入了解API的整體架構(gòu)

    序列圖用于按時(shí)間順序描述 API 的不同組件之間的交互。在序列圖中,API 的不同組件表示為框或?qū)ο?,它們之間的交互表示為跨泳道的箭頭或線條。
    的頭像 發(fā)表于 10-30 09:51 ?520次閱讀
    深入了解<b class='flag-5'>API</b>的整體架構(gòu)

    Stream API原理介紹

    Stream API 是 Java 8 中最重要的新特性之一,它是處理集合和數(shù)組的一種新方式。它提供了一種簡(jiǎn)單、靈活和可讀的方式來(lái)處理集合和數(shù)組中的元素,從而使代碼更加簡(jiǎn)潔、高效和易于維護(hù)。 1.
    的頭像 發(fā)表于 09-30 15:31 ?609次閱讀