• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面

            做過(guò)界面開(kāi)發(fā)的人想必都清楚如果要用VC++來(lái)開(kāi)發(fā)漂亮的程序界面其難度真是苦不堪言, 當(dāng)然VC++可以作出漂亮的界面但要投入大量的人力和時(shí)間其代碼量可以用海量來(lái)形容。BUG自然也就不計(jì)其數(shù)。本文主要介紹如何采用VC++結(jié)合FLASH在短時(shí)間內(nèi)以及很少的人力投入的情況開(kāi)發(fā)出精美漂亮的軟件界面。在本例中VC++主要進(jìn)行相關(guān)數(shù)據(jù)邏輯及業(yè)務(wù)處理,F(xiàn)LASH則進(jìn)行相關(guān)的界面表現(xiàn)。FLASH和VC++之間采用XML流通信。VC++的XML解析庫(kù)為開(kāi)源的TinyXml解析庫(kù)。 本實(shí)例的開(kāi)發(fā)環(huán)境為visual studio 2003 + FLASH8.0。其效果圖如下:



















            下面將進(jìn)行詳細(xì)介紹:
            1、首先建一個(gè)基于MFC的對(duì)話(huà)框應(yīng)用程序。
            2、在對(duì)話(huà)框中插入名為Shockwave Flash Object的ActiveX控件.
            3、為該FLASH控件添加相應(yīng)的變量即FSCommand消息處理函數(shù).
            4、在OnInitDialog()函數(shù)添加如下代碼將相關(guān)數(shù)據(jù)傳給FLASH界面
             1    // TODO: 在此添加額外的初始化代碼
             2    //加載flash界面
             3    char szBuf[256];
             4    string szXml;
             5
             6    CString szFlashPath(m_FlashCtrl.GetModulePath());
             7    szFlashPath += "演示界面.swf";
             8
             9    m_FlashCtrl.LoadMovie(0, szFlashPath);
            10    MoveWindow(00490345);
            11    m_FlashCtrl.MoveWindow(00490345);
            12
            13    //設(shè)置標(biāo)題欄
            14    TiXmlElement xRoot("win_app");
            15    sprintf(szBuf, "%u"0xf0000006);
            16    xRoot.SetAttribute("style", szBuf);
            17    xRoot.SetAttribute("event"13);
            18
            19    TiXmlElement xItem("item");
            20    xItem.SetAttribute("title""我的測(cè)試程序");
            21    xRoot.InsertEndChild(xItem);
            22    szXml << xRoot;
            23    m_FlashCtrl.SetVariable("_root.g_Protocol.win_data", szXml.c_str());
            24
            25    //設(shè)置組合框的數(shù)據(jù)
            26    xRoot.Clear();
            27    szXml.clear();
            28    xRoot.SetAttribute("event"76);
            29
            30    TiXmlElement xQuery("query");
            31    xQuery.SetAttribute("sel_item"1);
            32    //xRoot.InsertEndChild(xQuery);
            33
            34    xItem.RemoveAttribute("title");
            35    xItem.SetAttribute("info""武林外傳");
            36    xQuery.InsertEndChild(xItem);
            37
            38    xItem.SetAttribute("info""西游記");
            39    xQuery.InsertEndChild(xItem);
            40
            41    xItem.SetAttribute("info""三國(guó)演義");
            42    xQuery.InsertEndChild(xItem);
            43
            44    xItem.SetAttribute("info""紅樓夢(mèng)");
            45    xQuery.InsertEndChild(xItem);
            46
            47    xItem.SetAttribute("info""魔法英雄");
            48    xQuery.InsertEndChild(xItem);
            49    xRoot.InsertEndChild(xQuery);
            50
            51    szXml << xRoot;
            52     m_FlashCtrl.SetVariable("_root.g_Protocol.win_data", szXml.c_str());
            53
            54    //設(shè)置列表框數(shù)據(jù)
            55    xRoot.Clear();
            56    xQuery.Clear();
            57    szXml.clear();
            58    xRoot.SetAttribute("event"77);
            59    xQuery.SetAttribute("sel_item"1);
            60    
            61    xItem.SetAttribute("info""漢皇重色思傾國(guó)");
            62    xQuery.InsertEndChild(xItem);
            63
            64    xItem.SetAttribute("info""御宇多年求不得");
            65    xQuery.InsertEndChild(xItem);
            66
            67    xItem.SetAttribute("info""楊家有女初長(zhǎng)成");
            68    xQuery.InsertEndChild(xItem);
            69
            70    xItem.SetAttribute("info""養(yǎng)在深閨人未識(shí)");
            71    xQuery.InsertEndChild(xItem);
            72
            73    xItem.SetAttribute("info""天生麗質(zhì)難自棄");
            74    xQuery.InsertEndChild(xItem);
            75
            76    xRoot.InsertEndChild(xQuery);
            77
            78    szXml << xRoot;
            79    m_FlashCtrl.SetVariable("_root.g_Protocol.win_data", szXml.c_str());
            5、在OnFsCommand()中處理FLASH發(fā)來(lái)的消息.
             1void CUIShowDlg::OnFsCommand(LPCTSTR command, LPCTSTR args)
             2{
             3    try
             4    {
             5        int nEvent = 0;
             6        TiXmlDocument xmlData;
             7        xmlData.Parse(command);
             8        if (xmlData.Error())
             9        {
            10            throw (__LINE__);
            11        }

            12
            13        TiXmlElement *pRoot = xmlData.FirstChildElement();
            14        if (NULL == pRoot)
            15        {
            16            throw (__LINE__);
            17        }

            18        pRoot->Attribute("event"&nEvent);
            19
            20        switch(nEvent)
            21        {
            22        case 0xff000000:            //移動(dòng)窗口消息
            23            SendMessage(WM_NCLBUTTONDOWN, HTCAPTION, 0);
            24            break;
            25        case 0xff000001:            //關(guān)閉窗口
            26            EndDialog(0);
            27            break;
            28        case 0xff000003:            //最小化窗口
            29            ShowWindow(SW_MINIMIZE);
            30            break;
            31        default:
            32            break;
            33        }

            34    }

            35    catch ()
            36    {
            37        TRACE("\r\n收到無(wú)效的命令 : %s", command);    
            38    }

            39}

            40
            到此一款精美的軟件界面已經(jīng)開(kāi)發(fā)完成。有興趣的朋友可以下載我的源代碼看看。
            /Files/beifangying/UIShow.rar

            posted on 2008-08-28 14:00 司強(qiáng) 閱讀(9653) 評(píng)論(34)  編輯 收藏 引用

            評(píng)論

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面[未登錄](méi) 2008-08-28 14:17 代李

            不知道這種能否被推廣開(kāi)來(lái)。。。。。。。。。。  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-28 14:38 司強(qiáng)

            當(dāng)然可以, 沒(méi)有什么不可能的...@代李
              回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-28 14:40 二二

            好東西,這樣界面做的就漂亮了..  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-28 14:51 司強(qiáng)

            謝謝, 這樣做界面可以節(jié)省不少時(shí)間而且不會(huì)出現(xiàn)什么斷言,異常之類(lèi)的問(wèn)題@二二
              回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-28 15:46 www.helpsoff.com.cn

            如何實(shí)現(xiàn)跨平臺(tái)?  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-28 17:13 true

            非常漂亮,可執(zhí)行文件的體積有多少?太大的話(huà),就不適合做界面了  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-28 17:34 浪跡天涯

            界面很漂亮,不知Flash部分制作是否麻煩?  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-28 18:38 Bill Hsu

            太強(qiáng)了,
            就是速度不太強(qiáng)  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-28 19:46 RichardHe

            國(guó)外早就有公司做游戲的UI用FLASH..
            http://www.scaleform.com

            要錢(qián)的!
              回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面[未登錄](méi) 2008-08-28 20:54 司強(qiáng)

            主要用于windows平臺(tái)...@www.helpsoff.com.cn
              回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-28 20:55 司強(qiáng)

            體積不大,你可以下載源代碼看看就知道了...@true
              回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-28 21:00 司強(qiáng)

            對(duì)于界面你根本看不到速度慢...@Bill Hsu
              回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-28 23:36 地方

            說(shuō)實(shí)話(huà),這個(gè)界面很惡俗…………  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-29 09:18 txw

            天晴數(shù)碼的游戲《魔域》,《機(jī)戰(zhàn)》的登錄界面都是Flash做的。非常漂亮。用Flash做界面真的很適用于游戲。c++只需處理業(yè)務(wù)邏輯,剩下的UI全部交給Flash,F(xiàn)lash也只需要寫(xiě)些簡(jiǎn)單的ActionScript腳本就夠了。  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-29 09:19 txw

            甚至可以把Flash視頻渲染到3D場(chǎng)景里,你可以想象一下邊玩游戲,邊看奧運(yùn)是多么舒服的事情。哈哈,扯遠(yuǎn)了。。。。  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-29 12:40 司強(qiáng)

            支持仁兄...@txw
              回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-29 23:26 大大

            教育網(wǎng)的“快門(mén)”就這這樣搞的  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-08-31 21:37 wx

            點(diǎn)擊右鍵出現(xiàn)什么菜單?  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-09-02 02:31

            那還不如全部用flash做算了!  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-09-03 10:05 biinwi

            界面能能放大縮小嗎?  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2008-09-05 16:08 cplayer

            如果能把兩者關(guān)系到轉(zhuǎn)過(guò)來(lái)還不錯(cuò)

            因?yàn)槲蚁M麍?zhí)行的是swf.

            如果這樣,就可以通過(guò)其他方式把數(shù)據(jù)處理放到c/c++程序,比如通過(guò)網(wǎng)絡(luò).  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2009-02-02 23:15 catasthophe

            司強(qiáng)兄這個(gè)方法不錯(cuò),試了下,想問(wèn)一下程序窗口拖拽是怎么實(shí)現(xiàn)的,我試了很多鼠標(biāo)事件都沒(méi)成功,MOUSE_MOVE時(shí)間移動(dòng)了但是必須移動(dòng)著拖動(dòng)窗口''!,還往賜教  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2009-02-06 00:27 司強(qiáng)

            我的文章里有提到,就在這篇文章里。其實(shí)就是一條系統(tǒng)消息@catasthophe
              回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2009-04-14 17:01 DDGG

            非常棒!可以提供Flash源文件.fla看一下嗎?  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2009-05-10 17:07 kjb_A_A

            不知道對(duì)與swf文件有什么要求沒(méi)有,要是有fla源碼就更好了!謝謝!如果方便的話(huà)麻煩大哥發(fā)到“kjb098@163.com”不勝感激!  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2009-05-10 17:09 kjb_A_A

            順便問(wèn)一下,要做成不規(guī)則界面怎么辦?背景不透明呀  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2009-08-26 09:50 unique

            為什么我的編譯失敗啊?
            UIShow.obj : error LNK2001: unresolved external symbol "public: __thiscall CUIShowDlg::CUIShowDlg(class CWnd *)" (??0CUIShowDlg@@QAE@PAVCWnd@@@Z)
            UIShow.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall ShockwaveFlash::~ShockwaveFlash(void)" (??1ShockwaveFlash@@UAE@XZ)
            nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
            nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
            libcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
            Debug/UIShow.exe : fatal error LNK1120: 5 unresolved externals  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面[未登錄](méi) 2009-08-26 22:49 司強(qiáng)

            你的系統(tǒng)安裝FLASH插件了沒(méi)有??  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2010-05-05 11:19 QTM

            程序有點(diǎn)問(wèn)題,主要是對(duì)事件捕獲上用的是有符號(hào)整數(shù)
            void CUIShowDlg::OnFsCommand(LPCTSTR command, LPCTSTR args)

            unsigned int nEvent = 0; 改為了unsigned
            同時(shí)修改代碼:

            double dEventTmp = 0;

            dEventTmp=atof(pRoot->Attribute("event"));
            nEvent=dEventTmp;  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面[未登錄](méi) 2010-09-08 14:56

            非常的好~~  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2011-03-02 15:35 dddddddd

            henhaohaoha  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2011-05-15 10:48 王志海

            我現(xiàn)在的窗口移動(dòng)不能實(shí)現(xiàn)!因?yàn)椴恢繤LASH文件怎么處理的,請(qǐng)指點(diǎn)!  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2011-08-15 09:20 陳隆

            支持,頂一下  回復(fù)  更多評(píng)論   

            # re: 談VC++結(jié)合FLASH開(kāi)發(fā)精美程序界面 2013-03-19 23:35 lhy__

            無(wú)法移動(dòng)窗口請(qǐng)改下代碼
            case 0xff000000: //移動(dòng)窗口消息
            ReleaseCapture();
            SendMessage(WM_SYSCOMMAND,SC_MOVE|HTCAPTION,0);
            //SendMessage(WM_NCLBUTTONDOWN, HTCAPTION, 0);
            break;  回復(fù)  更多評(píng)論   


            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            <2008年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(6)

            隨筆檔案

            友情鏈接

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久国产精品-久久精品| 精品久久久久久中文字幕大豆网 | 精品久久久久久久无码| 久久一日本道色综合久久| 久久国产精品国产自线拍免费| 伊人久久综合热线大杳蕉下载| 欧美日韩中文字幕久久久不卡| 无码国内精品久久人妻| AAA级久久久精品无码区| 亚洲伊人久久综合中文成人网| 精品久久久噜噜噜久久久| 久久精品国产72国产精福利| 亚洲AV无一区二区三区久久| 国产精品99久久久久久猫咪| 久久精品国产久精国产一老狼| 伊人久久大香线蕉精品| 久久久久久久久无码精品亚洲日韩| 国产成人综合久久精品尤物| 久久天天躁狠狠躁夜夜avapp | 亚洲国产天堂久久久久久| 成人免费网站久久久| 久久亚洲日韩看片无码| 久久99精品国产麻豆不卡| 久久91精品国产91久久麻豆| 伊人久久无码中文字幕| 久久久久无码中| 久久精品中文字幕有码| 99久久婷婷国产一区二区| 97久久国产亚洲精品超碰热| 久久久久AV综合网成人| 久久丫精品国产亚洲av| 日产精品久久久久久久性色| 久久精品国产亚洲AV香蕉| 午夜精品久久久久成人| 欧美精品一区二区久久| 色欲综合久久躁天天躁| 久久久精品人妻无码专区不卡| 国产免费久久久久久无码| 精品久久久久久久中文字幕| 久久国产精品一区| 综合久久给合久久狠狠狠97色 |