浠ュ墠鎴戜滑涓轟簡緙栧啓涓涓紓浜殑紼嬪簭錛岄渶瑕佺敤VC榪涜瀹㈡埛鍖洪潪瀹㈡埛鍖洪噸緇橈紝闇瑕佺淮鎶ゅ浘鐗囪澆鍏ャ丟DI緇樺埗銆佹秷鎭鐞嗐侀噸杞藉悇縐嶆帶浠?#8230;…錛岃櫧鐒跺緢澶氫漢閮芥槸榪欎箞鍋氱殑錛屽寘鎷垜鏈榪戝仛鐨勯」鐩腑錛屼粛鐒朵嬌鐢℅DI鍦ㄥ仛寰堝鐣岄潰涓婄殑浜嬫儏銆備絾鏄紝鐩墠浼間箮紼嬪簭緇撳悎Web欏甸潰錛屽叡鍚屽幓鍋氫簺浜嬫儏浠夸經瓚婃潵瓚婃祦琛屻傚綋鐒訛紝鐣岄潰緙栫▼榪樻槸紱諱笉寮GDI鎴朑DI+錛屾垜榪欓噷鍙槸璁板綍涓浜涙垜璁や負鏈潵鍦ㄥ啓杞歡銆佸仛欏圭洰涓彲鑳戒細浣跨敤鐨勪竴浜涙妧鏈斺斿綋鐒訛紝榪欑鎶鏈凡緇忓緢澶氫漢閮藉湪鐢ㄤ簡錛岃屼笖鑲畾鐢ㄧ殑姣旀垜濂斤紝甯屾湜鐜╁効鐨勬瘮杈冩簻鐨勫鍖呮兜鏂囦腑鐨勯敊璇拰涓嶈凍銆?/p>
浠庝粖澶╁紑濮嬶紝鎴戣鍒掔敤1銆?涓湀鐨勬椂闂撮檰緇啓涓浜涘叧浜庝嬌鐢ˋTL/WTL鍜岀綉欏典氦浜掔殑鏂囧瓧錛屽寘鎷嬌鐢–OM鏉ユ搷浣滅綉欏靛厓绱狅紝浠ュ強瀵圭綉欏靛厓绱犱簨浠剁殑鍝嶅簲銆?nbsp;
鏃犺鏄敤MFC/ATL/WTL錛屾棤璁烘槸Insert涓涓狹icrosoft Web Browser鐨凙ctiveX鎺т歡錛岃繕鏄姩鎬佸垱寤轟簡涓涓狟rowser瀹炰緥錛岀敋鑷蟲槸浣犺鐩存帴鎿嶄綔Windows緋葷粺鐨処E錛屾垜浠鍏堣鍋氱殑浜嬫儏灝辨槸鑾峰緱IE Browser鐨勬帴鍙c?/p>
鎴戜滑棣栧厛鏉ョ紪鍐欎竴涓猈TL鐨勭ず渚嬬▼搴忓紑濮嬭鏄庛?/p>
錛堟湭瀹屽緟緇級
2008騫?鏈?6鏃?br>鏈榪戜竴孌墊椂闂村疄鍦ㄦ槸澶繖浜嗭紝鍒氬垰鎶婃柊浜у搧鐨勯渶姹傚垎鏋愬紕瀹屻備笅涓涓駭鍝佺殑闇姹傚垎鏋愰┈涓婂張瑕佹潵浜嗐傞儊闂楓?br>鐜板湪緙栫爜鐨勫伐浣滃熀鏈兘浜や唬鍑哄幓浜嗭紝鑷繁宸茬粡娌℃湁澶氬皯鏃墮棿緙栫爜浜嗭紝寰堝鏂扮殑鎶鏈拰緇嗚妭鎴戝凡緇忎笉鎿呴暱浜嗭紝涓嶇煡閬撹繖鏄ソ鏄潖銆備笉榪囨渶榪戦」鐩鐞嗙殑浜嬫儏鍊掓槸瀛﹀埌浜嗕笉灝戙?br>
搴熻瘽灝戣錛屾垜榪樻槸灝介噺鎶界┖鎶婅繖涓枃绔犲啓瀹屻?/p>
浣跨敤WTL鍚戝鍋氫竴涓爣鍑嗙殑瀵硅瘽妗嗙▼搴忓嚭鏉ワ紝璁板緱瑕佹妸Enable ActiveX Control Hosting鐨勯夐」鍕句笂銆傜劧鍚庝涪涓涓狹icrosoft Web Browser鐨凙ctiveX鎺т歡涓婂幓錛孖D姣旀柟璇存槸IDC_EXPLORER銆?/p>
鎯寵瀵硅瘽妗嗚兘澶熸帴鏀禬ebBrowser鎺т歡鐨勪簨浠訛紝闇瑕佷負瀵硅瘽妗嗗鍔犱竴浜涚戶鎵跨被銆傞鍏堟垜浠畾涔夎繖鏍蜂竴涓笢涓滐細
#define WebBrowser IDispEventImpl<IDC_EXPLORER, CMainDlg, &DIID_DWebBrowserEvents2, &LIBID_SHDocVw, 1, 0>
鐒跺悗娣誨姞鍒板璇濇鐨勭戶鎵垮垪琛ㄤ腑錛屽涓嬶細
class CMainDlg : public CAxDialogImpl<CMainDlg>, public CUpdateUI<CMainDlg>,
public CMessageFilter, public CIdleHandler, public WebBrowser
鍒皊tdafx.h涓坊鍔犺繖鍑犱釜蹇呰鐨勫ご鏂囦歡錛?/p>
#include <exdisp.h>
#include <exdispid.h>
#include <mshtml.h>
#include <mshtmdid.h>
OK錛屾垜浠笇鏈涘鐞嗙殑鏄璇濇涓婇偅涓猈ebBrowser鎺т歡鐨勪簨浠訛紝鍥犳錛岄渶瑕佺淮鎶や竴涓鎺т歡鐨勬垚鍛樺彉閲忥細
CComPtr<IWebBrowser2> m_pWeb2;
鎺ヤ笅鏉ワ紝閫夋嫨鎴戜滑甯屾湜澶勭悊鐨勭綉欏典簨浠躲傞鍏堟坊鍔犳秷鎭搷搴斿畯錛岀劧鍚庢坊鍔犱袱涓簨浠訛紝濡備笅錛?br>
BEGIN_SINK_MAP(CMainDlg)
SINK_ENTRY_EX(IDC_EXPLORER, DIID_DWebBrowserEvents2, DISPID_DOCUMENTCOMPLETE, OnDocumentComplete)
SINK_ENTRY_EX(IDC_EXPLORER, DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2, OnBeforeNavigate2)
END_SINK_MAP()
鎴戜滑涓婇潰甯屾湜澶勭悊涓や釜浜嬩歡錛歄nBeforeNavigate2鍜孫nDocumentComplete銆備笅闈㈡槸榪欎袱涓簨浠剁殑瀹炵幇浣擄細
void __stdcall OnDocumentComplete(IDispatch *, VARIANT* )


{
MessageBox(_T("Current document complete!"),_T("Info"),MB_OK|MB_ICONEXCLAMATION);
}

void __stdcall CMainDlg::OnBeforeNavigate2 (
IDispatch* pDisp, VARIANT* URL, VARIANT* Flags, VARIANT* TargetFrameName,
VARIANT* PostData, VARIANT* Headers, VARIANT_BOOL* Cancel )


{
MessageBox(_T("Before navigate!"),_T("Info"),MB_OK|MB_ICONEXCLAMATION);
};
涓嬮潰鎴戜滑璁╁璇濇鍚姩鏃訛紝璁╁祵鍏ョ殑Web Browser ActiveX鎺т歡鐩存帴鎵撳紑涓涓綉欏碉紝鍦∣nInitDialog涓坊鍔犱笅闈㈢殑浠g爜錛?/span>
CAxWindow AxWin = GetDlgItem(IDC_EXPLORER);
AxWin.QueryControl(&m_pWeb2);

if (m_pWeb2)


{
WebBrowser::DispEventAdvise(m_pWeb2);
m_pWeb2->Navigate(CComBSTR("http://blog.csdn.net/epubcn/"),NULL,NULL,NULL,NULL);
}
璁板緱鍦∣nDestroy涓噴鏀劇綉欏典簨浠剁洃鎺э細
if (m_pWeb2)


{
WebBrowser::DispEventUnadvise(m_pWeb2);
m_pWeb2.Release();
}
OK錛岀幇鍦ㄧ紪璇戣繍琛屼竴涓嬫槸鍚︿細寮瑰嚭棰勬湡鐨勬秷鎭璇濇銆?/p>
娉細濡傛灉榪愯鏃跺彂鐢烝TLASSERT(!InlineIsEqualGUID(*m_plibid,GUID_NULL) && "Did you forget to pass the LIBID to CComModule::Init?");閿欒錛岃灝嗗伐紼嬭緗腑鐨?#8220;ATL浣跨敤”鏀逛負“鍔ㄦ侀摼鎺ュ埌ATL”鍗沖彲銆?/p>
涓婇潰鏄緗戦〉浜嬩歡鐨勫搷搴斻傛帴涓嬫潵璁╂垜浠潵澶勭悊緗戦〉涓婃煇涓厓绱犵殑浜嬩歡銆傛瘮濡備竴涓狟UTTON鐨勫崟鍑匯佽秴綰ч摼鎺ョ殑鐐瑰嚮銆佷竴涓閫夋鎸夐挳鏄惁琚変腑銆佹枃鏈緭鍏ユ鍐呭鐨勬敼鍙樺拰鑾峰彇絳夈?/p>
錛堟湭瀹屽緟緇級

]]>