2013-08-29 68 views
0

我想我的程序最小化到系統托盤,然後我有3個東西,我希望程序做:夫婦的有關係統盤最小化的問題 - WIN API

1)如果我把我的鼠標在它上面,它會顯示一些文字(例如當你把鼠標放在互聯網圖標旁邊,它會告訴你你的網絡SSID ...) 2)如果我要右鍵點擊系統托盤中的圖標,X會發生 3)我是否會留下點擊系統托盤中的圖標,Y會發生

我使用此代碼我的程序最小化到系統托盤:

void MinimizeSystemTray(HWND hwnd) 
{ 
NOTIFYICONDATA nid; 
nid.cbSize = sizeof(nid); 
nid.hWnd = hwnd; 
nid.hIcon = LoadIcon(0, IDI_APPLICATION); 
nid.uCallbackMessage = WM_USER; 
nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE; 

ShowWindow(hwnd, SW_HIDE); 

Shell_NotifyIcon(NIM_ADD, &nid); 
} 

它很好,雖然我couldent找到解決方案,我有3個問題...

謝謝!

+0

您需要處理shell將向您發送的消息。使用[SDK示例](http://archive.msdn.microsoft.com/shellintegration),NotifyIcon.zip。 –

回答

1

請仔細閱讀文檔。你所要求的一切都包含在內。

您已使用NIF_TIPNIF_MESSAGE,它們允許您在鼠標懸停(#1)上提供彈出文本,並在用戶單擊圖標時告訴系統托盤將窗口消息發送回HWND #2和#3)。該消息包含了您需要了解的用於區分鼠標懸停與左/右鼠標按鈕與空格鍵按下之間的所有信息。

+0

非常感謝!我發生的最後一個問題是如何使小的「菜單選項」,如果你通常右鍵點擊程序的圖標... 我只是咳嗽瞭解如何做到這一點...可能你請給我看一個小代碼解釋?謝謝! – Amit

+0

文檔非常清楚。當圖標被右鍵單擊(取決於Shell版本以及是否使用'NIM_SETVERSION')或'NIN_KEYSELECT'通知時,該圖標會向HWND發送包含「WM_CONTEXTPOPUP」或「WM_RBUTTONUP」通知的'uCallbackMessage'消息如果使用鍵盤選擇圖標,則可以根據需要顯示彈出式菜單,例如'TrackPopupMenu/Ex()'。 –

+0

非常感謝! – Amit