MFC中托盤(TRAYICON)實現

2021-09-07 23:40:04 字數 1960 閱讀 3380

在使用這個類的時候,需要注意:托盤選單的id要和圖示資源的id一樣,否則會出錯。

新增新的類,選擇父類是

trayicon.h 

#pragma once

//trayicon.h : 標頭檔案

////

繼承自ccmdtarget才能接收訊息,詳見《深入淺出 mfc》

class ctrayicon : 

public ccmdtarget 

/*bool setstandardicon(lpctstr lpsziconname, lpcstr lptip)  */

virtual lresult ontraynotification(wparam uid, lparam levent);

/**/protected: 

notifyicondata m_nid; 

declare_message_map() 

};

trayicon.cpp 

//trayicon.cpp : 實現檔案 

//#include 

"stdafx.h

"#include 

"trayiconshell.h

"#include 

"trayicon.h"/*

注意:托盤選單的id要和圖示資源的id一樣,否則會出錯!

*/implement_dynamic(ctrayicon, ccmdtarget)

ctrayicon::ctrayicon(uint uid) 

ctrayicon::~ctrayicon() 

void ctrayicon::setnotificationwnd(cwnd* pnotifywnd, uint ucbmsg) 

bool ctrayicon::seticon(uint uid,lpwstr lptip) 

return seticon(hicon,lptip); 

}bool ctrayicon::seticon(hicon hicon, lpwstr lptip) 

if(m_nid.sztip[

0]) 

m_nid.uflags |= nif_tip;

//設定標誌 

} else

//刪除圖示 

if(m_nid.ucallbackmessage && m_nid.hwnd) 

m_nid.uflags |= nif_message;

bool bret = ::shell_notifyicon(umsg,&m_nid);

//把失敗和nim_delete的操作放在這裡 

if(!bret)    m_nid.hicon = null;

return bret; 

} lresult ctrayicon::ontraynotification(wparam uid, lparam levent) 

if(levent == wm_lbuttondblclk) 

return

1; 

}

begin_message_map(ctrayicon, ccmdtarget) 

end_message_map()

由於這個類的父類是ccmdtarget,所以,可以接受命令訊息(選單的訊息),我們可以自定義新增訊息。

在需要使用「托盤」的視窗類中宣告乙個ctrayicon的物件,然後在oncreate函式當中呼叫即可。

int ctrayiconshelldlg::oncreate(lpcreatestruct lpcreatestruct)

在這一次實驗之後,我更加仰慕和崇尚物件導向(oo)的思想,如果程式設計思路清晰,資料設計得當,介面功能完善,以及介面與介面之間有良好的資訊溝通,oo能讓你在程式設計當中游刃有餘,所以在平時的時候要養成物件導向的思考習慣。

本文完 

monday, april 23, 2012(更新)

搗亂小子

MFC實現程式托盤

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

MFC之托盤區程式設計

notifyicondata notifyicon 該句可以放在dlg類的宣告中,作為dlg類的乙個成員 也可以放在dlg類的實現中,作為全域性變數來使用。notifyicon.cbsize sizeof notifyicondata notifyicon.hwnd m hwnd lstrcpy n...

MFC 最小化到托盤及右擊托盤選單

全域性變數 notifyicondata nid 托盤圖示全域性變數 在stdafx.h define wm showtask wm user 123 關聯訊息對映函式 位於begin message map與end message map之間 on message wm showtask,onsh...