天天看点

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)

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