启动程序时如何才可以最小化到托盘区
2008-07-25 14:10
363 查看
启动程序时如何才可以最小化到托盘区,单击窗体最小化时,可以最小化到托盘区(状态栏不显示).
下面的的一些代码:
unit FrmTest;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ShellAPI;
const
WM_NOTIFYICON=WM_USER+1;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
// lN:TNotifyIcon;
FNotifyIcon :TIcon;
//系统最小化时显示小图标
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
//响应系统消息;
procedure WMNotifyIcon(var Msg: TMessage); message WM_NOTIFYICON;
public
Procedure AddNotifyIcon;
procedure DeleteNotifyIcon;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.AddNotifyIcon;
var
lIconData:NotifyIconDataA;
begin
lIconData.cbSize :=SizeOf(lIconData);
lIconData.Wnd := self.Handle;
lIconData.hIcon := FNotifyIcon.Handle;
lIconData.uCallbackMessage := WM_NOTIFYICON;
lIconData.uID := 0;
lIconData.szTip := '短信发送' ;
lIconData.uFlags := NIF_MESSAGE OR NIF_ICON OR NIF_TIP;
Shell_NotifyIcon(NIM_ADD,@lIconData);
end;
procedure TForm1.DeleteNotifyIcon;
var
lIconData:NotifyIconDataA;
begin
lIconData.cbSize :=SizeOf(lIconData);
lIconData.Wnd := self.Handle;
lIconData.uID := 0;
Shell_NotifyIcon(NIM_DELETE,@lIconData);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FNotifyIcon := TIcon.Create;
FNotifyIcon.LoadFromFile('TECHNLGY.ICO');
AddNotifyIcon;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DeleteNotifyIcon;
FNotifyIcon.Free;
end;
procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
inherited;
if Msg.CmdType = SC_MINIMIZE then
begin
self.Visible:=false;
//AddNotifyIcon;
end;
end;
procedure TForm1.WMNotifyIcon(var Msg: TMessage);
begin
if Msg.LParam=WM_LBUTTONDBLCLK then
begin
SELF.Visible:=TRUE;
Application.Restore;
Application.BringToFront;
end;
end;
end.
下面的的一些代码:
unit FrmTest;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ShellAPI;
const
WM_NOTIFYICON=WM_USER+1;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
// lN:TNotifyIcon;
FNotifyIcon :TIcon;
//系统最小化时显示小图标
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
//响应系统消息;
procedure WMNotifyIcon(var Msg: TMessage); message WM_NOTIFYICON;
public
Procedure AddNotifyIcon;
procedure DeleteNotifyIcon;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.AddNotifyIcon;
var
lIconData:NotifyIconDataA;
begin
lIconData.cbSize :=SizeOf(lIconData);
lIconData.Wnd := self.Handle;
lIconData.hIcon := FNotifyIcon.Handle;
lIconData.uCallbackMessage := WM_NOTIFYICON;
lIconData.uID := 0;
lIconData.szTip := '短信发送' ;
lIconData.uFlags := NIF_MESSAGE OR NIF_ICON OR NIF_TIP;
Shell_NotifyIcon(NIM_ADD,@lIconData);
end;
procedure TForm1.DeleteNotifyIcon;
var
lIconData:NotifyIconDataA;
begin
lIconData.cbSize :=SizeOf(lIconData);
lIconData.Wnd := self.Handle;
lIconData.uID := 0;
Shell_NotifyIcon(NIM_DELETE,@lIconData);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FNotifyIcon := TIcon.Create;
FNotifyIcon.LoadFromFile('TECHNLGY.ICO');
AddNotifyIcon;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DeleteNotifyIcon;
FNotifyIcon.Free;
end;
procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
inherited;
if Msg.CmdType = SC_MINIMIZE then
begin
self.Visible:=false;
//AddNotifyIcon;
end;
end;
procedure TForm1.WMNotifyIcon(var Msg: TMessage);
begin
if Msg.LParam=WM_LBUTTONDBLCLK then
begin
SELF.Visible:=TRUE;
Application.Restore;
Application.BringToFront;
end;
end;
end.
相关文章推荐
- VC++:如何将程序启动时最小化到托盘
- VC++:如何将程序启动时最小化到托盘
- VC++:如何将程序启动时最小化到托盘
- VC++ 如何实现程序启动后最小化到托盘
- VC++:如何将程序启动时最小化到托盘
- Delphi7使用控件CoolTrayIcon时如何做到程序启动就最小化到托盘
- MFC基于Dialog的窗口程序启动时最小化到托盘
- 如何使对话框程序启动以及主窗口最小化时不在任务栏上显示
- AIR程序如何最小化到系统托盘(2)
- MFC程序启动时最小化到托盘
- VC++如何将程序最小化到托盘
- JAVA桌面程序启动时最小化到托盘(未测试:需jdk6.0)
- AIR程序如何最小化到系统托盘(3)
- 如何使对话框程序启动以及主窗口最小化时不在任务栏上显示
- 如何将程序最小化到托盘
- VC++:如何将程序最小化到托盘 [转]
- VC++如何将程序最小化到托盘
- C#开发WinForm程序如何实现程序最小化到系统托盘
- 如何为C#winform程序添加最小化到托盘的功能
- MFC窗口程序启动时最小化到托盘、不在任务栏中显示、显示时在右小角