做什么操作呢,先判断组件是否为设计时,如果是,不进行操作,如果不是进行下一步
if not (csdesigning in componentstate) then
这样的意图是很明显的,因为当设计时的主窗其实是delphi的ide,如果让他处理该消息,其实是处理ide的最小化消息,这时如果你最小化ide,就会出现托盘啦。所以不能。
下一步是是否截获了最小化消息,以及factive是否为真:
if (msg.msg=wm_syscommand) and(factive) then
两样都成立,执行里面的代码,代码中有解释,这里只说两个:
setwindowlong(application.handle,gwl_exstyle ,ws_ex_toolwindow);
设置了这个属性后,窗口最小化就不会停在任务栏了,而是停在屏幕的某个位置,这个位置在哪里呢,由
placement.flags:=wpf_setminposition;
placement.ptminposition.x:=1050;
placement.ptminposition.y:=800;
setwindowplacement(application.handle,@placement);
决定,具体的看代码,自己查帮助吧,这里不多说
而上说的设置setwindowlong后,问题来了,窗口最小化的风格一变了,当你把factive设为false,再最小化窗口,此时是没有托盘图标,但窗口还是最小化到屏幕的那个位置去了,我们看不到,又不能使其恢复(没有托盘)。怎么办呢,