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