旧事重提:还有一个隐藏窗口?(200分)

  • 主题发起人 主题发起人 chn2k
  • 开始时间 开始时间
C

chn2k

Unregistered / Unconfirmed
GUEST, unregistred user!
我不久前提问:
随便创建一个app(就用打开Delphi时默认的),不做任何编辑,马上编译;
通过后,关闭Delphi;打开上述app,鼠标右击任务条空白处,选“横向平铺窗口”,
这时你会发现,该app平铺在窗口上半部分,下半部分露出桌面,
好象是同时还有一个隐藏窗口参与平铺。
有人回答说,这是因为同时存在一个TApplication对象的窗口
我又问:如何不让该TApplication对象的窗口参与平铺?
无人回答。是问题太菜?还是别的什么?
 
一开始我还不相信,试了一下果真如此。我晕#¥……
不知道这个问题菜不菜,我是不会。
 
试了一下真是这样,天啊,这是怎么一回事????
 
Tapplication自己产生有一个默认窗口,
这样才可以得到WINDOWS发送来的例如关闭程序的消息
其句柄就是TAPPLICATION.HANDLE
这无论你是否创建了FORM,注意,TAPPLICATION.MAINFORM.HANDLE<>TAPPLICATION.HANDLE
 
[green]Oh,My God!怎么这样子![/green][blue]难以理解![/blue]
 
有一个办法可以解决,就是在MAINFORM.onshow时
showwindow(application.handle,sw_hide)
但这样,任务栏图标就没有了,我想你应该研究一下,windows平铺时的消息,在之前hide
完成后再show出来应该可以。呵呵,现在没时间,你自己试试吧
 
不太完美,对付用吧。
在ONSHOW里改一下
; SetWindowLong(Application.Handle,GWL_STYLE,WS_POPUP or WS_CAPTION or WS_CLIPSIBLINGS or WS_SYSMENU ;or WS_MINIMIZEBOX);
 
果真如此﹐還不完美﹐那什么是完美。menxin, 能講講原理嗎﹖里面的那一堆參數是什么﹖
 
没什么,原理都一样,就是HIDE。这一堆参数与它自己的比,就少了一个WS_VISIBLE
不过,当程序最小化后再RESTORE,TAPPLICATION自动VISIBLE,所以不算完美,可能要再
更多的事件中加入这一行。我看也只能这样了
 
我提这个问题的初衷是:如果自编程序窗口的行为与windows系统窗口的行为不一致
会显得“不够专业”,也会给用户带来使用上的不便。
我对WINAPI不熟悉。我的想法是:当MainForm收到Windows的“平铺窗口”消息后,
先给TApplication发一个“最小化”消息,再正常处理Windows的“平铺窗口”消息。
不知如此处理——行得通/行不通?简单/复杂?
 
唉!再也没人理我了。结了吧!
 

Similar threads

后退
顶部