仿windows操作界面,环境:PB9.0
写这个东西迷惑了好长时间,因为任务栏一直不知道怎么做(一直没想到是窗口)
后来想用API去截取窗口的状态,于是找到了FindWindowEx函数,这不算什么,只是
一个例程的附加说明说: windows的任务栏是一个特殊形式的窗口叫: "Shell_TrayWnd"
才解开迷雾,同时也解决了 w_desktop,打开后的大小问题(具体看它的open事件)
桌面窗口: w_desktop:所有窗口的父窗口,装载任务栏窗口和桌面图片
任务栏: w_taskbar + uo_taskbar :w_taskbar 作用是将窗口置于最上
uo_taskbar是改变任务栏的border用的.
任务项用户对象: uo_task_item: 取打开的功能窗口的title,并在w_taskbar
上打开
测试用窗口: w_test_ancestor :
用户事件: ue_getminmaxinfo :控制窗口最在化后的尺寸,以与自己的任务栏对应
ue_confirmwin: 当窗口最大化时,固定窗口(因为用 ue_getminmaxinfo )
后最大化的窗口可以移动
其它的就不用说了吧,都有注解,而且调用简单
------braveQQ
//******************************************************
此次作的改进:
一. 任务栏可以拖动变成浮动效果,
二. 浮动的任务栏靠左边界或靠右边界时自动隐藏,自动弹出( 很好看:) )
三. 自动根据状态栏的状态( float or bottom )调整taskitem
四. 一些固定的值全部用常量,见下面的instance variable
不足之处:
1.去掉了以前test窗口的ue_getminmaxinfo事件!当窗口最大化时,任务栏会覆盖窗口的一部分.而不去掉的话
当窗口由浮动变成置底时,无法改变大小,一样会覆盖窗口的一部分,网友们可以自已写程序,当任务栏置底时
动态改变statusbar和窗口里的其它控件的位置. (当然如果有哪位网友知道用API函数直接改变窗口在最大化时
的大小那更好,并且请一定告诉我: brave_qq@hotmail.com (找这种功能花了我好长时间 :PPPPP)
2.任务栏的自动隐藏功能的事件没有写在w_taskbar里,而是写在了其它窗口的 mousemove里
如果网友们有更好的方法,请一定联系我,谢谢!
建议:这个里面还可以再加一些功能,如,加checkbox,让用户选择下次进入系统时是浮动还是底部. 当taskbar
浮在中间时,只显示其上的空白部分,也就是做成像靠左或靠右时的自动隐藏一样(我很懒,觉得这样差不多了
所以就没再写其它的功能:))
新添加的
1. 在 uo_taskitem 下写了两个函数:
a . of_setoriginal_color( al_color )
设置taskitem 原始的颜色,也是 taskitem 的styleraised 颜色 ;
参数取taskbar的颜色,这样网友们只需改变taskbar的颜色就可相应改变taskitem的颜色 :)
b . of_setlowered_color( )
设置stylelowered 颜色 : 固定值. 网友们可改里面的值,以改变taskitem的颜色
2. w_taskbar 窗口的实例变量
uo_task_item iu_taskitem[]
int ii_taskcount
//桌面窗口的高度和宽度
long il_desk_width,il_desk_height
//任务栏的颜色
long il_taskbar_color
//标志是: "float" , 还是"bottom"
string is_float_pos
//是否第一次打开
boolean ib_first_open
// taskbar置于底部时,用固定高度
CONSTANT INT II_BOTTOM_HEIGHT = 96
// 所有 taskitem之间所分隔的距离
CONSTANT INT II_SPLIT_SPACE = 30
// 当taskbar 为float时留给其顶部的空间
CONSTANT INT II_TOP_REMAIN = 80
// 所有TASKITEM在W_TASKBAR(bottom形式)
// 里的 X , Y 坐标,及高度
CONSTANT INT II_TASKITEM_XPOS = 8
CONSTANT INT II_TASKITEM_YPOS = 9 //只对UO_EXITSYS
CONSTANT INT II_TASKITEM_HEIGHT = 84
3. 移动w_taskbar的实现:
新加了一个API函数 . 实现主要在uo_systaskbar的ue_lbuttondown里
4. 浮动功能的实现:
据 is_float_pos的值判断的
对ue_arrange_taskitem 加入了判断!从而根据is_float_pos的值排列taskitem
希望对大家有帮助:)
brave_QQ
2002-11-28
写这个东西迷惑了好长时间,因为任务栏一直不知道怎么做(一直没想到是窗口)
后来想用API去截取窗口的状态,于是找到了FindWindowEx函数,这不算什么,只是
一个例程的附加说明说: windows的任务栏是一个特殊形式的窗口叫: "Shell_TrayWnd"
才解开迷雾,同时也解决了 w_desktop,打开后的大小问题(具体看它的open事件)
桌面窗口: w_desktop:所有窗口的父窗口,装载任务栏窗口和桌面图片
任务栏: w_taskbar + uo_taskbar :w_taskbar 作用是将窗口置于最上
uo_taskbar是改变任务栏的border用的.
任务项用户对象: uo_task_item: 取打开的功能窗口的title,并在w_taskbar
上打开
测试用窗口: w_test_ancestor :
用户事件: ue_getminmaxinfo :控制窗口最在化后的尺寸,以与自己的任务栏对应
ue_confirmwin: 当窗口最大化时,固定窗口(因为用 ue_getminmaxinfo )
后最大化的窗口可以移动
其它的就不用说了吧,都有注解,而且调用简单
------braveQQ
//******************************************************
此次作的改进:
一. 任务栏可以拖动变成浮动效果,
二. 浮动的任务栏靠左边界或靠右边界时自动隐藏,自动弹出( 很好看:) )
三. 自动根据状态栏的状态( float or bottom )调整taskitem
四. 一些固定的值全部用常量,见下面的instance variable
不足之处:
1.去掉了以前test窗口的ue_getminmaxinfo事件!当窗口最大化时,任务栏会覆盖窗口的一部分.而不去掉的话
当窗口由浮动变成置底时,无法改变大小,一样会覆盖窗口的一部分,网友们可以自已写程序,当任务栏置底时
动态改变statusbar和窗口里的其它控件的位置. (当然如果有哪位网友知道用API函数直接改变窗口在最大化时
的大小那更好,并且请一定告诉我: brave_qq@hotmail.com (找这种功能花了我好长时间 :PPPPP)
2.任务栏的自动隐藏功能的事件没有写在w_taskbar里,而是写在了其它窗口的 mousemove里
如果网友们有更好的方法,请一定联系我,谢谢!
建议:这个里面还可以再加一些功能,如,加checkbox,让用户选择下次进入系统时是浮动还是底部. 当taskbar
浮在中间时,只显示其上的空白部分,也就是做成像靠左或靠右时的自动隐藏一样(我很懒,觉得这样差不多了
所以就没再写其它的功能:))
新添加的
1. 在 uo_taskitem 下写了两个函数:
a . of_setoriginal_color( al_color )
设置taskitem 原始的颜色,也是 taskitem 的styleraised 颜色 ;
参数取taskbar的颜色,这样网友们只需改变taskbar的颜色就可相应改变taskitem的颜色 :)
b . of_setlowered_color( )
设置stylelowered 颜色 : 固定值. 网友们可改里面的值,以改变taskitem的颜色
2. w_taskbar 窗口的实例变量
uo_task_item iu_taskitem[]
int ii_taskcount
//桌面窗口的高度和宽度
long il_desk_width,il_desk_height
//任务栏的颜色
long il_taskbar_color
//标志是: "float" , 还是"bottom"
string is_float_pos
//是否第一次打开
boolean ib_first_open
// taskbar置于底部时,用固定高度
CONSTANT INT II_BOTTOM_HEIGHT = 96
// 所有 taskitem之间所分隔的距离
CONSTANT INT II_SPLIT_SPACE = 30
// 当taskbar 为float时留给其顶部的空间
CONSTANT INT II_TOP_REMAIN = 80
// 所有TASKITEM在W_TASKBAR(bottom形式)
// 里的 X , Y 坐标,及高度
CONSTANT INT II_TASKITEM_XPOS = 8
CONSTANT INT II_TASKITEM_YPOS = 9 //只对UO_EXITSYS
CONSTANT INT II_TASKITEM_HEIGHT = 84
3. 移动w_taskbar的实现:
新加了一个API函数 . 实现主要在uo_systaskbar的ue_lbuttondown里
4. 浮动功能的实现:
据 is_float_pos的值判断的
对ue_arrange_taskitem 加入了判断!从而根据is_float_pos的值排列taskitem
希望对大家有帮助:)
brave_QQ
2002-11-28







