VC.NET缂栫▼璁插骇涔嬩竷
鍙戝竷: 2008-6-26 23:05 | 浣滆: admin | 鏌ョ湅: 24娆
鎽樿
銆銆鏈鍏堟潵浠嬬粛MFC涓殑"涓妗e瑙"妯″紡锛屽苟涓篤iewer娣诲姞涓涓敤浜庢樉绀篧eb椤电殑瑙嗗浘CWebView锛岀劧鍚庤璁轰袱绉嶆瘮杈冨父鐢ㄧ殑鍗曟枃妗h鍥剧殑鍒囨崲鏂规硶锛屾渶鍚庡杩欎袱绉嶆柟娉曡繘琛屽垎鏋愬拰姣旇緝銆
銆銆MFC"涓妗e瑙"妯″紡
銆銆鎴戜滑鐭ラ亾锛孧FC搴旂敤绋嬪簭鐢ㄤ竴绉嶇紪绋嬫ā寮忎娇绋嬪簭涓暟鎹笌瀹冪殑鏄剧ず褰㈠紡鍜岀敤鎴蜂氦浜掑垎绂诲紑鏉ワ紝杩欑妯″紡灏辨槸"鏂囨。/瑙嗗浘缁撴瀯"銆傚湪鍗曟枃妗e簲鐢ㄧ▼搴忕粨鏋勪腑锛屼竴涓枃妗e搴斾簬涓涓鍥俱備絾鏈夋椂涓涓枃妗e彲鑳介渶瑕佸涓鍥句互鏀瑰彉鏂囨。鏁版嵁鐨勬樉绀烘柟寮忥紝绉颁负"涓妗e瑙"锛孧FC瀵逛簬杩欑"涓妗e瑙"鎻愪緵涓嬪垪涓変釜妯″紡锛
銆銆绗竴绉嶆ā寮忔槸鐢ㄥ湪澶氭枃妗e簲鐢ㄧ▼搴忎腑锛岀敤鍚屼竴涓鍥剧被鍒涘缓澶氫釜瑙嗗浘瀵硅薄锛屽苟鍦ㄥ悇鑷殑绐楀彛涓樉绀恒備緥濡傦紝褰撴垜浠夋嫨"绐楀彛"鑿滃崟鐨"鏂板缓绐楀彛"鍛戒护锛岀▼搴忓氨浼氭墦寮涓涓柊鐨勭獥鍙f樉绀哄嚭鐩稿悓鐨勬枃妗e唴瀹广傚湪鐣岄潰涓婅〃鐜颁负锛屼竴涓鏋剁獥鍙d腑鏈夊涓枃妗g獥鍙o紝濡傚浘1(a)鎵绀恒
銆銆绗簩绉嶆ā寮忔槸鍔ㄦ佸垏鍒嗙獥鍙f柟寮忥紝鍗冲湪鍚屼竴涓枃妗g獥鍙d腑鍒涘缓澶氫釜瑙嗗浘锛岀敤鍚屼竴鏂瑰紡鏉ユ樉绀虹浉鍚岀殑鏂囨。鍐呭銆傚鍥1(b)鎵绀恒
銆銆绗笁绉嶆ā寮忔槸闈欐佸垏鍒嗙獥鍙f柟寮忥紝鍗冲湪鍚屼竴涓枃妗g獥鍙d腑鍒涘缓澶氫釜瑙嗗浘锛屼絾姣忎釜瑙嗗浘鍙敤涓嶅悓鐨勬柟寮忔潵鏄剧ず鏂囨。鍐呭銆傚鍥1(c)鎵绀恒

(a)

(b)

(c)
銆銆鍥1 "涓妗e瑙"鐨勪笁绉嶆ā寮
銆銆浣嗗湪鏈涓墍璁ㄨ鐨"涓妗e瑙"鏄寚鍦ㄥ崟鏂囨。搴旂敤绋嬪簭涓叿浣撳涓鍥剧殑鐗规с傛枃妗g獥鍙f瘡娆″彧鏈変竴涓鍥炬樉绀猴紝浣嗗彲浠ラ氳繃鑿滃崟绛夊懡浠ゅ湪澶氫釜瑙嗗浘涓繘琛屽垏鎹€傛垜浠殑鐩槸灏嗘枃妗e唴瀹瑰湪"鏅氭枃鏈"鍜"HTML娴忚"瑙嗗浘涔嬮棿杩涜鍒囨崲锛屽鍥2(a)鍜2(b)鎵绀恒

(a)

(b)
鍥2 瑙嗗浘鍒囨崲鐨勭粨鏋
銆銆娣诲姞"HTML娴忚"瑙嗗浘
銆銆涓轰簡浣挎垜浠殑杩欎釜鏂囨湰娴忚鍣ㄥ姛鑳芥洿鍔犲己澶э紝鎴戜滑娣诲姞涓涓"HTML娴忚"瑙嗗浘鐢ㄦ潵姝g‘鏄剧ず鍑烘墿灞曞悕涓.htm鎴.html绛夌殑Web椤垫晥鏋溿
銆銆1. 娣诲姞瑙嗗浘绫籆WebView
銆銆鎴戜滑鍏堟潵娣诲姞涓涓鍥剧被CWebView锛屽叿浣撴楠ゅ涓嬶細
銆銆(1) 鍚姩Visual Studio .NET锛屾墦寮涓婁竴璁茬殑鍗曟枃妗e簲鐢ㄧ▼搴忛」鐩甐iewer銆
銆銆(2) 鎵撳紑"椤圭洰"鑿滃崟锛屽崟鍑"娣诲姞绫"锛屽脊鍑"娣诲姞璧勬簮"瀵硅瘽妗嗭紝灞曞紑宸﹁竟鐨勬墍鏈"绫诲埆"锛屽崟鍑"MFC"锛屽湪鍙充晶妯℃澘涓変腑"MFC绫"锛屽鍥3鎵绀恒

鍥3 "娣诲姞绫"瀵硅瘽妗
銆銆(3) 鍗曞嚮"鎵撳紑"鎸夐挳锛屽脊鍑"MFC绫诲悜瀵"瀵硅瘽妗嗐傚湪瀵硅瘽妗嗕腑杈撳叆"绫诲悕"CWebView锛岀劧鍚庡皢鍩虹被閫夋嫨涓篊HtmlView锛孋HtmlView绫诲皝瑁呬簡URL璧勬簮鐨勬祻瑙堝拰閾炬帴绛夊姛鑳姐傚叾瀹冧负榛樿鍊硷紝缁撴灉濡傚浘4鎵绀恒

鍥4 浣跨敤"MFC绫诲悜瀵"
銆銆(4) 鍗曞嚮"瀹屾垚"鎸夐挳銆
銆銆2. 娣诲姞浠g爜骞舵祴璇旵WebView
銆銆銆(1) 鎵撳紑CWebView绫荤殑鎺ュ彛鏂囦欢WebView.h锛屽湪鏈鍓嶉潰鍔犱笂CHtmlView绫荤殑鍖呭惈鏂囦欢"
"銆
銆銆銆(2) 涓篊WebView绫绘坊鍔燨nInitialUpdate鍑芥暟鐨勯噸杞斤紝骞舵坊鍔犲鍥5鍔犳閮ㄥ垎鐨勪唬鐮併

鍥5 鍦∣nInitialUpdate涓坊鍔犵殑浠g爜
銆銆銆(3) 鎵撳紑CViewerApp::InitInstance鍑芥暟锛屽皢CSingleDocTemplate涓殑绗4涓弬鏁扮殑瑙嗗浘绫荤敱鍘熸潵鐨凜ViewerView鏀逛负CWebView銆
銆銆銆(4) 鍦–ViewerApp绫荤殑瀹炵幇鏂囦欢鍓嶉潰鍔犱笂"
"銆
銆銆銆(5) 杩愯绋嬪簭銆傚浘6鏄樉绀烘煇涓枃浠剁殑缁撴灉銆

鍥6 CWebView绫荤殑鏄剧ず鏁堟灉
銆銆銆(6) 鍐嶆妸CViewerApp::InitInstance鍑芥暟涓殑CSingleDocTemplate鍙傛暟CWebView鏀瑰洖鍒癈ViewerView銆
銆銆娣诲姞"HTML娴忚"瑙嗗浘
銆銆涓轰簡浣挎垜浠殑杩欎釜鏂囨湰娴忚鍣ㄥ姛鑳芥洿鍔犲己澶э紝鎴戜滑娣诲姞涓涓"HTML娴忚"瑙嗗浘鐢ㄦ潵姝g‘鏄剧ず鍑烘墿灞曞悕涓.htm鎴.html绛夌殑Web椤垫晥鏋溿
銆銆1. 娣诲姞瑙嗗浘绫籆WebView
銆銆鎴戜滑鍏堟潵娣诲姞涓涓鍥剧被CWebView锛屽叿浣撴楠ゅ涓嬶細
銆銆(1) 鍚姩Visual Studio .NET锛屾墦寮涓婁竴璁茬殑鍗曟枃妗e簲鐢ㄧ▼搴忛」鐩甐iewer銆
銆銆(2) 鎵撳紑"椤圭洰"鑿滃崟锛屽崟鍑"娣诲姞绫"锛屽脊鍑"娣诲姞璧勬簮"瀵硅瘽妗嗭紝灞曞紑宸﹁竟鐨勬墍鏈"绫诲埆"锛屽崟鍑"MFC"锛屽湪鍙充晶妯℃澘涓変腑"MFC绫"锛屽鍥3鎵绀恒

鍥3 "娣诲姞绫"瀵硅瘽妗
銆銆(3) 鍗曞嚮"鎵撳紑"鎸夐挳锛屽脊鍑"MFC绫诲悜瀵"瀵硅瘽妗嗐傚湪瀵硅瘽妗嗕腑杈撳叆"绫诲悕"CWebView锛岀劧鍚庡皢鍩虹被閫夋嫨涓篊HtmlView锛孋HtmlView绫诲皝瑁呬簡URL璧勬簮鐨勬祻瑙堝拰閾炬帴绛夊姛鑳姐傚叾瀹冧负榛樿鍊硷紝缁撴灉濡傚浘4鎵绀恒

鍥4 浣跨敤"MFC绫诲悜瀵"
銆銆(4) 鍗曞嚮"瀹屾垚"鎸夐挳銆
銆銆2. 娣诲姞浠g爜骞舵祴璇旵WebView
銆銆銆(1) 鎵撳紑CWebView绫荤殑鎺ュ彛鏂囦欢WebView.h锛屽湪鏈鍓嶉潰鍔犱笂CHtmlView绫荤殑鍖呭惈鏂囦欢"
"銆
銆銆銆(2) 涓篊WebView绫绘坊鍔燨nInitialUpdate鍑芥暟鐨勯噸杞斤紝骞舵坊鍔犲鍥5鍔犳閮ㄥ垎鐨勪唬鐮併

鍥5 鍦∣nInitialUpdate涓坊鍔犵殑浠g爜
銆銆銆(3) 鎵撳紑CViewerApp::InitInstance鍑芥暟锛屽皢CSingleDocTemplate涓殑绗4涓弬鏁扮殑瑙嗗浘绫荤敱鍘熸潵鐨凜ViewerView鏀逛负CWebView銆
銆銆銆(4) 鍦–ViewerApp绫荤殑瀹炵幇鏂囦欢鍓嶉潰鍔犱笂"
"銆
銆銆銆(5) 杩愯绋嬪簭銆傚浘6鏄樉绀烘煇涓枃浠剁殑缁撴灉銆

鍥6 CWebView绫荤殑鏄剧ず鏁堟灉
銆銆銆(6) 鍐嶆妸CViewerApp::InitInstance鍑芥暟涓殑CSingleDocTemplate鍙傛暟CWebView鏀瑰洖鍒癈ViewerView銆
銆銆(4) 鍦∕ainFrm.h鏂囦欢鐨勫墠闈㈡坊鍔犱笅鍒椾唬鐮侊紝濡傚浘10鎵绀虹殑鍔犳閮ㄥ垎銆

鍥10 鍦∕ainFrm.h涓坊鍔犵殑璇彞
銆銆涓嶅皯浜哄涓婅堪璇彞涓嶇悊瑙o細鏃㈢劧浣跨敤浜嗗寘鍚枃浠讹紝涓轰粈涔堣繕瑕佸湪class CMainFrame鍓嶆坊鍔"class CViewerView;"绛変唬鐮侊紵濡傛灉鐢ㄥ寘鍚枃浠朵唬鏇垮畠锛岃涓嶈锛
銆銆寰堝Visual C 涔︾睄瀵硅繖浜涢棶棰橀伩鑰屼笉璋堬紝浣嗗疄闄呬笂杩欐槸涓涓噸瑕佺殑闂銆傚鏋滀笉鑳界悊瑙d笂杩颁唬鐮侊紝鎴戜滑寰堝彲鑳戒负鏃犳硶閫氳繃缂栬瘧鑰屽ぇ浼よ剳绛嬨傝繖浜涢棶棰樼殑鍑虹幇鏄熀浜庤繖鏍风殑涓浜涗簨瀹烇細鍦ㄦ垜浠敤鏍囧噯C/C 璁捐绋嬪簭鏃讹紝鏈変竴涓師鍒欏嵆涓や釜浠g爜鏂囦欢涓嶈兘鐩镐簰鍖呭惈锛岃屼笖澶氭鍖呭惈杩樹細閫犳垚閲嶅瀹氫箟鐨勯敊璇備负浜嗚В鍐宠繖涓毦棰橈紝Visual C 浣跨敤#pragma once鏉ラ氱煡缂栬瘧鍣ㄥ湪鐢熸垚鏃跺彧鍖呭惈(鎵撳紑)涓娆★紝涔熷氨鏄锛屽湪绗竴娆#include涔嬪悗锛岀紪璇戝櫒閲嶆柊鐢熸垚鏃朵笉浼氬啀瀵硅繖浜涘寘鍚枃浠惰繘琛屽寘鍚(鎵撳紑)鍜岃鍙栵紝鍥犳鎴戜滑鐪嬪埌鍦ㄧ敤鍚戝鍒涘缓鐨勬墍鏈夌被鐨勫ご鏂囦欢涓湁#pragma once璇彞灏变笉浼氳寰楀鎬簡銆傜劧鑰屾鏄敱浜庤繖涓鍙ヨ岄犳垚浜嗗湪绗簩娆#include鍚庣紪璇戝櫒鏃犳硶姝g‘璇嗗埆鎵寮曠敤鐨勭被銆傚洜姝わ紝鎴戜滑鍦ㄧ浉浜掑寘鍚椂杩橀渶瑕佸姞鍏ョ被浼糲lass CViewerView杩欐牱鐨勮鍙ユ潵閫氱煡缂栬瘧鍣ㄨ繖涓被鏄竴涓疄闄呯殑璋冪敤銆
銆銆(5) 閲嶆柊鐢熸垚瑙e喅鏂规鍚庤繍琛岀▼搴忥紝鐪嬬湅鏈夋病鏈夊嚭鐜扮紪璇戦敊璇紝姝ゆ椂鎻愮ず鍑篠witchToView1鍑芥暟涓紝CViewerView鍜孋WebView绫绘棤娉曟瀯閫狅紝鍥犱负瀹冧滑鐨勬瀯閫犲嚱鏁版槸protected銆
銆銆(6) 鍒嗗埆鍦╒iewerView.h鍜學ebView.h鏂囦欢涓紝灏嗘瀯閫犲嚱鏁癈ViewerView()鍜孋WebView()鍓嶉潰鐨勮闂柟寮忔敼鎴恜ublic銆傚啀杩愯绋嬪簭銆
銆銆(7) 涓篊MainFrame绫绘坊鍔犱竴涓猧nt绫诲瀷鐨勬垚鍛樺彉閲弇_nViewID锛屽苟灏嗗叾鍒濆艰涓1銆
銆銆(8) 涓篊MainFrame绫绘坊鍔犺彍鍗曢」ID_VIEW_TEXT鐨凜OMMAND鍜孶PDATE_COMMAND_UI鐨勪簨浠舵槧灏勶紝骞跺湪鏄犲皠鍑芥暟娣诲姞濡傚浘11鎵绀虹殑浠g爜銆

鍥11 ID_VIEW_TEXT鐨勬槧灏勫嚱鏁颁唬鐮
銆銆(9) 涓篊MainFrame绫绘坊鍔犺彍鍗曢」ID_VIEW_HTML鐨凜OMMAND鍜孶PDATE_COMMAND_UI鐨勪簨浠舵槧灏勶紝骞跺湪鏄犲皠鍑芥暟娣诲姞濡傚浘12鎵绀虹殑浠g爜銆

鍥12 ID_VIEW_HTML鐨勬槧灏勫嚱鏁颁唬鐮
銆銆(10) 杩愯绋嬪簭锛岀粨鏋滃鍓嶉潰鍥2鎵绀恒
銆銆浣跨敤CDocument绫荤殑AddView鍜孯emoveView鏉ュ垏鎹
銆銆鍦–Document绫讳腑锛孉ddView鍜孯emoveView鍙互璇存槸涓撻棬鐢ㄤ簬鍗曟枃妗h鍥剧殑鍒囨崲鐨勶紝鍏蜂綋瀹炵幇杩囩▼濡備笅锛
銆銆(1) 鍦–MainFrame绫绘坊鍔犱袱涓彉閲忥紝涓涓槸CViewerView绫绘寚閽堝璞_pMainView锛屽彟涓涓槸CWebView绫绘寚閽堝璞_pWebView銆傞渶瑕佽鏄庣殑鏄紝鐢"娣诲姞鎴愬憳鍙橀噺鍚戝"娣诲姞鎸囬拡瀵硅薄m_pMainView鏃讹紝鎸囧畾鐨勭被鍨嬪悕搴旀槸CViewerView*锛屾敞鎰忓悗闈㈢殑鏄熷彿銆俶_pWebView娣诲姞鏃朵篃绫讳技銆
銆銆(2) 涓篊WebView绫绘坊鍔犱竴涓狢String绫绘垚鍛樺彉閲弒trFileName銆
銆銆(3) 灏咰WebView::OnInitialUpdate涓殑璇彞"
"鍒犻櫎銆
銆銆(4) 鍦–MainFrame绫绘坊鍔犳垚鍛樺嚱鏁癝witchToView2锛岀敤浜庡垏鎹㈣鍥撅紝鍏朵唬鐮佸鍥13鎵绀恒

鍥13 SwitchToView2鍑芥暟浠g爜
銆銆(5) 灏咰MainFrame::OnViewText鍜孫nViewHtml涓殑SwitchToView1鍑芥暟璋冪敤鏀逛负SwitchToView2锛屽叾浣欎笉鍙樸
銆銆(6) 杩愯绋嬪簭锛岀粨鏋滃鍓嶅浘2鎵绀恒
銆銆涓ょ鍒囨崲鏂规硶鐨勬瘮杈
銆銆SwitchToView1鍒囨崲鏂规硶瀹炶川涓婃槸鍒涘缓涓や釜鍏锋湁涓庢枃妗g浉鍏宠仈鐨勮鍥撅紝鍗宠鍥惧垱寤烘椂鎸囧畾CCreateContext缁撴瀯锛屽叿鏈夊緢鐩存帴鐨"涓妗e瑙"鐨勫叧绯汇傝孲witchToView2鏂规硶鏄氳繃CDocument绫荤殑AddView鍜孯emoveView鏉ユ敼鍙樹竴涓枃妗d笌澶氫釜瑙嗗浘鐨勫叧鑱斻
銆銆鐢变簬SwitchToView1涓垱寤虹殑瑙嗗浘甯︽湁鏂囨。鍏宠仈锛屽洜姝ゅ彲浠ョ洿鎺ュ湪瑙嗗浘绫讳腑閫氳繃GetDocument()鍑芥暟鏉ヨ幏鍙栫浉鍏宠仈鐨勬枃妗f寚閽堬紝浠庤屽彲浠ヨ闂枃妗d腑鐨勬暟鎹傝孲witchToView2涓垱寤虹殑瑙嗗浘鏈韩涓嶅甫鏂囨。鍏宠仈锛屽洜姝ゆ棤娉曠洿鎺ヨ闂枃妗d腑鐨勬暟鎹
銆銆鐢变簬SwitchToView2涓渶瑕佸湪鍑芥暟澶栨寚瀹氳鍥剧被鎸囬拡鍙橀噺锛屽洜姝ゅ湪鍚勪釜瑙嗗浘涓彲浠ラ氳繃AfxGeMainWnd()鑾峰彇CMainFrame绫绘寚閽堬紝浠庤屽彲浠ョ洿鎺ヨ闂埌CMainFrame绫讳腑瀹氫箟鐨刾ublic瑙嗗浘绫绘寚閽堝彉閲忥紝杩欐牱渚垮彲鍦ㄨ鍥剧被涔嬮棿鐩存帴璁块棶銆傝孲witchToView1涓殑瑙嗗浘绫绘寚閽堝彉閲忔槸鍦ㄥ嚱鏁板唴瀹氫箟鐨勶紝鍥犳鏃犳硶鍦ㄥ悇涓鍥剧被涓繘琛岃鍥句箣闂寸殑璁块棶锛屽苟涓斿湪鏈緥涓瑿ViewerView绫诲璞¤鍒涘缓浜嗕袱娆°係witchToView2涓紝CViewerView绫诲璞″彧鍒涘缓涓娆°
銆銆闄や簡涓婅堪涓ょ鏂规硶澶栵紝杩樻湁涓绉嶆柟娉曪紝閭e氨鏄娇鐢ㄩ潤鎬佸垏鍒嗘満鍒舵潵杩涜銆傜敱浜庡畠娑夊強杩囧鐨勫簳灞傛柟娉曪紝瀵瑰垵瀛﹁呰岃█锛岀浉瀵硅緝闅撅紝鍥犳杩欓噷涓嶅啀缁欏嚭銆
銆銆缁撴潫璇
銆銆鍦ㄦ湰璁蹭腑锛屾垜浠噸鐐硅璁轰簡瑙嗗浘绫荤殑娣诲姞銆佸崟鏂囨。鐨勮鍥惧垏鎹㈡柟娉曞拰鎶宸с傚浜庡垵瀛﹁呮潵璇达紝瀛︿範骞舵帉鎻¤繖浜涙妧宸ц兘瀵筂FC鐨勬枃妗/瑙嗗浘鏈哄埗鏈変竴涓緝涓烘繁鍏ョ殑浜嗚В銆傚綋鐒讹紝MFC鏂囨。/瑙嗗浘鏈哄埗鏈韩鏄潪甯稿鏉傜殑锛屽湪浠ュ悗鐨勫涔犱腑搴旀參鎱㈠湴浣撲細鍜岀悊瑙c傚湪鏈鍚庝竴璁蹭腑锛屾垜浠皢閲嶇偣搴旂敤绋嬪簭鐨勫畨瑁呭拰閮ㄧ讲銆




发表于 2009-1-5 19:48
| 











