1. 程式人生 > >MFC實現程式托盤

MFC實現程式托盤

        今天將程式托盤加入了正在開發的程式中,實現如下。

        使程式托盤我們這裡要用到了一個結構體NOTIFYICONDATA,它包含了系統需要用來傳遞托盤區域資訊的訊息;還有需要用到一個函式Shell_NotifyIcon,它的作用是對拖盤圖示進行顯示與刪除。

STRUCT NOTIFLYICONDATA
{
	cbSize                 //結構體的大小,以位元組為單位
	hIcon                  //工作列上顯示的圖示
	hWnd                   //視窗控制代碼
	uCallbackMessage       //自義定訊息處理,當你對託管圖示操作時,響應這訊息
	uFlags                 //作用標識,比如你想讓圖示起作用可以用NIF_ICON ,想顯示提標資訊可用NIF_TIP
	uID                    //圖示ID
	szTip                  //滑鼠放上去的提示資訊
};
BOOL Shell_NotifyIcon( DWORD dwMessage,PNOTIFYICONDATA lpdata);/**dwMessage:執行的操作,可選引數為:NIM_ADD(建立託管圖示,NIM_DELETE(刪除託管圖示),NIM_MODIFY(修改託管圖示)**/

現在開始實現,首先定義NOTIFYICONDATA,在OnInitDialog對其初始化。

nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA); 
nid.hWnd=this-> m_hWnd; 
nid.uID=IDR_MAINFRAME; 
nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP   ; 
nid.uCallbackMessage = WM_SHOWTASK;//自定義的訊息名稱 
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); 
strcpy(nid.szTip, _T("xxx"));//資訊提示條 
Shell_NotifyIcon(NIM_ADD,&nid);//在托盤區新增圖示

自定義訊息供NOTIFYICONDATA結構使用。

#define WM_SHOWTASK (WM_USER + 100)
afx_msg LRESULT OnShowTask(WPARAM wParam,LPARAM lParam);
LRESULT CQueueServerDlg::OnShowTask(WPARAM wParam,LPARAM lParam) //wParam是圖示的ID,lParam是滑鼠的行為 
{ 
	if(wParam != IDR_MAINFRAME) 
	{
		return   1; 
	}
	switch(lParam) 
	{ 
		case WM_RBUTTONUP://右鍵起來時彈出快捷選單
		{ 
				LPPOINT   lpoint=new   tagPOINT; 
				::GetCursorPos(lpoint);//得到滑鼠位置 
				CMenu   menu; 
				menu.CreatePopupMenu();//宣告一個彈出式選單 
				menu.AppendMenu(MF_STRING,WM_DESTROY, "Close"); //增加選單項“關閉”,點選則傳送訊息WM_DESTROY給主視窗(已隱藏)將程式結束。 
				SetForegroundWindow();	 
				menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this); //確定彈出式選單的位置
				HMENU   hmenu=menu.Detach();  //資源回收 
				menu.DestroyMenu(); 
				delete   lpoint; 
		} 
		break; 
		case WM_LBUTTONDBLCLK:
		{ 
			this-> ShowWindow(SW_SHOW);
		} 
		break; 
		case  WM_LBUTTONDOWN:
			this-> ShowWindow(SW_SHOW);
			break;
	} 
	return   0; 
} 

最後在OnDestroy函式刪除托盤圖示。

Shell_NotifyIcon(NIM_DELETE,&nid);

相關推薦

MFC實現程式托盤

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

mfc實現系統托盤

Windows作業系統中的某些程式執行時不顯示執行視窗,只在工作列上顯示一個圖示,表示程式正在執行,使用者可以通過滑鼠與應用程式互動,比如金山毒霸等應用程式,我們有時也需要編制一些僅在後臺執行的類似程式,為了不干擾前臺程式的執行介面和不顯示不必要的視窗,應使程式執行時的主視

VC++MFC對話方塊應用程式實現程式最小化到系統托盤

轉自:http://blog.sina.com.cn/s/blog_6b23bc700100pqrm.html  現在使用系統托盤圖示的程式越來越多,尤其是需要長時間執行的程式。這並不是什麼高深的技術,純當做個筆記。  第一步:定義一個 NOTIFYICONDATA 結構

VS2010 MFC Dialog實現程式自動重啟

    VS2010 MFC Dialog 做了一個小專案,需要實現自動重啟,搜了一些文章,各有優缺點,所以將這些文章做了一下簡單的綜合,下面是自己的實現過程,並附上了參考文章連結,希望能給新手帶來幫助。 1. 先建一個VS2010 MFC Dialog 工程,此處之所

一個MFC實現的漢諾塔程式

漢諾塔採用的是一個經典遞迴演算法,以前我在學《資料結構》時涉及過,前不久公司組織拓展活動,活動期間有一項就是移動漢諾塔,因此活動結束後我重新設計並實現了這一演算法。其中和書中講的略有區別,但大同小異,以記後來。 1 標頭檔案宣告 // 一個漢諾塔 struct stOne

[原始碼和文件分享]基於MFC實現的AES加密解密程式

1 演算法背景及介紹 1.1 背景 高階加密標準(Advanced Encryption Standard,AES)作為傳統對稱加密演算法標準DES的替代者,由美國國家標準與技術研究所(NIST)於1997年提出徵集該演算法的公告。1999年3月22日,NIST從15個候選演算法中公佈了5個

總結:一個簡單的MFC實現最小化托盤效果

先上說明,最後我會附上程式碼,我也是臨時新學的,請諸位指正 對於標頭檔案中的CxxxDlg類定義而言,需要新增以下幾個地方,見下圖 對於上圖中的最下面的public部分,略作解釋 NOTIFYICONDATA m_nid; //新增成員變數 afx_msg LRESUL

一個MFC程式介面的實現思路(視窗分割)

  學了C語言C++之後,編寫的都是控制檯程式也就是那個黑框框,涉及到一點介面的也只是寫基於對話方塊的。所以一直想去寫一個基於單文件的或者多文件的,稍微大點的“小程式”。最後終於邁出了第一步,寫了一個答題的小程式,現在就介紹一下整個程式的實現思路和步驟(視窗分割和幾個控制元

基於socket通訊的,利用MFC實現TCP通訊的C/S架構程式

1.程式說明       開發環境為VS2012,基於TCP連線的客戶端與服務端的通訊程式,服務端IP為本地網絡卡ip地址或127.0.0.1,預設埠為1234(在程式編寫過程中連線埠要大於1000,否則容易與計算機中某些程式埠衝突導致無法通訊)。 2.socket簡介 M

Windows 下利用MFC實現的中國象棋棋盤繪製程式

最近在啃 Jeff Prosise《MFC Windows 程式設計》這本書,以前雖然也學過MFC,當時用的是孫鑫的視訊教程和書,學完後,似乎感覺有收穫,也的確可以編點小的MFC程式,不過總感覺沒有吃

實現系統托盤

新建 logs menus strip enable inter 添加 menu img 實現系統托盤: 1.新建一個Windows窗體應用程序。 2.在當前窗體添加一個contextMenuStrip上下文菜單控件。 3.添加NotifyIcon1控件,用於顯示任務欄圖標

Java Swing 實現系統托盤圖標

bubuko alt 匹配 fig ons 參數 mage 彈出 con 在實現托盤圖標時,出現彈出式菜單顯示中文亂碼,無法顯示正確的文字 查詢相關資料後發現是字符編碼不匹配,查詢資料出處 解決方法 1、通過修改Java項目的默認編碼為GBK; 2、在Run Configu

如何實現程式開機自啟動

分為三步: 在AndroidManifest.xml檔案中定義廣播和宣告許可權 實現自定義廣播類 接收到廣播後,設定Activity的啟動模式 在AndroidManifest.xml檔案中定義廣播和宣告許可權 <uses-permission and

winPcap+MFC實現網路嗅探器

1.1、不可或缺的東西 WinPcap V4.1.2:驅動程式、Dll檔案 http://www.winpcap.org/install/bin/WinPcap_4_1_2.exe WinPcap V4.1.2 Developer’s Pack:庫檔案、標頭檔案、簡單的示例程式程式碼

修改登錄檔實現程式開機自啟動

修改登錄檔實現程式開機自啟動 2017年09月27日 10:55:37 閱讀數:335 登錄檔簡介 何為登錄檔 登錄檔相當於Windows下的一個龐大的層次性資料庫.  基本上有責系統所有的配置資訊 登錄檔是windows作業系統中的一個核心資料庫,其中存放

MFC實現原理剖析

“現在已經是人工智慧、大資料的時代,雲+端才是王道,桌面程式設計已經過時了,還有沒有必要學習MFC?”這是許多困擾剛剛入行朋友的問題,不可否認,由於python、Java等開發語言和環境的流行,Visual C++的應用範圍也相應縮小。“有人說現在c++越來越接近邊緣性語言?c++程式設計師以後的發展方向在那

MFC實現一元稀疏多項式運算器

MFC實現一元稀疏多項式運算器 基本要求 輸入並建立兩個多項式 多項式a與b相加,建立和多項式c 多項式a與b相減,建立差多項式d 輸出多項式a, b, c, d。輸出格式:比如多項式a為:A(x)=c1xe1+ c2xe2+…+ cmxem,其中,ci和ei分別為第i項的係數和指數,且

linux下用gdb實現程式宕機時自動列印呼叫堆疊

linux下程式執行幾天莫名其妙宕機了,不能還原現場,找到宕機原因就很無語了。 一個解決辦法是使用core檔案,但是對於大型伺服器檔案,動輒幾百M的core檔案是在有點傷不起,於是想到程式宕機時自動列印呼叫堆疊。簡單實用。

MFC 實現在主程式視窗之前彈出使用者登入介面

一、登入介面設計 首先在新建一個對話方塊,然後為該對話方塊新建一個基於對話方塊的類,在建立使用者登入介面的時候,在新增兩個示例編輯框的同時,新增變數(CString 型別)m_strUser和m_strPassword。 二、新增登入驗證程式碼 在主程式的App類的InitInsta

退出MFC應用程式的方法總結

//1、最常用 PostQuitMessage(0); //2、最常用 PostMessage(WM_QUIT,0,0); //3、最常用 ::SendMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0); //4、最常用 ::Pos