关于mdi窗口显示背景图片的问题。
我现在用内置图片控件的child类型窗口作为mdi的背景,一切都成功。但我现在想让这个child类型的窗口打开时是用动画打开的方式,主要是想让其中的背景图片按动画方式打开。我的方法是调用windows的api函数animatewindow,但是我怎么试验都不成功,请问我怎么样才能实现?高手给思路。 问题点数:40、回复次数:10Top
1 楼njupt_zhb(攒钱买飞机)回复于 2005-06-03 17:56:38 得分 0
就是用AnimateWindow.... 不知道你怎么试验的?Top
2 楼njz168(飞龙在天)回复于 2005-06-03 19:46:53 得分 0
若是想用动画背景,请用flash
Top
3 楼hbdkfk(卡夫卡)回复于 2005-06-03 21:09:32 得分 0
没有怎么实验,就是在窗口的open事件里调用这个函数,能通过编译,但运行就出现错误!Top
4 楼luotitan(泰坦)回复于 2005-06-03 21:12:23 得分 0
留下邮箱,我有例子。Top
5 楼hbdkfk(卡夫卡)回复于 2005-06-03 21:21:29 得分 0
atonish@163.com
谢了Top
6 楼lzheng2001(1加1)回复于 2005-06-03 22:13:42 得分 20
在窗口的Open事件里写如下代码
long ll_handle
ll_handle = Handle ( This )
动画显示about
AnimateWindow ( ll_handle, 1000, AW_SLIDE + AW_CENTER + AW_ACTIVATE )
在窗口的instance variables里定义如下常量
constant long AW_HOR_POSITIVE = 1
constant long AW_HOR_NEGATIVE = 2
constant long AW_VER_POSITIVE = 4
constant long AW_VER_NEGATIVE = 8
constant long AW_CENTER = 16
constant long AW_HIDE = 65526
constant long AW_ACTIVATE = 131072
constant long AW_SLIDE = 262144
constant long AW_BLEND = 524288
在窗口的local external function里定义如下函数
Function boolean AnimateWindow ( long hwnd, long dwtime, long dwflags ) library "user32.dll"
Top
7 楼hbdkfk(卡夫卡)回复于 2005-06-05 10:35:28 得分 0
to:lzheng2001(1加1=0) ,谢谢了
我就是这样去做的,如果是个普通窗口,这样没有问题。但如果是个mdi主窗口打开的child类型窗口时,调用animatewindow就有问题,错误信息是在open事件中错误的调用外部函数。还有我主要是想动画方式打开child窗口中的一个picture控件,我是在child窗口的resize事件里写p_1.resize(this.width,this.height),不知这样对否?
to:luotitan(泰坦)
我给你留了邮箱,但还是没有收到你的邮件。Top
8 楼luotitan(泰坦)回复于 2005-06-05 10:53:47 得分 10
我的例子同lzheng2001(1加1=0) ,就不发了。
这种情况,建议可以考虑使用循环延时控制窗体的width和height来实现。Top
9 楼lzheng2001(1加1)回复于 2005-06-05 11:55:31 得分 0
如果想动画效果,可试试逐渐改变图片大小的方法实现,一般用timer事件,每隔一点时间就让它增大一点.
也可以在图片上放一个控件,把图片盖住,然后慢慢缩小控件的大小,使图片慢慢显示出来.
还可以考虑用数据窗口 ...Top
10 楼rightyeah(众妙之门)回复于 2005-06-06 08:42:37 得分 10
要背景图片还不简单?
1 建一个普通的main类型的窗口,窗口尺寸要开的大,越大越好,反正就是要考虑到你的主窗口会开多大(跟屏幕分辨率有关啊)。
2 在窗口上放一个图片控件,带上图片。
3 把窗口的enabled改成false,这样这个窗口就永远不会活动了,甚至可以当他不存在。
4 在主窗口打开的时候,用opensheet打开这个图片窗口。
5 图片窗口不可能是active窗口,也不能在主菜单上找到窗口的名字索引,甚至不能被选中,是个很合适的背景Top




