如何使用预填充的搜索词在MFC Web浏览器控件中实现Find-on-Page命令?

时间:2015-04-14 18:24:06

标签: c++ windows internet-explorer mfc

我在基于对话框的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"

知道如何让它发挥作用吗?

0 个答案:

没有答案