关于窗口隐藏
我用了下面的函数使窗体从任务栏上消失了,但我最小化时,窗体居然给我跑到屏幕的左
下方呆着,我该如何做才能让它最小化时彻底从屏幕上消失掉!
SetWindowLong(Application.Handle,GWL_ExStyle,WS_EX_ToolWindow);
问题点数:100、回复次数:12Top
1 楼V_Lucky(最优解)回复于 2002-05-30 15:13:27 得分 0
ShowWindow(Application.Handle,SW_HIDE);Top
2 楼stanely(俺是邢她汉子)回复于 2002-05-30 15:39:21 得分 0
application.onminize
self.hideTop
3 楼Carfield(一只特别懒的猫)回复于 2002-05-30 17:08:36 得分 0
那个函数隐藏的是主窗体(Delphi中打开工程文件时所显示的窗体),子窗体不能隐藏.可使用ShowWindow(Application.Handle,SW_HIDE);隐藏所有的窗体.
Top
4 楼Danphel(Aleon)回复于 2002-05-30 17:13:04 得分 0
把窗体彻底从内存中释放,当启动窗体时,
Application.create(Form1,Tform1)jiu就是Top
5 楼LeonSu(Leon.Su)回复于 2002-06-01 10:53:31 得分 0
To: stanely(俺是邢的汉子)
只能隐藏一次多次就不行了Top
6 楼njbudong(jinlingboy)回复于 2002-06-01 11:13:27 得分 0
先获得最小化的消息,然后hide就可以了;
type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMSysCommand(var Msg: TWMSysCommand);
message WM_SYSCOMMAND;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WMSysCommand;
begin
if (Msg.CmdType = SC_MINIMIZE) then
Application.ShowMainForm := False;
else
inherited;
end;
Top
7 楼plainsong(短歌)()回复于 2002-06-01 11:38:37 得分 0
为主窗体写一个消息函数:
procedure WMSysCommand(var Message: TWMSysCommand);message WM_SYSCOMMAND;
procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
if (Message.CmdType = SC_MINIMIZE) then
Visible := False
else
inherited;
end;Top
8 楼slwqw(四大名捕之追杀令)回复于 2002-06-01 11:53:56 得分 0
搞不懂,彻底消失了,那你怎么恢复???Top
9 楼eulb(执子之手,与子偕老)回复于 2002-06-01 12:21:27 得分 100
你用
SetWindowLong(Application.Handle,GWL_ExStyle,WS_EX_ToolWindow);
是不让你的程序不在任务栏上出现
要知道真正的程序窗口是Application,任何的Form都可以看成是Application的子窗口,因此,你最小化Form就象最小化了一个子窗口,所以它就缩小到左下角了
所以,要实现真正的最小化,只要application.minimize就可以了
而不是调用form的minimize!Top
10 楼ihihonline(潇潇->戒烟)回复于 2002-06-01 12:29:09 得分 0
够啦、够啦~
俺是来灌水的,没成想,落后啦~Top
11 楼qrlvls( 空 气 )回复于 2002-06-01 12:34:45 得分 0
我灌,我再灌Top
12 楼GreenWaterBlueSky(碧水蓝天)回复于 2002-06-01 12:49:51 得分 0
同意njbudong(南京不懂)
不过建议
Application.ShowMainForm := False;
改为:Application.Minimize;
Top




