powerbuilder 中使用flash,flash无法根据窗口的大小自动调整

    今天收到一个需求,在应用程序启动时候首先显示flash界面,然后点击flash中的按钮定位到程序的各个功能模块中。

    以前做过类似的东西,心想不难。

    1、做flash,关键是在flash的按钮中写以下代码

          on(release){

                fscommand("m_system")

           } 

          m_system是要在pb中操作的命令。

    2、在PB中做一个界面,导入OLE控件:shockwave flash object,设置好控件的属性(movie、scalemode、playing等)

          在OLE控件的fscommand事件中编写代码

          CHOOSE CASE command

                CASE "m_system"

                            //处理代码

                CASE ELSE

        END CHOOSE

    3、在界面的resize事件中编写代码,使OLE控件一起变化。这时发现问题,OLE控件变化了,但flash本身还保留着原OLE控件的大小 。在网上搜shockwave falsh object的各种属性未果,用VS2003中的ACTIVEX测试工具试没有问题。怀疑可能是PB的问题,尝试在resize事件中重新设movie属性,还是不行。最后考虑每次刷新时重新创建对象,终于成功!

    a、创建用户自定义对象uo_Flash,此对象加载影片;

    b、在resize事件中创建一个uo_Flash对象,用OpenUserObject()打开。注意在打开前要设置uo_Flash.Ole_1的大小。

    c、界面刷新需要控制,否则改变窗口大小,会看到背景。控制后也会看到,但好很多。

 

 

 

  1. SetReDraw(FALSE)

  2. IF isValid(flash) THEN
  3.     CloseUserObject(flash)
  4.     DESTROY flash
  5. END IF

  6. flash = CREATE uo_flash

  7. flash.width = newwidth
  8. flash.ole_1.width = newwidth
  9. flash.height = newheight
  10. flash.ole_1.height = newheight

  11. OpenuserObject(flash,0,0)

  12. SetReDraw(TRUE)

    不知道有没有其它好的处理办法?

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值