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。DocumentCompleteExplorer 內的核心代碼提取為獨立 void OnDocumentReady(),按鈕/定時器直接調用。PostMessage(WM_USER_DOC_COMPLETE, 0, 0),消息處理器中調用上述函數。m_wb.get_Document() -> IDispatch,構造 VARIANT vtURL; vtURL.vt=VT_BSTR; vtURL.bstrVal=SysAllocString(L"about:blank"),調用 DocumentCompleteExplorer(pDisp, &vtURL)。**不要手動觸發 COM 事件**,改用顯式業務函數調用,降低耦合、提高可測試性。|