首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC WebBrowser 控件 DocumentComplete 事件手動觸發與參數構造

     編輯:程式設計綜合問答

事件映射

BEGIN_EVENTSINK_MAP(CbaiduDlg, CDialogEx)
    ON_EVENT(CbaiduDlg, IDC_EXPLORER1, 259, CbaiduDlg::DocumentCompleteExplorer, VTS_DISPATCH VTS_PVARIANT)
END_EVENTSINK_MAP()

259 = DWebBrowserEvents2::DocumentComplete,參數:pDisp (子框架 IDispatch)、URL (VARIANT*)。

手動調用難點

  • pDisp 需傳遞當前文檔的 IWebBrowser2 或框架 IDispatch,構造複雜。
  • URL 需封裝為 VT_BSTR 的 VARIANT。

替代方案

  1. 直接調用業務邏輯函數:將 DocumentCompleteExplorer 內的核心代碼提取為獨立 void OnDocumentReady(),按鈕/定時器直接調用。
  2. 發送 WM_USER 消息:PostMessage(WM_USER_DOC_COMPLETE, 0, 0),消息處理器中調用上述函數。
  3. 若必須模擬事件:獲取 m_wb.get_Document() -> IDispatch,構造 VARIANT vtURL; vtURL.vt=VT_BSTR; vtURL.bstrVal=SysAllocString(L"about:blank"),調用 DocumentCompleteExplorer(pDisp, &vtURL)。

建議

**不要手動觸發 COM 事件**,改用顯式業務函數調用,降低耦合、提高可測試性。|

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved