淺析系統托盤的程式設計計算機論文
系統托盤是個特殊區域,通常在桌面的底部,在那裡,使用者可以隨時訪問正在執行中的那些程式。在微軟的Windows裡,系統托盤常指工作列的狀態區域;在Gnome的桌面時,常指布告欄區域;在KDE桌面時,指系統托盤。在每個系統裡,托盤是所有正執行在桌面環境裡的應用程式共享的區域。以下是小編今天為大家精心準備的:淺析系統托盤的程式設計計算機相關論文,內容僅供參考,歡迎閱讀!
淺析系統托盤的程式設計計算機全文如下:
托盤訊息處理:
在Shell32.DLL動態連結庫中包括一個函式Shell_NotifyIconA******可通知Windows在任務條右下角加入一個小圖示,可惜該函式的詳細說明未收入Delphi的幫助文件中。現將實現例程示範如下:
unit pro2;
interface
uses
。。。, Menus,shellAPI; //TNotifyIconData是定義在shellAPI單元的
{自定義訊息,當小圖示捕捉到滑鼠事件時Windows向回撥函式傳送此訊息}
const WM_MYTRAYICONCALLBACK = WM_USER + 1000 ;
。。。。
private
MyTrayIcon : TNotifyIconData ;
procedure WMMyTrayIconCallBack***Var Msg : TMessage***; message WM_MYTRAYICONCALLBACK ;
//托盤訊息處理過程
procedure WMCommand***Var msg : TWMCommand***; message WM_Command;
//處理托盤圖示的右鍵選單事件
procedure Minimize***var ; message WM_NCLBUTTONDOWN;
//窗體最小化時的訊息處理
。。。。。。。。
procedure TForm1.FormCreate***Sender: TObject***;
begin
//將程式視窗樣式設為TOOL視窗,避免在工作列上出現
SetWindowLong***Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW***;
end;
procedure TForm1.FormShow***Sender: TObject***;
begin
//設定托盤
Icon.Handle := LoadIcon***Hinstance,'MAINICON'***;
MyTrayIcon.cbSize := SizeOf***TNotifyIconData***;// nid變數的位元組數
MyTrayIcon.Wnd := Handle ;// 主視窗控制代碼
MyTrayIcon.uID := 1 ;// 內部標識,可設為任意數
MyTrayIcon.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE ;// 指明哪些欄位有效
MyTrayIcon.uCallBackMessage := WM_MYTRAYICONCALLBACK ;//回撥函式訊息,將自定義托盤訊息傳遞進去
MyTrayIcon.hIcon := Application.Icon.Handle; // 要加入的圖示控制代碼,可任意指定
StrCopy***MyTrayIcon.szTip, PChar***Caption******;
Shell_NotifyIcon***NIM_ADD,@MyTrayIcon***;
ShowWindow***Handle,sw_Hide***;
// Visible := False ;//當程式啟動時就最小化在托盤區即Form.Create時啟用此語句
Application.ShowMainForm := False ;
SetForegroundWindow***Application.Handle***;
end;
////訊息過程實現
procedure TForm1.WMMyTrayIconCallBack***var Msg: TMessage***;
var CursorPos : TPoint;
begin
case Msg.LParam of
WM_LBUTTONDBLCLK : //雙擊訊息:彈出主視窗
begin
Visible := not Visible ;
Application.ShowMainForm := Visible ;
SetForegroundWindow***Application.Handle***;
end ;
WM_RBUTTONDOWN : //滑鼠右鍵:彈出選單
begin
GetCursorPos***CursorPos***;
{ Popupmenu1.Popup***CursorPos.X,CursorPos.Y***;
popupmen1裡面就可以加入顯示主視窗、退出等功能。這個右鍵選單可以是靜態的,如上面一句來彈出;也可以動態建立,如下面所示的方法:}
pm := createpopupmenu;//建立一個Hmenu,;
AppendMenu***pm,0,ord***'A'***,'關於....'***;//在指定的選單裡新增一個選單項
AppendMenu***pm,0,Ord***'B'***,'&Exit'***;
//加入選單事件---》處理WMCOMMAND訊息即可
TrackPopupMenu***pm,Tpm_BottomAlign or Tpm_RightAlign, CursorPos.x, CursorPos.y, 0,handle,nil***;
//在圖示上方顯示該彈出式選單
end ;
end ;
end;
procedure TForm1.WMCommand***var msg : TWMCommand***;
begin
Case msg.ItemID of
Ord***'A'*** : showmessage***'我的右鍵選單!'***;
Ord***'B'*** : Self.close;//關閉程式主窗體
else inherited;
end;
end;
procedure Tform1.Minimize***var
begin
if Mess.Hittest = htReduce then
Self.Hide
else inherited;
end;
procedure TForm1.FormClose***Sender: TObject; var Action: TCloseAction***;
var {程式被關閉時通知Windows去掉小圖示}
nid: TNotifyIconData;
begin
nid.cbSize := sizeof***nid***; // nid變數的位元組數
nid.uID := 1; //內部標識,與加入小圖示時的數一致
nid.Wnd := Handle; //主視窗控制代碼
Shell_NotifyIcon***NIM_DELETE, @nid***; //去掉小圖示
end;
- 淺析系統托盤的程式設計計算機論文
- 四年級上冊語文習作六
- 福州重陽節吃啥
- 父母該如何正確引導孩子上網
- 有關上海科技館一日遊的作文
- 五查擺五強化對照檢查材料
- 有關臨近的近義詞和造句
- 關於爆笑的簡單英語笑話
- 宴會的交談禮儀
- 聖誕手抄報英語簡單
- 怎樣重置設定路由器密碼
- 初中想歪腦的腦筋急轉彎大全及答案
- 工作勵志經典格言大全
- 鐵鍋怎麼使用
- 屬牛運氣最好的月份是幾月
- 一個蘿蔔三個坑歇後語的答案
- 關於母親的信
- 大便稀黑色是什麼原因
- 初中漢聖誕節手抄報
- 跌宕起伏的同義詞有哪些及造句_跌宕起伏的近義詞是什麼
- 康熙字典五行屬金的字
- 康熙字典五行屬木的字
- 康熙字典五行屬水的字
- 康熙字典五行屬火的字
- 康熙字典五行屬土的字