- 相關(guān)推薦
應(yīng)用程序指示圖標(biāo)的實(shí)現(xiàn)方法研究
應(yīng)用程序指示圖標(biāo)的實(shí)現(xiàn)方法研究
蔣俊杰 石波 潘若愚(合肥工業(yè)大學(xué)網(wǎng)絡(luò)所 230009)
摘要:本文較詳細(xì)地介紹了Windows環(huán)境下的應(yīng)用程序指示圖標(biāo)的基本原理及其實(shí)現(xiàn)方法,并給出了通過(guò)Delphi編程環(huán)境實(shí)現(xiàn)的應(yīng)用程序指示圖標(biāo)的實(shí)例.
關(guān)鍵詞:指示圖標(biāo) Delphi
1.引言
在早期的DOS操作系統(tǒng)中,存在著一類特殊的程序—內(nèi)存駐留程序(TSR),這類程序始終駐留在內(nèi)存中,當(dāng)需要使用時(shí)就直接從內(nèi)存中調(diào)用,大大提高了時(shí)間效率,而這類程序一般的也是系統(tǒng)需要頻繁調(diào)用的程序或是一個(gè)實(shí)時(shí)監(jiān)控程序,因此通過(guò)駐留內(nèi)存來(lái)?yè)Q取時(shí)間效率是值得的.
在Windows環(huán)境下也需要這一類程序,一些是系統(tǒng)程序如輸入法和系統(tǒng)時(shí)鐘,一些是應(yīng)用程序如一些實(shí)時(shí)監(jiān)控的殺毒軟件等,這些程序通常都是一直伴隨著系統(tǒng)運(yùn)行的,它們?cè)谶\(yùn)行時(shí)一般不需要或很少需要用戶的干預(yù), 而Windows環(huán)境下的應(yīng)用程序在運(yùn)行時(shí)通常都是以窗口形式存在的,即使最小化也會(huì)在任務(wù)欄上留下一個(gè)帶圖標(biāo)及標(biāo)題的按鈕,又由于Windows是多任務(wù)操作系統(tǒng),用戶幾乎肯定會(huì)同時(shí)進(jìn)行其他操作,因此象上述應(yīng)用程序若不采取其他措施就必然會(huì)影響到用戶的其他操作或者是程序自身容易受到意外的用戶干預(yù),影響了正常運(yùn)行.
可喜的是,從Windows 95 和 Windows NT 4.0開(kāi)始,出現(xiàn)了一個(gè)令人振奮的特性:任務(wù)欄指示區(qū).這個(gè)通常位于任務(wù)條右端的區(qū)域能包含一種稱作指示圖標(biāo)(NotifyIcon)的小圖標(biāo)(如輸入法圖標(biāo)、系統(tǒng)時(shí)鐘圖標(biāo)等),通過(guò)這些圖標(biāo)能夠引出復(fù)雜的應(yīng)用程序或菜單,而具有了這種圖標(biāo)的應(yīng)用程序也就不存在上面所講的問(wèn)題了.本文將介紹Windows環(huán)境下應(yīng)用程序指示圖標(biāo)的基本原理及其實(shí)現(xiàn)方法,并給出通過(guò)Delphi編程環(huán)境實(shí)現(xiàn)的應(yīng)用程序指示圖標(biāo)的實(shí)例.
2.基本原理
要實(shí)現(xiàn)應(yīng)用程序指示圖標(biāo),首先需要?jiǎng)?chuàng)建一個(gè)應(yīng)用程序窗口,再注冊(cè)一個(gè)圖標(biāo)到任務(wù)欄,并設(shè)置它的消息循環(huán)(使圖標(biāo)與某個(gè)應(yīng)用程序窗口關(guān)聯(lián)),最后還應(yīng)在程序退出時(shí)關(guān)閉該指示圖標(biāo),這就是整個(gè)應(yīng)用程序指示圖標(biāo)實(shí)現(xiàn)過(guò)程的基本步驟,當(dāng)然還有很多具體的細(xì)節(jié)上的工作.下面就介紹一些比較關(guān)鍵的基本原理及技術(shù)細(xì)節(jié).
在Windows系統(tǒng)中存在這樣一個(gè)基本的數(shù)據(jù)結(jié)構(gòu): TNotifyIconData,它是一個(gè)用來(lái)設(shè)置窗口句柄的數(shù)據(jù)結(jié)構(gòu),是一個(gè)記錄類型的參數(shù),其具體結(jié)構(gòu)如下:
Type
TNotifyIconData = record
cbSize: DWORD;
hWnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hIcon: HICON;
szTip: array [0..63] of AnsiChar;
end;
要實(shí)現(xiàn)指示圖標(biāo)首先就需要設(shè)置這個(gè)圖標(biāo)的窗口句柄(這將定義哪個(gè)窗口處理消息循環(huán)),回調(diào)消息號(hào),圖標(biāo),工具提示等,這也是所有工作的關(guān)鍵.一旦這個(gè)數(shù)據(jù)結(jié)構(gòu)設(shè)置了,我們就可以增加一個(gè)圖標(biāo)到任務(wù)欄上的指示區(qū)了,同時(shí)將該圖標(biāo)與一個(gè)窗口(應(yīng)用程序)關(guān)聯(lián)了起來(lái).
下面就簡(jiǎn)要介紹上述數(shù)據(jù)結(jié)構(gòu)中的各個(gè)成員:
·cbSize是該結(jié)構(gòu)的大小(由系統(tǒng)用來(lái)確定版本);
·hWnd是一個(gè)窗口句柄,用來(lái)指示Icon向該窗口發(fā)送消息,即將Icon與該窗口關(guān)聯(lián)了起來(lái);
·uID是圖標(biāo)標(biāo)識(shí)符,僅當(dāng)程序有多個(gè)圖標(biāo)時(shí)才有用, 它是用于區(qū)分各個(gè)圖標(biāo)的;
·uFlags有三個(gè)可能的標(biāo)志: nif_Message、nif_Icon及nif_
【應(yīng)用程序指示圖標(biāo)的實(shí)現(xiàn)方法研究】相關(guān)文章:
基于MapObjects控件的鷹眼圖實(shí)現(xiàn)方法03-07
非現(xiàn)場(chǎng)審計(jì)的實(shí)現(xiàn)方法研究03-24
通過(guò)圖的鄰接矩陣實(shí)現(xiàn)圖的搜索實(shí)現(xiàn)(一)03-07
關(guān)于司法統(tǒng)計(jì)方法及指標(biāo)的研究11-18
DSP56362的雙引導(dǎo)裝載方法研究與實(shí)現(xiàn)03-18
VC++實(shí)現(xiàn)串口通信的應(yīng)用程序設(shè)計(jì)03-07
基于Monte Carlo方法的通信仿真實(shí)現(xiàn)及應(yīng)用研究03-30
基于CPLD的RS485通信實(shí)現(xiàn)方法研究03-07
用Borland C 3.1實(shí)現(xiàn)外設(shè)與Windows應(yīng)用程序?qū)崟r(shí)通信03-21