.NET Compact Framework (CF) 未內建 NotifyIcon 控制項。發現 PC 端可用 Shell_NotifyIcon + MessageWindow 實作托盤圖示,經查證 CF 同樣支援:
Microsoft.WindowsCE.Forms.MessageWindow 類別存在,可覆寫 WndProc 攔截訊息。Shell_NotifyIcon 函數 (位於 coredll.dll)。提供有效視窗控制代碼 (Hwnd) 與 WndProc 處理原生視窗訊息。繼承並覆寫 WndProc 即可捕捉托盤圖示的點擊、滑鼠事件。
[DllImport("coredll.dll")]
internal static extern int Shell_NotifyIcon(int dwMessage, ref NOTIFYICONDATA pnid);
NOTIFYICONDATA 結構 (需 ref 傳遞指標):
struct NOTIFYICONDATA
{
int cbSize; IntPtr hWnd; uint uID; uint uFlags;
uint uCallbackMessage; IntPtr hIcon;
}
hWnd:接收托盤圖示通知訊息的視窗控制代碼。uCallbackMessage:自訂訊息碼 (如 WM_USER + 2001)。表單最大化會遮住任務列,需最小化表單才能看見托盤圖示。完整類別與範例下載:https://www.cnblogs.com/Files/ttinfo/NotifyIconCf.rar