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

        當前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

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

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

        更新時間:2022-05-08 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        信息產(chǎn)業(yè)部電子第二十二研究所青島分所 郎銳

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

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

        ……

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

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

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

        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 );
        盡管原形各不相同,但最主要的參數(shù)是第一個參數(shù),它指定了網(wǎng)絡(luò)上網(wǎng)頁的URL(統(tǒng)一資源定位符)或是本地機上的網(wǎng)頁的存放路徑,需要特別指出,這里的存放路徑必須是完整的絕對路徑,相對路徑將會導(dǎo)致失敗。因此為了保證程序在路徑改變后能正常工作,需要在顯示網(wǎng)頁之前通過GetModuleFileName()函數(shù)動態(tài)判斷程序的當前存放路徑。下面將特效網(wǎng)頁嵌入部分的主要實現(xiàn)代碼介紹如下:

        ……
        //獲取到當前應(yīng)用程序存放的全路徑,如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);
        //在路徑后添加特效網(wǎng)頁的路徑,得到如C:\Windows\test.html的形式
        string+="test.html";
        //在客戶區(qū)顯示具有特效的網(wǎng)頁
        Navigate2(string,NULL,NULL);
        ……
        經(jīng)過DHTML網(wǎng)頁嵌入后的VC++程序的運行效果如上圖所示,在程序中適當?shù)膽?yīng)用網(wǎng)頁特效可以起到美化界面,加
        強人機友好程度等較好的效果。

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

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

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 中文字幕亚洲无线码| 国产自产拍精品视频免费看| 亚洲精品午夜无码电影网| 一级黄色片免费观看| 亚洲人成网站观看在线播放| 黄页网站在线视频免费| 国产成人在线观看免费网站| 亚洲av日韩专区在线观看| 亚洲国产精品成人网址天堂| 男人和女人高潮免费网站| 久久久亚洲精品蜜桃臀| 国产免费福利体检区久久| 亚洲日韩一页精品发布| 国产免费拔擦拔擦8X高清在线人| 亚洲AV无码一区二区乱子伦 | 亚洲第一永久在线观看| h在线观看视频免费网站| 亚洲人成影院午夜网站| 大学生一级特黄的免费大片视频 | 毛片免费在线观看| 亚洲午夜久久久精品影院| 美女被cao免费看在线看网站| 亚洲aⅴ天堂av天堂无码麻豆| 亚洲国产91精品无码专区| 最新亚洲成av人免费看| 亚洲天天在线日亚洲洲精| 久九九精品免费视频| 亚洲heyzo专区无码综合| ZZIJZZIJ亚洲日本少妇JIZJIZ | 99久久免费国产香蕉麻豆| 亚洲精品乱码久久久久蜜桃| 中文字幕亚洲不卡在线亚瑟| 国产精成人品日日拍夜夜免费| 亚洲日产2021三区在线| 国产中文字幕免费观看| 日韩成人免费视频| 亚洲AV无码国产精品永久一区| 亚洲乱码国产乱码精品精| 性xxxxx免费视频播放| 一级做受视频免费是看美女| 国产亚洲精品精华液|