要求象BitComet那样的最小化及还原
点击窗体最小化按钮后整个窗体消失,缩小到托盘中,任务栏里也不能有,然后点一下托盘图标再还原为原来的样子
第一步最小化是不是要捕捉窗体的最小化事件,然后在事件里添加隐藏窗体的代码
第二步还原的时候该怎么还原?
点击窗体最小化按钮后整个窗体消失,缩小到托盘中,任务栏里也不能有,然后点一下托盘图标再还原为原来的样子
第一步最小化是不是要捕捉窗体的最小化事件,然后在事件里添加隐藏窗体的代码
第二步还原的时候该怎么还原?
解决方案 »
- 我要疯了,为什么idhttp获取不到cookie
- 寻求合适的表格控件。具体要求见内容!
- 你知道它等于什么??
- 错误,晕晕,大家进来看看!急求!
- 我写程序的五大法宝
- 传奇,就那么几个打打杀杀简单的动作。能吸引如此多的人,这些人是怀着怎样的心态去玩的呢?
- 如何在Listboxes中加背景图 --在线等待
- 请问哪个地方有中文汉化的DELPHI6帮助下载?
- 他妈的,现在的老鸟在依老卖老,走就走把,锣缩什么,谁留你们,长江后浪推前浪,滚把
- 请问大家Delphi除了做数据库还能作些什么?
- C/S 程序转换成 ActivX 的困惑
- 向web服务器发送一条含有参数的URL,服务器接收到将查询的结果用xml形式返回,应该如何去写
private
{ Private declarations }
procedure SysCommand(var message: TMessage); message WM_SYSCOMMAND;...procedure TForm1.SysCommand(var message: TMessage);
begin
case message.WParam of
SC_MINIMIZE:
begin
SetWindowPos(application.Handle,HWND_NOTOPMOST,0,0,0,0,SWP_HIDEWINDOW);
hide;
end;
else
inherited;
end;
end;还原的时候
Show;
SetWindowPos(application.Handle,HWND_NOTOPMOST,0,0,0,0,SWP_SHOWWINDOW);
在interface处:
const
WM_NID=WM_USER+1000; //用于托盘
WM_MIN=WM_USER+1001; //用于窗体最小化procedure TForm11.WMMin(var msg:TMessage);
begin
case msg.WParam of
SC_Minimize:begin//捕获窗体最小化消息
//第一步添加托盘图标
with NotifyIcon do
begin
cbSize:=Sizeof(TNotifyIconData);
Wnd:=Handle;
uID:=1;
uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallBackMessage:=WM_NID;
hIcon:=Application.Icon.Handle;
end;//with
Shell_NotifyIcon(NIM_ADD,@NotifyIcon);
//添加好后隐藏窗体,并且不在任务栏上显示
SetWindowPos(Application.Handle,HWND_NOTOPMOST,0,0,0,0,SWP_HIDEWINDOW);
Hide;
end;
end;//Caseend;procedure TForm1.WMNID(var msg:TMessage);
begin
Case msg.LParam of
WM_LBUTTONDOWN:begin//对托盘图标按下了左键
//显示出窗体
Show;
SetWindowPos(Application.Handle,HWND_NOTOPMOST,0,0,0,0,SWP_SHOWWINDOW);
end;
end;//Case
end;
现在问题是当点击窗体最小化按钮时WMMin这个函数没有被触发,不知道正确的方法应该怎么做?
procedure WMNID(var msg:TMessage);message WM_NID;
procedure WMMIN(var msg:TMessage);message WM_MIN;
procedure SysCommand(var msg: TMessage); message WM_SYSCOMMAND;
Windows不能触发,需要自己触发
SendMessage(Application.Handle,WM_NID,0,0);
我试了一下,将原先procedure WMMIN(var msg:TMessage);message WM_MIN;更改为
procedure WMMIN(var msg:TMessage);message WM_SYSCOMMAND;是可以的,不过又出现新的问题
点击最小化是达到我的要求了,不过当点击最大化或关闭按钮又什么反应都没有了,这该怎么处理呢?