我在基于对话框的MFC项目中使用MFC web browser control来显示一些HTML内容,我试图让它显示"在页面上查找"对话框窗口,其中已经预先选择了搜索词。 (如果你在IE网络浏览器中按Ctrl + F,你会得到什么。)
如果我执行以下操作,则会显示“查找”对话框,但它似乎不支持预填充搜索词的方法:
IWebBrowser2* pWebBrowser = NULL;
LPUNKNOWN unknown = m_browser.GetControlUnknown();
unknown->QueryInterface(IID_IWebBrowser2,(void **)&pWebBrowser);
if(pWebBrowser)
{
HRESULT hr;
CComVariant varNull;
if(SUCCEEDED(hr = pWebBrowser->ExecWB(OLECMDID_FIND, OLECMDEXECOPT_PROMPTUSER, &varNull, &varNull)))
{
//Success!
}
pWebBrowser->Release();
}
if(unknown)
{
unknown->Release();
}
我找到this MSDN page,说:
OLECMDID_SHOWFIND 告诉接收者显示“查找”对话框。它 采用VT_DISPATCH输入参数。
显然,还有另一个带有OLECMDID_SHOWFIND
ID的查找命令,但我似乎无法使其正常工作。我不明白这个VT_DISPATCH
输入参数是什么?当我尝试这个时 - 由于缺乏文档而在黑暗中完全拍摄:
CComVariant var1 = L"Pre-filled search word 1", var2 = L"Pre-filled search word 2";
hr = pWebBrowser->ExecWB(OLECMDID_SHOWFIND, OLECMDEXECOPT_DODEFAULT, &var1, &var2);
但我得到hr=0x80040100
或"Trying to revoke a drop target that has not been registered"
知道如何让它发挥作用吗?