• <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++結合FLASH開發精美程序界面

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



















            下面將進行詳細介紹:
            1、首先建一個基于MFC的對話框應用程序。
            2、在對話框中插入名為Shockwave Flash Object的ActiveX控件.
            3、為該FLASH控件添加相應的變量即FSCommand消息處理函數.
            4、在OnInitDialog()函數添加如下代碼將相關數據傳給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    //設置標題欄
            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""我的測試程序");
            21    xRoot.InsertEndChild(xItem);
            22    szXml << xRoot;
            23    m_FlashCtrl.SetVariable("_root.g_Protocol.win_data", szXml.c_str());
            24
            25    //設置組合框的數據
            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""三國演義");
            42    xQuery.InsertEndChild(xItem);
            43
            44    xItem.SetAttribute("info""紅樓夢");
            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    //設置列表框數據
            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""漢皇重色思傾國");
            62    xQuery.InsertEndChild(xItem);
            63
            64    xItem.SetAttribute("info""御宇多年求不得");
            65    xQuery.InsertEndChild(xItem);
            66
            67    xItem.SetAttribute("info""楊家有女初長成");
            68    xQuery.InsertEndChild(xItem);
            69
            70    xItem.SetAttribute("info""養在深閨人未識");
            71    xQuery.InsertEndChild(xItem);
            72
            73    xItem.SetAttribute("info""天生麗質難自棄");
            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發來的消息.
             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:            //移動窗口消息
            23            SendMessage(WM_NCLBUTTONDOWN, HTCAPTION, 0);
            24            break;
            25        case 0xff000001:            //關閉窗口
            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收到無效的命令 : %s", command);    
            38    }

            39}

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

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

            評論

            # re: 談VC++結合FLASH開發精美程序界面[未登錄] 2008-08-28 14:17 代李

            不知道這種能否被推廣開來。。。。。。。。。。  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-28 14:38 司強

            當然可以, 沒有什么不可能的...@代李
              回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-28 14:40 二二

            好東西,這樣界面做的就漂亮了..  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-28 14:51 司強

            謝謝, 這樣做界面可以節省不少時間而且不會出現什么斷言,異常之類的問題@二二
              回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-28 15:46 www.helpsoff.com.cn

            如何實現跨平臺?  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-28 17:13 true

            非常漂亮,可執行文件的體積有多少?太大的話,就不適合做界面了  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-28 17:34 浪跡天涯

            界面很漂亮,不知Flash部分制作是否麻煩?  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-28 18:38 Bill Hsu

            太強了,
            就是速度不太強  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-28 19:46 RichardHe

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

            要錢的!
              回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面[未登錄] 2008-08-28 20:54 司強

            主要用于windows平臺...@www.helpsoff.com.cn
              回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-28 20:55 司強

            體積不大,你可以下載源代碼看看就知道了...@true
              回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-28 21:00 司強

            對于界面你根本看不到速度慢...@Bill Hsu
              回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-28 23:36 地方

            說實話,這個界面很惡俗…………  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-29 09:18 txw

            天晴數碼的游戲《魔域》,《機戰》的登錄界面都是Flash做的。非常漂亮。用Flash做界面真的很適用于游戲。c++只需處理業務邏輯,剩下的UI全部交給Flash,Flash也只需要寫些簡單的ActionScript腳本就夠了。  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-29 09:19 txw

            甚至可以把Flash視頻渲染到3D場景里,你可以想象一下邊玩游戲,邊看奧運是多么舒服的事情。哈哈,扯遠了。。。。  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-29 12:40 司強

            支持仁兄...@txw
              回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-29 23:26 大大

            教育網的“快門”就這這樣搞的  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-08-31 21:37 wx

            點擊右鍵出現什么菜單?  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-09-02 02:31

            那還不如全部用flash做算了!  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-09-03 10:05 biinwi

            界面能能放大縮小嗎?  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2008-09-05 16:08 cplayer

            如果能把兩者關系到轉過來還不錯

            因為我希望執行的是swf.

            如果這樣,就可以通過其他方式把數據處理放到c/c++程序,比如通過網絡.  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2009-02-02 23:15 catasthophe

            司強兄這個方法不錯,試了下,想問一下程序窗口拖拽是怎么實現的,我試了很多鼠標事件都沒成功,MOUSE_MOVE時間移動了但是必須移動著拖動窗口''!,還往賜教  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2009-02-06 00:27 司強

            我的文章里有提到,就在這篇文章里。其實就是一條系統消息@catasthophe
              回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2009-04-14 17:01 DDGG

            非常棒!可以提供Flash源文件.fla看一下嗎?  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2009-05-10 17:07 kjb_A_A

            不知道對與swf文件有什么要求沒有,要是有fla源碼就更好了!謝謝!如果方便的話麻煩大哥發到“kjb098@163.com”不勝感激!  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2009-05-10 17:09 kjb_A_A

            順便問一下,要做成不規則界面怎么辦?背景不透明呀  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 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  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面[未登錄] 2009-08-26 22:49 司強

            你的系統安裝FLASH插件了沒有??  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2010-05-05 11:19 QTM

            程序有點問題,主要是對事件捕獲上用的是有符號整數
            void CUIShowDlg::OnFsCommand(LPCTSTR command, LPCTSTR args)

            unsigned int nEvent = 0; 改為了unsigned
            同時修改代碼:

            double dEventTmp = 0;

            dEventTmp=atof(pRoot->Attribute("event"));
            nEvent=dEventTmp;  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面[未登錄] 2010-09-08 14:56

            非常的好~~  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2011-03-02 15:35 dddddddd

            henhaohaoha  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2011-05-15 10:48 王志海

            我現在的窗口移動不能實現!因為不知道FLASH文件怎么處理的,請指點!  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2011-08-15 09:20 陳隆

            支持,頂一下  回復  更多評論   

            # re: 談VC++結合FLASH開發精美程序界面 2013-03-19 23:35 lhy__

            無法移動窗口請改下代碼
            case 0xff000000: //移動窗口消息
            ReleaseCapture();
            SendMessage(WM_SYSCOMMAND,SC_MOVE|HTCAPTION,0);
            //SendMessage(WM_NCLBUTTONDOWN, HTCAPTION, 0);
            break;  回復  更多評論   

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

            導航

            統計

            常用鏈接

            留言簿(6)

            隨筆檔案

            友情鏈接

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久99精品久久久久久久不卡| 精品视频久久久久| 麻豆av久久av盛宴av| 国内精品伊人久久久影院| 久久综合久久自在自线精品自| 精品久久人妻av中文字幕| 国产综合免费精品久久久| 久久只有这精品99| 精品久久久久久无码不卡| 亚洲精品高清国产一线久久| 久久狠狠色狠狠色综合| 久久久久久久久波多野高潮| 国产女人aaa级久久久级| 久久中文骚妇内射| 欧洲国产伦久久久久久久| 色偷偷888欧美精品久久久| 日韩人妻无码精品久久久不卡| 久久久久国色AV免费观看 | 久久99国产精品一区二区| 夜夜亚洲天天久久| 久久无码AV中文出轨人妻| 久久国产精品久久国产精品| 久久AV无码精品人妻糸列| 久久99精品久久久久久久不卡| 国产亚州精品女人久久久久久| 精品国产乱码久久久久久1区2区 | 久久综合亚洲色HEZYO社区| 国产亚洲精久久久久久无码| 人人妻久久人人澡人人爽人人精品| 国产A级毛片久久久精品毛片| 国产精品无码久久久久久| 亚洲AV成人无码久久精品老人 | 久久久久国产| 国产69精品久久久久9999| 国产成人精品久久亚洲| 日本福利片国产午夜久久| 久久国产精品久久| 热re99久久精品国产99热| 亚洲国产精品久久久久婷婷软件| 久久国产精品-国产精品| 精品久久久久久国产三级|