System Tray icon上的問題 |
缺席
|
SuperLowB
初階會員 發表:96 回覆:77 積分:34 註冊:2003-06-11 發送簡訊給我 |
我自已寫了一個Application,只有一張form
當minimize張form後,張form會hide而會在system tray 上出現該application 的icon ,在system tray 上的right click該icon會有popupmenu出現,而當popupmenu出現後,我click其他window物件時,popupmenu仍然存在,怎樣可以將它消失?
段code 應怎樣寫? 發表人 - superlowb 於 2003/06/14 13:27:07 發表人 - superlowb 於 2003/06/14 13:29:29
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
|
SuperLowB
初階會員 發表:96 回覆:77 積分:34 註冊:2003-06-11 發送簡訊給我 |
|
SuperLowB
初階會員 發表:96 回覆:77 積分:34 註冊:2003-06-11 發送簡訊給我 |
現把我所有code給你看看
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI, Menus, StdCtrls; const WM_MYTRAYNOTIFY=WM_USER +1 ; type TForm1 = class(TForm) pm1: TPopupMenu; mnuShowFrm: TMenuItem; mnuCloseFrm: TMenuItem; Memo1: TMemo; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); procedure mnuShowFrmClick(Sender: TObject); procedure mnuCloseFrmClick(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure SetSysTrayIcon; procedure DelSysTrayIcon; procedure WndProc(var Msg:TMessage); override; //Tray icon's call back function procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; end; var Form1: TForm1; implementation uses Unit2; {$R *.DFM} { TForm1 } procedure TForm1.WndProc(var Msg: TMessage); var lpt:TPoint; lCurAction,lCurPos:String; begin if Msg.Msg = WM_MYTRAYNOTIFY then begin // ICON 的 uID {case Msg.WParam of 200: curicon := 'blue icon mouse action: '; 300: curicon := 'green icon mouse action: '; end;} GetCursorPos(lpt); lCurpos := 'X: '+IntToStr(lpt.X)+', Y: '+IntToStr(lpt.Y); // 滑鼠的按鍵動作 case Msg.LParam of WM_LBUTTONDOWN: lCuraction := 'Left Button Down '; WM_RBUTTONDOWN: begin pm1.Popup(lpt.x,lpt.y); lCuraction := 'Right Button Down '; end; WM_LBUTTONUP: lCuraction := 'Left Button Up '; WM_RBUTTONUP: lCuraction := 'Right Button up '; WM_MOUSEMOVE: lCuraction := 'Mouse Move '; WM_LBUTTONDBLCLK: lCuraction := 'Left Button DoubleClick '; WM_RBUTTONDBLCLK: lCuraction := 'Right Button DoubleClick '; end; memo1.Lines.Add(lCuraction + ' ' + lCurpos); end; inherited; end; procedure TForm1.SetSysTrayIcon; var lTrayIconNfy:TNotifyIconData; begin lTrayIconNfy.cbSize := sizeof(lTrayIconNfy); lTrayIconNfy.Wnd := self.Handle; // lTrayIconNfy 設定為 200 lTrayIconNfy.uID := 200; lTrayIconNfy.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP; // NIF_MESSAGE 設定 message wm_xxx // NIF_ICON 設定 ICON // NIF_TIP 設定 提示訊息 lTrayIconNfy.szTip:='Hello World'; lTrayIconNfy.hIcon := Self.Icon.Handle; lTrayIconNfy.uCallbackMessage := WM_MYTRAYNOTIFY; //StrPCopy(lTrayIconNfy.szTip,'Test Hit'); Shell_NotifyIcon(NIM_ADD, @lTrayIconNfy); end; procedure TForm1.DelSysTrayIcon; var lTrayIconNfy:TNotifyIconData; begin lTrayIconNfy.cbSize := sizeof(lTrayIconNfy); lTrayIconNfy.Wnd := self.Handle; lTrayIconNfy.uID := 200; Shell_NotifyIcon(NIM_DELETE, @lTrayIconNfy); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin action:=cafree; end; procedure TForm1.FormDestroy(Sender: TObject); begin DelSysTrayIcon; end; procedure TForm1.FormCreate(Sender: TObject); begin SetSysTrayIcon; end; procedure TForm1.mnuShowFrmClick(Sender: TObject); begin Form1.show; end; procedure TForm1.mnuCloseFrmClick(Sender: TObject); begin Form1.close; end; procedure TForm1.WMSysCommand(var Message: TWMSysCommand); begin if (Message.CmdType and $FFF0 = SC_MINIMIZE) or (Message.CmdType and $FFF0 = SC_CLOSE) then form1.hide else inherited; end; end.當minimize張form後,張form會hide而會在system tray 上出現該application 的icon ,在system tray 上的right click該icon會有popupmenu出現,而當popupmenu出現後,我click其他window物件時,popupmenu仍然存在,怎樣可以將它消失? 段code 應怎樣寫? 如果用SetForegroundWindow應把這句code寫在那裡? 發表人 - superlowb 於 2003/06/16 09:57:24 |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 我不是用component(TrayICon),我整個System tray icon都是用code寫出來的,我是用Shell_NotifyIcon API寫出來的,那麼應怎樣解決我以上的問題呢? 如果用SetForegroundWindow應把這句code寫在那裡?SuperLowB 你好: 請參考以下的連結文章
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |