デルファイTRAYICONコントロールは、どのようにシステムトレイにウィンドウを最小化する場合には?

 TRAYICONコントロールは、どのようにシステムトレイにウィンドウを最小化する場合には?
QQのように、右下隅のアイコンに最小化されるように、右下の脚のアイコンをクリックするだけでなく、フォームを開きます。
どのようにプロパティべき、またはインシデント?12兄を教えてください......

ユニットUnit1は、
インターフェース

用途
Windowsの、メッセージ、sysutilsの、バリアント、クラス、グラフィックス、コントロール、フォーム、
ダイアログ、StdCtrls、shellapi、メニュー、ExtCtrls。

CONST 
WM_TRAYNOTIFY = 10 

入力
TForm1 = クラス(TFormは)
ボタン1:TButtonの。
popupmenu1を:TPopupMenu;
N1:TMenuItem。
N2:TMenuItem。
タイマ1:†時間。
ボタン2:TButtonの。
ボタン3:TButtonの。
手順FormCreate(送信者:TObjectを);
手順FormDestroy(送信者:TObjectを);
手続きButton1Click(送信者:TObjectを);
手順 wmTrayNotify(VARメッセージ:TMessage); メッセージWM_TRAYNOTIFY;
手順N1Click(送信者:TObjectを);
手順N2Click(送信者:TObjectを);
手順FormShow(送信者:TObjectを);
手順Button2Click(送信者:TObjectを);
手順Timer1Timer(送信者:TObjectを);
手順Button3Click(送信者:TObjectを);
民間
ChangeFlag:ブール。
A:ブール。
アイコン:TICON。
ない:TNotifyIconData。
{ プライベート宣言} 
公共

{ 公開宣言} 
;

ました
Form1の:TForm1;

実装

{ $ R * .DFM }

手順TForm1.FormCreate(送信者:TObjectを);
開始
ChangeFlagを: = falseは、
A: = 真;
{ Nid.cbSize:=はsizeof(TNotifyIconData)。
Nid.Wnd:=ハンドル;
Nid.uID:= 1000;
Nid.uFlags:= NIF_MESSAGEまたはNIF_ICONまたはNIF_TIP。
Nid.uCallbackMessage:= WM_TRAYNOTIFY。
Nid.hIcon:= Application.Icon.Handle。
Nid.szTip:=「Iは、システムトレイに隠します」。
Shell_NotifyIcon(NID @ NIM_ADD、); } 
アイコン: = TICON。作成します
Icon.LoadFromFile(' C:\プログラムファイル\ Microsoft Officeの\ OFFICE11 \ MSN.ICO ' );

エンド;

手順TForm1.FormDestroy(送信者:TObjectを);
ベギン
Shell_NotifyIcon(NID @ NIM_DELETE、);
エンド;

手順TForm1.Button1Click(送信者:TObjectを);
開始
Nid.cbSize: = はsizeof(TNotifyIconData)。
Nid.Wnd: = ハンドル;
Nid.uID: = 1000年
Nid.uFlags: = NIF_MESSAGE または NIF_ICON またはNIF_TIP。
Nid.uCallbackMessage: = WM_TRAYNOTIFY。
Nid.hIcon: = Application.Icon.Handle。
Nid.szTip: = Iは、システムトレイに隠します
Shell_NotifyIcon(NID @ NIM_ADD、);
ShowWindow(Application.Handle、SW_SHOWMINIMIZED)。
ShowWindow(Application.Handle、SW_HIDE)。
Timer1.Enabled: = 真;
エンド;

手順 TForm1.wmTrayNotifyは(メッセージ:TMessage);
ました 
P:TPoint; 
始める
ならば(Msg.lparam = WM_LBUTTONDBLCLK) その後
始まります
ShowWindow(Application.Handle、SW_SHOW)。
Shell_NotifyIcon(NID @ NIM_DELETE、);
Timer1.Enabled: = falseは、
Application.Restore;
終了
他の IF(Msg.LParam = WM_RBUTTONUP) その後
始める
GetCursorPos(P)を; // マウス座標取得 
PopupMenu1.Popup(PX、PYを); //は、マウスカーソルでポップアップメニューを表示し
、エンド;
 エンド;

手順TForm1.N1Click(送信者:TObjectを);
ベギン
ShowWindow(Application.Handle、SW_SHOW)。
Shell_NotifyIcon(NID @ NIM_DELETE、);
Application.Restore;
Timer1.Enabled: = falseは、
エンド;

手順TForm1.N2Click(送信者:TObjectを);
ベギン
Application.Terminate;
エンド;

手順TForm1.FormShow(送信者:TObjectを);
ベギン

Timer1.Enabled: = falseは、
エンド;

手順TForm1.Button2Click(送信者:TObjectを);

開始
ChangeFlagを: = 真;
{ アイコン:= TIcon.Create。
Icon.LoadFromFile( 'C:の\ Program Files \ Microsoft Office \ OFFICE11 \ MSN.ICO');
Nid.cbSize:=はsizeof(TNotifyIconData)。
Nid.Wnd:=ハンドル;
Nid.uID:= 1000;
Nid.uFlags:= NIF_MESSAGEまたはNIF_ICONまたはNIF_TIP。
Nid.uCallbackMessage:= WM_TRAYNOTIFY。
Nid.hIcon:= Icon.Handle。
Shell_NotifyIcon(NID @ NIM_MODIFY、); } 
終わります

手順TForm1.Timer1Timer(送信者:TObjectを);
開始し
ている場合 ではない ChangeFlag その後、
出口;
もし Aが、その後
始まる
Nid.hIcon: = Icon.Handleを。
Shell_NotifyIcon(NID @ NIM_MODIFY、);
A: = falseは、
上で
プレゼンス を開始
Nid.hIconを: = Application.Icon.Handle。
Shell_NotifyIcon(NID @ NIM_MODIFY、);
A: = 真;
エンド;
エンド;

手順TForm1.Button3Click(送信者:TObjectを);
開始
ChangeFlagを: = falseは、
エンド;

終わり

 

おすすめ

転載: www.cnblogs.com/jijm123/p/12602700.html