• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        在VC++中借助DHTML增加特效

        在VC++中借助DHTML增加特效

        更新時間:2022-05-08 文章作者:未知 信息來源:網絡 閱讀次數:

        信息產業部電子第二十二研究所青島分所 郎銳

        引言
        隨著網絡技術的發展,網頁的實現語言也由最初靜止的超文本標識語言(HTML)發展到了現在廣泛使用的動態超文本標識語言(DHTML),由于在這種新標識語言中可以使用CSS(層疊式樣式表單)、JavaScript和VBScript等腳本語言以及其他的一些外部COM控件因此其可編程能力得到大大的加強,尤其是Java語言的興起更起到推波助瀾的作用。由于Java是一種功能非常強大的網絡語言,因此在網頁設計時往往借助其來實現一些實現起來頗為復雜但卻十分美觀別致的網頁特效。雖然在另一種功能強大且素有"Windows 外科手術刀"之稱的VC++下對于某些特效也可以通過編程實現,但實現過程往往比較復雜,比如
        模擬焰火或煙霧的運動過程(動畫)就需要用到DirectDraw等高級編程技術,其實現難度遠大于網頁特效的實現過程。正因如此,本文就對如何把實現起來較簡單的用DHTML開發的網頁特效移植到VC++下展開討論。

        1 DHTML實現的網頁特效
        編寫網頁的HTML/DHTML語言區別于以往的編程語言的一個最大特點就是源碼公開,當看到一個好的網頁時可以通過"查看源文件"看到作者是如何組織、設計該網頁的,而且可以從代碼級上對其進行分析。當我們看到其他一些好的應用程序時只能根據自己的編程經驗和程序的實現功能來對程序的設計思路和實現方法進行猜測,而不少好的功能在無源碼的情況下無法再次編程實現以為我所用,而這些在網頁設計上則不存在任何問題,可以通過參考他人寫的比較好的代碼來提高自己的設計水平。
        前面已經提到過,DHTML語言的實現可以通過CSS、各種腳本語言、控件和JavaApplet等予以實現,其中JavaApplet可以輕易設計出一些非常令人嘆服的網頁特效。下圖所示的網頁就是一個用JavaApplet插件實現的非常逼真的模擬焰火運動過程的特效網頁。可以通過查看源文件來觀察其實現代碼:

        ……

        ……
        其中FireWork.class是整個模擬過程的核心,其部分主要源碼如下:

        ……
        public class FireWork extends java.applet.Applet
        {
        public void init()
        {
        int width,height;
        symantec.itools.lang.Context.setApplet(this);
        //{{INIT_CONTROLS
        setLayout(null);
        width = this.size().width;
        height = this.size().height;
        setSize(width,height);
        setForeground(new Color(16711935));
        setBackground(new Color(0));
        firework1 = new symantec.itools.multimedia.Firework();
        firework1.setBounds(0,0,width,height);
        add(firework1);
        //}}
        }
        //{{DECLARE_CONTROLS
        symantec.itools.multimedia.Firework firework1;
        //}}
        }
        ……
        其需要有IE 4.0、Netscape 4.03或更高版本瀏覽器的支持。





        2 在VC++中引入特效網頁
        在DHTML下可以借助.class文件以插件的形式輕松實現對焰火的真實模擬,而如要通過VC++來實現類似的效果,雖然也可以通過DirectX技術中的DirectDraw技術加以實現,但僅對于該技術本身而言就足以使一個普通程序員感到吃力,更何況此時尚沒有把火焰的模擬算法考慮在內!既然用DHTML實現網頁特效比較容易,那么可以設想:先通過DHTML做好一含有指定特效的網頁,然后想辦法把該網頁通過編程的手段將其嵌入到VC++設計的程序中,即用混合編程的方法實現在VC++下的特效設計。
        混合編程可以很好的把兩種或更多語言的優點融合在一起,通過優勢互補實現單一語言所不能實現的特殊功能。VC++憑借其強大的編程手段可以很好地同VB、Delphi甚至匯編進行混合編程,以期能達到最佳效果。對于HTML/DHTML語言,VC++ 6.0在MFC(微軟基本類庫)中提供有一個從CView派生出來的子類CHtmlView。在用VC++進行程序設計時可以將視類從CHtmlView中派生,以繼承其對HTML/DHTML的支持特性,從而能很簡便方式實現對網頁的嵌入。

        2.1 程序框架的建立
        在建立程序框架時可以根據需要選取不同的形式,但必須保證在最后一步選則以CHtmlView為基類。如果沒有選擇,或要使已有程序具備上述功能也可以通過搜尋與替換將視類頭文件和源文件中所有的CView替換成CHtmlView,以完成基類的轉換。

        2.2 特效網頁的嵌入
        通過MSDN幫助查看其成員函數可以得知Navigate2();函數可以在客戶區顯示指定的網頁(網絡上的或本地的)該函數的原形如下:

        void Navigate2( LPITEMIDLIST pIDL,
        DWORD dwFlags = 0,
        LPCTSTR lpszTargetFrameName = NULL );

        void Navigate2( LPCTSTR lpszURL,
        DWORD dwFlags = 0,
        LPCTSTR lpszTargetFrameName = NULL,
        LPCTSTR lpszHeaders = NULL,
        LPVOID lpvPostData = NULL,
        DWORD dwPostDataLen = 0 );

        void Navigate2( LPCTSTR lpszURL,
        DWORD dwFlags,
        CByteArray& baPostedData,
        LPCTSTR lpszTargetFrameName = NULL,
        LPCTSTR lpszHeader = NULL );
        盡管原形各不相同,但最主要的參數是第一個參數,它指定了網絡上網頁的URL(統一資源定位符)或是本地機上的網頁的存放路徑,需要特別指出,這里的存放路徑必須是完整的絕對路徑,相對路徑將會導致失敗。因此為了保證程序在路徑改變后能正常工作,需要在顯示網頁之前通過GetModuleFileName()函數動態判斷程序的當前存放路徑。下面將特效網頁嵌入部分的主要實現代碼介紹如下:

        ……
        //獲取到當前應用程序存放的全路徑,如C:\Windows\nope.exe形式
        char exeFullPath[MAX_PATH];
        GetModuleFileName(NULL,exeFullPath,MAX_PATH);
        //將路徑分離出來,得到如C:\Windows\的形式
        CString string;





        string.Format("%s",exeFullPath);
        exeFullPath[string.GetLength()-9]='\0';
        string.Format("%s",exeFullPath);
        //在路徑后添加特效網頁的路徑,得到如C:\Windows\test.html的形式
        string+="test.html";
        //在客戶區顯示具有特效的網頁
        Navigate2(string,NULL,NULL);
        ……
        經過DHTML網頁嵌入后的VC++程序的運行效果如上圖所示,在程序中適當的應用網頁特效可以起到美化界面,加
        強人機友好程度等較好的效果。

        3 小結
        本文通過對CHtmlView的派生繼承實現了在VC++下嵌入DHTML語言,并可借助所嵌入的DHTML語言實現一些在VC++中難以做到的或是實現起來頗為復雜的特效,并以此豐富程序的人機界面。本文所述思想具有較好的通用性。程序在Windows 98下,由Microsoft Visual C++ 6.0編譯通過,瀏覽器為IE 6.0。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 免费一级特黄特色大片在线 | 亚洲精品无码AV人在线播放| 亚洲av无码片vr一区二区三区| 999国内精品永久免费视频| 久久av无码专区亚洲av桃花岛| 永久免费AV无码网站国产| 国产亚洲人成无码网在线观看| 青青操在线免费观看| 亚洲精品无码永久在线观看你懂的| 中文字幕高清免费不卡视频| 亚洲精品乱码久久久久久| 久久99国产综合精品免费| 亚洲精品不卡视频| 久久电影网午夜鲁丝片免费| 亚洲人成未满十八禁网站| 亚洲AV伊人久久青青草原| 最近免费字幕中文大全| 亚洲视频小说图片| 成全影视免费观看大全二| 一区二区三区精品高清视频免费在线播放| 日韩精品成人亚洲专区| 二区久久国产乱子伦免费精品| 亚洲AV本道一区二区三区四区| 国产精品视频免费观看| 亚洲AV成人无码久久WWW| 狠狠色婷婷狠狠狠亚洲综合| 99久9在线|免费| 亚洲精品无码成人片久久不卡| 国产免费人视频在线观看免费| 国产精品一区二区三区免费| 久久精品亚洲中文字幕无码麻豆| 成人特黄a级毛片免费视频| 曰批全过程免费视频观看免费软件| 亚洲综合色自拍一区| 毛片a级毛片免费观看免下载| 特级aa**毛片免费观看| 久久精品国产亚洲AV麻豆~| 久久电影网午夜鲁丝片免费| 一级做a爱过程免费视频高清| 亚洲电影免费在线观看| 日韩一级视频免费观看|