最小化的动画效果没有了??? 怎么实现???(50分)

  • 主题发起人 主题发起人 superbenben2001
  • 开始时间 开始时间
S

superbenben2001

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.SystemMinimizedMessage(var Message: Tmessage);
begin
Case Message.WParam of
SC_MINIMIZE:
begin
ShowWindow(handle,SW_HIDE);
ShowTrayIcon;
end;
end;
end;

最小化时,窗体是成功隐藏了,而且也出现在系统托盘里了。
但是最小化时的动画效果却没有了??
 
你的代码中不是将最小化动作改为隐藏窗体了吗?当然没有最小化的过程了
 
我可不可以骗一回分的?给你一个很酷的模拟最小化的动画效果的代码,而且是 Microsoft 写的。
 
那怎么实现像QQ那样有最小化动画的效果??而最小化后又看不到窗体那种??
 
TZoomAction = (zaMinimize, zaMaximize);
procedure ZoomEffect(theForm: TForm; theOperation: TZoomAction);
var
rcStart: TRect;
rcEnd: TRect;
rcTray: TRect;
hwndTray : hWnd;
hwndChild: hWnd;
begin
{ Find the system tray area bounding rectangle }
hwndTray := FindWindow('Shell_TrayWnd', nil);
hwndChild := FindWindowEx(hwndTray, 0, 'TrayNotifyWnd', nil);
GetWindowRect(hwndChild, rcTray);
{ Check for minimize/maximize and swap start/end}
if theOperation = zaMinimize then
begin
rcStart := theForm.BoundsRect;
rcEnd := rcTray;
end
else
begin
rcEnd := theForm.BoundsRect;
rcStart := rcTray;
end;
{ Here the magic happens... }
DrawAnimatedRects(theForm.Handle, IDANI_CAPTION, rcStart, rcEnd)
end;
 
可以調用最小化的方法實現﹕
Application.Minimize﹔你處可以如此﹕
procedure TForm1.SystemMinimizedMessage(var Message: Tmessage);
begin
Case Message.WParam of
SC_MINIMIZE:
begin
Application.Minimize﹔
ShowWindow(handle,SW_HIDE);
ShowTrayIcon;
end;
end;
end;
還原是Application.Restore;
 
jiajiajia888 的正确。
 
'Shell_TrayWnd'我知道是是指“开始“菜单这里。
hwndChild := FindWindowEx(hwndTray, 0, 'TrayNotifyWnd', nil);
这个'TrayNotifyWnd',是什么,如果在我的程序里,我把它换成什么呢??
 
你仔细看看,什么都不用换,把这句套进你的程序去:
DrawAnimatedRects(theForm.Handle, IDANI_CAPTION, rcStart, rcEnd)
参数不清楚,就查一下帮助。
 
procedure ZoomEffect(theForm: TForm; theOperation: TZoomAction);
我声明这个过程出错??
 
[Error] Unit1.pas(60): Undeclared identifier: 'TZoomAction'

 
TZoomAction = (zaMinimize, zaMaximize);
这个在哪里声明呢??
 
大侠们帮帮忙啊
 
procedure TForm1.SystemMinimizedMessage(var Message: Tmessage);
begin
Case Message.WParam of
SC_MINIMIZE:
begin
|<-------------- 你把那句代码插到这里 (代码:DrawAnimatedRects(Handle, IDANI_CAPTION, rcStart, rcEnd))
ShowWindow(handle,SW_HIDE);
|<-------------- 或,这里试试。rcStart, rcEnd 两个矩形先定义掉!!!
ShowTrayIcon;
end;
end;
end;
 
procedure TForm1.SystemMinimize(var Message: TMessage);
rcStart: TRect;
rcEnd: TRect;
begin
case Message.WParam of
SC_MINIMIZE:
begin
ShowWindow(handle,SW_Hide);
DrawAnimatedRects(Handle, IDANI_CAPTION, rcStart, rcEnd);
ShowTrayIcon();
end
else
Inherited;
end;
end;

1。没有动画效果??
2.procedure ZoomEffect(theForm: TForm; theOperation: TZoomAction);
这个过程不用要了??
3.TZoomAction = (zaMinimize, zaMaximize);
这个类型在哪里声明??
 
你用了第三方控件?
 
笨死我!!!
谢谢小雨哥,jiajiajia888

给分你们两个
 
呵呵,给你一块金子,你还要问怎么花?
 
一般这样用:先定义类,看我写的第一很代码
然后在form的show和hide事件中分别加代码:ZoomEffect(self,zaMinimize),ZoomEffect(self,zaMaximize)
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部