在 dll 的 Dialog 內嵌個 WebBrowser 元件會有問題.

2006/11/02
~ 阿亮 ~

Case: 在 dll 內包 WebBrowser 元件會造成當掉?


Platform: Visual Studio 2005.

Using MFC to Host a WebBrowser Control  所述,將 WebBrowser 嵌在一個 Dialog,而這整個包在一個 dll 內供呼叫,會有當在下面這行的情形:

File: f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occcont.cpp
Line: 950

而且會有類似下述的錯誤訊息,

CoCreateInstance of OLE control {8856F961-340A-11D0-A96B-00C04FD705A2} failed.

/>>> Result code: 0x800401f0

/>>> Is the control is properly registered?

Warning: Resource items and Win32 Z-order lists are out of sync. Tab order may be not defined well.

根據此頁 ,我試的結論下面這個是對的

The error code is ‘CO_E_NOTINITIALIZED’. You have to call
‘CoInitialize( NULL);’ before creating the control (if you’re using
MFC, the call is ‘AfxOleInit();’)

雖然我的例子是 MFC 的程式(來源文章說要用 ‘AfxOleInit();’),我在 Dialog 的建構函數加 ‘CoInitialize( NULL);’,而在解構函數加 ‘CoUninitialize()’ 即可行,。而 CoInitialize 的作用是會使 COM/OLE 可以 Work 的;但蠻奇怪的是,若這個 COM/OLE 不在 dll 內的話,則不需要 CoInitialize( NULL) 也可 Work?

有空再搞懂 COM/OLE 在做啥好了,至少短期目標達成 :)



3 Responses to “在 dll 的 Dialog 內嵌個 WebBrowser 元件會有問題.”

站內搜尋



本站其他服務

本站其他軟體



  • 下一班高鐵 (nextTHSR)

    這個 app 只要開啟後,就根據定位幫你過濾出最近高鐵站的時刻表,不用再按任何按鈕了,方便您在很快時間內確定要坐的哪一班高鐵


  • 臉書粉絲專頁搜尋 (FPSearch)

    不用登入臉書即可搜尋臉書粉絲專頁(臉書粉絲團)所公開的文章。您可以指定特定日期範圍之前的文章,也可設定搜尋粉絲專頁內包含特定關鍵詞的文章。


  • 下一台單車(NextBike)

    打開定位即搜尋附近二十點自行車站點,不塞滿全部站點資料到整個地圖上,所以畫面簡潔方便看清楚目前所在地,若需要搜尋地圖其他位置附近站點,再點擊地圖即可。


  • 下一班公車(nextBus)

    這個 app 只要開啟後,就根據定位幫你過濾出附近站牌的時刻表,以及提供相關公車預計到站的時間,方便您在很快時間內確定要坐的哪一班公車


  • 藝文快訊

    讓你可以輕鬆追蹤含有您想要關注關鍵詞的任何藝文活動訊息,只要有最新的資訊,「藝文快訊」即會推播通知給你.


  • 批踢踢快訊 (pttNews)

    身為鄉民的您,是不是常常覺得現在的批踢踢 (PTT) 閱讀器,明明您就只要看幾個板,都幫您分類好,但不是您要的?甚至您只想關注某個人(或某件事)的消息,卻散布在不同東西,找出來很辛苦? 這個 App 可以解決您這些問題,快來用吧!