VC托盤程式的簡單實現

2021-09-03 02:35:09 字數 1762 閱讀 4309

以下是網上看到的乙個實現vc托盤的程式,好像只適用於對話方塊程式。

一、托盤簡介 

所謂的「托盤」,在windows系統介面中,指的就是下面任務條右側,有系統時間等等的標誌的那一部分。在程式最小化或掛起,但又不希望佔據工作列的時候,就可以把程式放到托盤區。其實,托盤區的程式設計很簡單,下面簡要闡述一下子嘍^_^ 

二、托盤程式設計相關函式 

其實呢,把程式放到托盤上的本質就是先在托盤區繪製乙個圖示,然後把程式隱藏不見,再對托盤的圖示進行訊息處理,就可以了。 

繪製圖示以及確定圖示所傳送訊息的函式只有乙個,那就是—————— 

winshellapi   bool   winapi   shell_notifyicon( 

dword   dwmessage,   

pnotifyicondata   pnid 

);   

這個函式呢,負責向系統傳遞訊息,以新增、修改或刪除托盤區的圖示。她的返回值呢,是個布林型別的。就是說,如果返回0,那就是成仁啦,非0才成功。 

引數dwmessage   是表示這個函式的應用功能是哪一方面,是新增、刪除,還是修改圖示。如果是新增,則它的值為nim_add;刪除則是nim_delete;而修改是nim_modify。引數pnid就是具體的和程式在托盤區的圖示有關係的結構了。它的定義如下: 

typedef   struct   _notifyicondata     notifyicondata,   *pnotifyicondata;   

下面就對該結構各個引數進行刨析: 

cbsize: 結構的長度,用「位」來做單位。一般在程式中,我們用(dword)sizeof(notifyicondata)   給它賦值。 

hwnd: 乙個控制代碼,如果對托盤中的圖示進行操作,相應的訊息就傳給這個控制代碼所代表的視窗。自然了,大多數情況下是this-> m_hwnd嘍。 

uid: 在工程中定義的圖示id 

uflags: 這個成員標誌著其他哪些成員的資料是有效的,分別為nif_icon,   nif_message,   nif_tip,分別代表著資料有效的成員是hicon,   ucallbackmessage,   sztip。當然,三個值可以用「|」聯絡到一起。下面分別對涉及到的成員進行闡述 

hicon: 要增加,刪除或修改的圖示控制代碼。如果只知道個uid,   一般可能會用函式loadicon來得到控制代碼。例如loadicon(afxgetinstancehandle(),makeintresource(idr_mainframe))。 

ucallbackmessage:   這在對托盤區的操作中,是比較重要的資料成員。這是個訊息標誌,當用滑鼠對托盤區相應圖示進行操作的時候,就會傳遞訊息給hwnd所代表的視窗。所以說,在uflags中,一般都得標誌它有效。這裡一般都是自定義的訊息。 

sztip: 滑鼠移動到托盤圖示上時的提示文字。 

三、托盤程式設計例子 

有關托盤程式設計的基礎知識呢,也就上面這些了。下面呢,我們就進入具體的實戰演練階段,舉幾個托盤程式設計的例子瞧瞧,加深理解。

1、自定義訊息

在標頭檔案中加入以下語句:

#define wm_showtask (wm_user+10)

2、在對話方塊中增加按鈕,按鈕的響應函式為totray()。 

voidctimewakedlg::totray() 

這是個很簡單的函式,裡面首先給notifyicondata賦值,然後呼叫shell_notifyicon,   頭乙個引數是nim_add,表示新增。然後用函式showwindow   隱藏主視窗,這樣,就實現了將程式最小化到系統托盤區的任務了。 

Vc 2008托盤氣泡程式

新建乙個mfc 對話方塊程式 新增成員變數 notifyicondata m 新增方法 bool setuptrayicon hwnd hwnd 上面的 新建乙個圖示在系統托盤處。當推出系統時刪除托盤圖示 bool removetrayicon 新增顯示氣泡方法 bool showtooltip l...

NotifyIcon實現托盤程式

notifyicon 控制項的常用屬性 屬性 icon 型別 system.drawing.icon 說明 將在系統工作列中顯示的圖示。可以在設計時指定,也可在執行時動態指定。屬性 text 型別 string 說明 用於指定當滑鼠停留在小圖示上時顯示的資訊。屬性 visible 型別 bool 說...

MFC實現程式托盤

今天將程式托盤加入了正在開發的程式中,實現如下。使程式托盤我們這裡要用到了乙個結構體notifyicondata,它包含了系統需要用來傳遞托盤區域資訊的訊息 還有需要用到乙個函式shell notifyicon,它的作用是對拖盤圖示進行顯示與刪除。struct notiflyicondata boo...