国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Flex與Win32通信實(shí)例之ExternalInterface
項(xiàng)目中要實(shí)現(xiàn)Flex打開文件夾選擇框(Flex做為桌面程序的UI),沒辦法,如果不用AIR只能在下面加一層Container了。網(wǎng)上搜來搜去差不多都是講FSCommand怎樣與VC++交互,可是FSCommand不能及時(shí)返回值呀。經(jīng)過一番摸索,終于調(diào)通了ExternalInterface在VC++中的處理流程,看代碼。

 

Cpp代碼
  1. void CMyBicapDlg::OnFlashCallShockwaveflash1(LPCTSTR request)   
  2. {  
  3.     // TODO: Add your control notification handler code here  
  4.     // "<invoke name='%s' returntype='xml'><arguments><string>%s</string></arguments></invoke>"  
  5.       
  6.     // parse request  
  7.     TiXmlDocument request_xml;  
  8.     request_xml.Parse(request);  
  9.     const char* request_name = request_xml.RootElement()->Attribute("name");  
  10.       
  11.     if (strcmp(request_name,"savedVideosDirectory") == 0 || strcmp(request_name,"bufferDirectory") == 0 || strcmp(request_name,"preferredExportDirectory") == 0)  
  12.     {  
  13.         // choose path  
  14.         CoInitialize(NULL);  
  15.         BROWSEINFO bi;  
  16.         bi.hwndOwner = this->GetSafeHwnd();  
  17.         bi.pidlRoot = NULL;  
  18.         bi.pszDisplayName = NULL;  
  19.         bi.lpszTitle = NULL;  
  20.         bi.ulFlags = BIF_BROWSEFORCOMPUTER|BIF_RETURNONLYFSDIRS|BIF_STATUSTEXT;  
  21.         bi.lpfn = NULL;  
  22.         LPCITEMIDLIST pidl = SHBrowseForFolder(&bi);  
  23.         if(pidl != NULL)  
  24.         {  
  25.             TCHAR tpath[MAX_PATH] = _T("");  
  26.             BOOL bresult = SHGetPathFromIDList(pidl, tpath);  
  27.             if (bresult)  
  28.             {  
  29.                 std::string re_value = "<string>";  
  30.                 re_value = re_value+tpath+"</string>";  
  31.                 m_FlashPlayer.SetReturnValue(re_value.c_str());  
  32.             }  
  33.         }  
  34.   
  35.         CoUninitialize();  
  36.     }  
  37.       
  38. }  

 

首先,需要在項(xiàng)目中嵌入Flash player插件,網(wǎng)上有很多例子。另外Flex也要寫好代碼,這里略掉。

  1. 添 加一個(gè)ExternalInterface的事件處理函數(shù),對(duì)于Flash player來講就是FlashCall事件(跟FSCommand不同的),這里的事件處理函數(shù)是void CMyBicapDlg::OnFlashCallShockwaveflash1(LPCTSTR request)。沒有返回值(下面會(huì)講到),參數(shù)是一個(gè)XML格式的字符串。格式是"<invoke name='%s' returntype='xml'><arguments><string>%s</string>< /arguments></invoke>",去查查幫助就知道了。
  2. 處理request:標(biāo)準(zhǔn)C++沒有處理XML的庫,我去下載了tinyxml,小巧好用。下面就是按照個(gè)人需要處理request了,我這里是,打開一個(gè)文件夾選擇對(duì)話框然后選擇一個(gè)路徑。
  3. 返 回值。事件處理函數(shù)是沒有返回值的,但是flash player提供了一個(gè)方法:m_FlashPlayer.SetReturnValue(re_value.c_str());,專門傳遞返回值,格式 是<string>%s</string>(也可以是別的AS結(jié)構(gòu),具體看幫助)。

需要提醒的是,在處理期間要block掉Flex,ExternalInterface.call是有返回值的,如果不阻塞Flex,可能返回就是NULL,呵呵,不知道深層原因。另外,反過來調(diào)用格式也是一樣的。

調(diào)試環(huán)境:win xp, VC++6.0, Flex builder 2.0

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Communicate betwen C# and an embeded Flash application ? ADM Blog
Flex 與 javascript 交互-wangcheng -JavaEye技術(shù)社區(qū)
VC彈出選擇“文件路徑”和選擇“文件夾路徑”對(duì)話框
Tomcat及MySQL中文亂碼問題解決方案總覽
用JDOM操作XML文件
flash與client交互
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服