程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 最小化托盤的實現方法

最小化托盤的實現方法

編輯:C++入門知識

最小化托盤的實現方法


在書上看到的,覺得有用,記下了。

首先,最小化托盤的基本原理是,將應用程序的主窗體隱藏,然後在托盤中繪制應用程序的圖標。然後再為托盤圖標添加一些事件處理。

核心函數是Shell_NotifyIcon()函數,負責向系統傳遞消息,添加、修改或刪除托盤區的圖標。原型:

WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(

DWORD dwMessage,

PNOTIFYCONDATA pnid

);

其中dwMessage標示功能,有NIM_ADD/NIM_DELETE/NIM_MODIFY。

pnid是程序最小化到托盤的圖標信息結構體:

typedef struct _NOTIFYCONDATA {

DOWRD cbSize; //結構的長度

HWND hWnd;

UINT uID; //圖標ID

UINT uFlags; //標志著其他哪些成員數據的有效性?

UINT uCallbackMessage; //當用戶單擊托盤區圖標時會向窗口發送消息

HICON hIcon; //圖標句柄

char szTip[64]; //鼠標移動到托盤圖標上時顯示的文字

} NOTIFYICONDATA, *PNOTIFYICONDATA;


相關代碼:

...

NOTIFYICONDATA nid;

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_CALL;

nid.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));

strcpy(nid.szTip,"MyApp");

Shell_NotifyIcon(NIM_ADD,&nid);

ShowWindow(SW_HIDE); //隱藏主窗口

...

接著自定義消息WM_CALL,方法有一篇文章有講到。這裡要注意規定了回調消息wParam接收圖標ID,lParam接收鼠標的行為。

另外,當程序全部關閉時,也應該刪除掉托盤,代碼差不多,不重復了。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved