【发布时间】:2022-01-06 14:49:06
【问题描述】:
我被这个难倒了!
我有自己的CHtmlView 派生类,并且我最近添加了对Find 的支持。我是这样做的:
void CChristianLifeMinistryEditorDlg::OnEditFind()
{
m_pHtmlPreview->ExecWB(OLECMDID_FIND, OLECMDEXECOPT_PROMPTUSER, nullptr, nullptr);
}
在后台,代码会执行以下操作:
HRESULT CChristianLifeMinistryHtmlView::ExecWB(OLECMDID cmdID, OLECMDEXECOPT cmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
{
ASSERT(m_pBrowserApp != nullptr);
const auto hr = m_pBrowserApp->ExecWB(cmdID, cmdexecopt, pvaIn, pvaOut);
return hr;
}
它工作正常。但前提是我在浏览器控件中以这种方式呈现我的页面:
if (m_pHtmlPreview != nullptr)
{
CString strURL = strPreviewXML;
if (iBookmarkId != -1)
strURL.Format(_T("%s#week%d"), (LPCTSTR)strPreviewXML, iBookmarkId);
m_pHtmlPreview->Navigate2(strPreviewXML, 0, nullptr);
//m_pHtmlPreview->Navigate2(strURL, 0, nullptr);
}
简而言之,如果我导航到 XML 文件本身,那么结果就会起作用。但是,如果我尝试导航到同一个 XMl 文件,但使用我的锚点,当它显示在浏览器控件的正确位置时,查找功能将不起作用:
当我把它改回导航到:
m_pHtmlPreview->Navigate2(strPreviewXML, 0, nullptr);
然后保证查找工具工作。但这意味着我不能再跳转到转换后的 HTML 输出的正确部分。我试着做:
m_pHtmlPreview->Navigate2(strPreviewXML, 0, nullptr);
m_pHtmlPreview->Navigate2(strURL, 0, nullptr);
我认为如果我先导航到页面,然后导航到带有锚点的页面,那么 Find 会起作用。但没有喜悦。有什么办法吗?
【问题讨论】:
标签: url visual-c++ mfc find webbrowser-control