怎么把一个窗体放到win95的任务栏上?(100分)

  • 主题发起人 主题发起人 danceofwind
  • 开始时间 开始时间
D

danceofwind

Unregistered / Unconfirmed
GUEST, unregistred user!
;可以把一个图标放到任务栏上,怎么才能把一个窗体放到任务栏,就象<证券之星>的滚动消息栏一样.
 
可能是在动态改变Application的Title
 
应该是放到托盘上,不是放到任务栏,sorry!
<证券之星>的滚动消息栏放入托盘后,托盘上的图标会重新排列,滚动消息栏
包括一个小滚动屏和几个按钮.
 
danceofwind:

没见过证券之星,但如果你是想做一个会动的TRAY程序,你自己几乎都已
经回答了这问题。

第一步:找如何把自己的程序放到Tray里,在大富翁里有很多这样的回答。

第二步,在程序里,加一个ImageList,把动态的图标的各各画面放在ImageList
里,改变程序TrayIcon的ImageList的Index,那图标就动起来了
 
可以把APPLICATION 的 ICON 和TITLE 放到任务栏上,然后不断变化 TITLE AND ICON, 就可以实现了 icon 用资源文件,TITLE 就自己想办法用动态的 Tstrings
就可以实现
 
没见过证券执行,我猜猜看哈

我用过wplay这个播放mp3的软件,他在tray上面放置乐4个小图标,
排在一起组成了一个播放面板(前进/后腿/快进/快推)...
同理,你也可以放置一系列小图标,注意边框之间的无缝衔接,看起来
能浑然一体的,然后受到消息后,不断在这一些列小图标上drawtext,
为了达到滚动效果,还要做一些循环变换,这样,每个小图标上的text
连起来就成了完整的消息文本...

这个办法可能土了一点,我没有试验过.
 
谢谢各位!
不过我要的不是把图标放到TrayWnd上,
而是窗体本身,
<证券之星>中的滚动栏,明显不是通过图标实现的,
它可以在桌面和托盘之间切换,在桌面上和在托盘上
的外观是一样的.
 
呵呵,我想应该是这样:

//找到托盘所在父窗口
hparent := Findwindow(Pchar('Shell_TrayWnd'),nil);
//找到托盘窗口
h := FindWindowEx(hp,0,Pchar('TrayNotifyWnd'),nil);
//在上面加窗口
hbutton:=CreateWindow('Button','test',WS_VISIBLE or
WS_CHILD,0,0,100,100,h,0,0,nil);
这只是个例子,你可以加一个正常点的窗口,然后setwindowlong
为他设定处理程序入口,ok拉
 
这样是可以,但是好象托盘区的图标都被BUTTON挡住了
怎样才能让托盘区重新排列一下?
谢谢!
 
您试试得到托盘的handle后,改变一下它的宽度?然后再加入您的窗口?
 
sigh...试了一下才发现没那么容易改变它的宽度
我用
GetwindowRect(h,wrect);
setwindowpos(h,HWND_TOP,wrect.Left-120,
wrect.Top,wrect.Right-wrect.Left+120,
wrect.Bottom -wrect.Top ,
SWP_NOZORDER or SWP_NOOWNERZORDER);
它竟然只是闪了一闪,什么都没变到
究竟怎样才能让托盘重新排列?请大虾们指教
 
我用spy++跟踪了一下托盘区,发现滚动消息栏添加到托盘区时,
托盘是以17为步长增加宽度的,猜想可能是添加了几个空图标,
然后再将消息栏覆盖在上面的.不过不知托盘区有新程序添加
图标时,消息栏是怎么处理的.
 
多人接受答案了。
 
后退
顶部