组件制作之五(托盘组件)[4]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 linzhengqun 的 blog

做什么操作呢,先判断组件是否为设计时,如果是,不进行操作,如果不是进行下一步

if not (csdesigning in componentstate) then

这样的意图是很明显的,因为当设计时的主窗其实是delphiide,如果让他处理该消息,其实是处理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,再最小化窗口,此时是没有托盘图标,但窗口还是最小化到屏幕的那个位置去了,我们看不到,又不能使其恢复(没有托盘)。怎么办呢,

本文关键:组件制作之五(托盘组件)
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top