程序退出时图标还在任务栏上!!??(20分)

L

leepyzh

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序在退出时任务栏上的图标还在,但点一下就没了,不知什么原因?
另外,请问我在canvas上textout时,想达到一种颜色渐变效果,不知怎么实现?
我用三重循环来使rgb的值改变,效果太差,且太笨,高手请指点!!
还有,延时函数delphi中有那些?sleep()不太好用,因为,它挂起了程序,
连鼠标都不响应了,谢谢!
 
刚刚用Form1.BorderIcons := Form1.BorderIcons + [biMaximize];方法试过,
好像还是不行!!!
 
这也许是windows的问题,我经常碰到
 
残留图标的情况,我只在将程序运行窗口最大化后遇到过,
有回答说是windows的bug,我的解决办法很土:在关闭程序
前,将窗口的宽和高设为零,基本解决问题(好像再犯的概率非常小了,
不敢说没有)。
不知你的情况如何?
 
我试过比如显示器设置是800*600,将From设置成800*600就有这个问题,而如果是799*599
就没有这个问题了,所以我同意以上观点是WIN98的BUG
 
在程序Terminate之前加一个KILL图标的语句呢?
 
应该是Win98的BUG吧,你的屏幕保护运行完了也是这样多了一条,点一下才没了
 
的确是Win98的BUG,在NT下没有这个问题.
解决的办法是在运行程序前先调用函数隐藏任务栏,
程序结束前再使之出现,就可以避免这个问题了.
参见如下代码:
procedure TForm1.HideTaskBar;
var
wndHandle : THandle;
wndClass : array[0..50] of Char;
begin
StrPCopy(@wndClass[0], 'Shell_TrayWnd');
wndHandle := FindWindow(@wndClass[0], nil);
ShowWindow(wndHandle, SW_HIDE);
end;

procedure TForm1.ShowTaskBar;
var
wndHandle : THandle;
wndClass : array[0..50] of Char;
begin
StrPCopy(@wndClass[0], 'Shell_TrayWnd');
wndHandle := FindWindow(@wndClass[0], nil);
ShowWindow(wndHandle, SW_RESTORE);
end;

在FormCreate时调用HideTaskbar,FormClose时调用ShowTaskbar
 
把鼠标移动到你的图标上, 他就会消失!
 
你的程序中的某个窗体一定有把属性windowstate设置为wsMaximized吧?
如果这样的话就会出现这种问题,我想是个bug吧。
建议在窗体的oncreate事件中
form1.width:=screen.width;
form1.height:=screen.height;
form1.left:=0;
form1.top:=0;
 
应该是windows的bug
 
颜色渐变 用CANVAS的调色板
或者用API
 
我的程序有时也有这问题。
 
不用设为0,将WindowState设为wsNormal即可解决(出问题时一般是Max且Border为None)
 
Win98的Bug你可以将你的系统升级为Win2k
 
多人接受答案了。
 

Similar threads

顶部