關(guān)于vb中插flash的一些問(wèn)題

          關(guān)于vb中插flash的一些問(wèn)題

          該帖是精華帖,但您尚未登錄,所以您現(xiàn)在看到的是共享版
          本帖最后由 阿達(dá) 于 2010-3-17 15:20 編輯

          用flash做界面很漂亮,但是用戶(hù)系統(tǒng)很可能沒(méi)有flash,我目前用以下方法處理:

          1. IsObject(CreateObject("shockwaveflash.shockwaveflash"))
          復(fù)制代碼
          判斷用戶(hù)系統(tǒng)是否有flash

          如果有
          1. Public WithEvents shockwaveFlash As VBControlExtender
          2. Set Frm_Main.shockwaveFlash = Frm_Main.Controls.Add("ShockwaveFlash.ShockwaveFlash", "Flash")
          3. Frm_Main.shockwaveFlash.object.LoadMovie 0, App.Path & "ui.swf"
          復(fù)制代碼
          這樣來(lái)動(dòng)態(tài)創(chuàng)建flash控件,好處是這樣程序在用戶(hù)系統(tǒng)沒(méi)有flash的情況下也可以正常運(yùn)行,不會(huì)報(bào)錯(cuò)。

          如果用戶(hù)系統(tǒng)沒(méi)有,就用個(gè)容器,里面放些死的圖片,實(shí)現(xiàn)同樣的功能


          通信方面,flash調(diào)用vb的:
          1. Private Sub shockwaveFlash_ObjectEvent(info As EventInfo)
          2.     Select Case info.Name
          3.         Case "FSCommand"
          4.             'info.EventParameters("command").Value
          5.             'info.EventParameters("args").Value
          6.             '上面兩句可以拿到fscommand的兩個(gè)參數(shù)
          7.         Case Else '其他事件
          8.     End Select
          9. End Sub
          復(fù)制代碼
          flash中 fscommand(xxx, xxx); 就可以啦


          vb調(diào)用flash的:
          1. //flash中增加、聲明一個(gè)回調(diào)函數(shù)供vb調(diào)用
          2. ExternalInterface.addCallback("vbCallBack", vbCallBack);
          3. function vbCallBack(valA:String, valB:String):void
          4. {
          5. //
          6. }

          7. 'vb中這樣搞
          8. shockwaveFlash.object.CallFunction "<invoke name=""vbCallBack"" returntype=""xml""><arguments><string>參數(shù)a</string><string>參數(shù)b</string></arguments></invoke>"
          復(fù)制代碼
          這樣就好啦,就是來(lái)回都只能用string類(lèi)型,如果是圖片,得先base64成字符串,然后傳來(lái)解析。

          另外如果一個(gè)程序中同時(shí)有幾個(gè)flash之間要通信,可以用flash的管道,不需要通過(guò)程序轉(zhuǎn)。



          再付上一個(gè)屏蔽flash右鍵的
          1. Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
          2. Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
          3. Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
          4. Public Const GWL_WNDPROC = -4
          5. Private Const WM_RBUTTONDOWN = &H204
          6. Public ret As Long

          7. Function WindowProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
          8.     If Msg = WM_RBUTTONDOWN Then Exit Function '這里可以還增加自己的代碼用于響應(yīng)flash中的右鍵行為
          9.     WindowProc = CallWindowProc(ret, hwnd, Msg, wParam, lParam)
          10. End Function

          11. '由于vb中flash控件沒(méi)有hwnd,記得delphi中是有的,當(dāng)時(shí)讓我很郁悶,調(diào)用得如下:
          12. ret = SetWindowLong(FindWindowEx(Picture1.hwnd, 0&, "MacromediaFlashPlayerActiveX", vbNullString), GWL_WNDPROC, AddressOf WindowProc)
          復(fù)制代碼
          收工~~~~

          posted on 2011-03-03 08:49 aiaiwoo 閱讀(368) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆分類(lèi)

          文章分類(lèi)

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 水城县| 铁岭市| 浦江县| 漳平市| 蒙山县| 宝鸡市| 泗水县| 红河县| 隆化县| 康平县| 洞头县| 福鼎市| 章丘市| 丰城市| 深州市| 兴隆县| 蛟河市| 山东| 白水县| 灵山县| 尤溪县| 塔河县| 安多县| 星子县| 和林格尔县| 莱州市| 伊金霍洛旗| 阿坝| 巴塘县| 商河县| 建水县| 饶河县| 宜城市| 吐鲁番市| 通城县| 乐至县| 凤山县| 神池县| 拜泉县| 资讯 | 嘉定区|