程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 用C#實現智能設備上的NotifyIcon類(1)

用C#實現智能設備上的NotifyIcon類(1)

編輯:關於C語言

前幾天有網友問.NET CF中怎麼實現NotifyIcon,我這才知道原來.Net CF並沒有提供NotifyIcon控件。

於是偶想PC上可以用Shell_NotifyIcon和MessageWindow來實現托盤圖標,只是不知道.NET CF支持不支持這兩個東東了。仔細看了一下.Net CF中可疑的命名空間,沒想到在Microsoft.WindowsCE.Forms命名空間裡面竟然有一個MessageWindow 類,太好了,只剩下一個Shell_NotifyIcon 函數了。接著  在Window CE的SDK的幫助文件裡,又發現Window CE Platform API已經包含了Shell_NotifyIcon函數。兩大“主料”都齊了,只剩下鍋了。

先看一下MessageWindow類,這個類提供了 WndProc 方法,用於處理窗口消息,並公開了可能傳遞給本機窗口函數的有效窗口句柄。要使用它,派生一個新類,並重寫的 WndProc 方法,這樣才能截獲特定的窗口消息。這裡主要用來處理click事件。

Shell_NotifyIcon的用法如下:

[DllImport("coredll.dll")]

internal static extern int Shell_NotifyIcon(int dwMessage, ref NOTIFYICONDATA pnid);

其中,NOTIFYICONDATA結構如下:

struct NOTIFYICONDATA
{
  int cbSize;
  IntPtr hWnd;
  uint uID;
  uint uFlags;
  uint uCallbackMessage;
  IntPtr hIcon;
}

Pnid參數的生命需要注意,是按引用傳遞的,因為Shell_NotifyIcon 需要一個指向 NOTIFYICONDATA 結構的指針。

hWnd是用來接收任務欄中圖標單擊消息的窗口的句柄。

運行示例的時候由於窗體最大化,擋住了任務欄,把窗體最小化之後就能看到托盤圖標了。(效果圖片竟然貼不上來,改天再貼吧)

該類和示例的下載地址:http://www.cnblogs.com/Files/ttinfo/NotifyIconCf.rar

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