IHTMLDocument2 write(SAFEARRAY)メソッドを使用して、データベースに格納された文字列からHTMLページを生成しています。これは問題なくOKです。 CTRL + Fを押すと、[検索]ダイアログボックスが表示されますが、一致するものはありません。 CTRL + Fで何が検索されていますか?おそらくオブジェクトが見つからない(私が作成しなければならない)検索が見えるでしょうか? @Yahiaは、それがフォーカス問題だった、示唆したように :IWebBrowser2 IHTMLDocument2 Ctrl + Fダイアログが表示されますが、一致するものが見つかりません
CComPtr<IDispatch> m_spDisp;
CComPtr<IWebBrowser2> m_spWeb2;
HRESULT m_hr;
IHTMLDocument2* m_document;
BOOL CSwiftDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_BackMenuButton.SetToolTipText(_T("Back"));
m_bInitialised = true;
m_bBackClicked = false;
m_svURLList.clear();
m_nCurrentPage = -1;
m_bitBack.LoadBitmap(IDB_BACK_BITMAP);
m_BackMenuButton.SetBitmap(m_bitBack);
m_spGlobal.CreateInstance(__uuidof(GLOBVARSLib::Global));
m_browser.Navigate(CSTR m_sURL, NULL, NULL, NULL, NULL);
GetDocument();
WriteHTMLString();
SetWindowSize(512,384);
return TRUE;
}
void CSwiftDlg::GetDocument()
{
m_hr = S_OK;
m_spDisp = m_browser.get_Application();
if (m_spDisp != NULL && m_spWeb2 ==NULL)
{
m_hr = m_spDisp->QueryInterface(IID_IWebBrowser2,(void**)&m_spWeb2);
}
if (SUCCEEDED(m_hr) && m_spWeb2 != NULL)
{
// get browser document's dispatch interface
IDispatch *document_dispatch = NULL;
m_hr = m_spWeb2->get_Document(&document_dispatch);
if (SUCCEEDED(m_hr) && (document_dispatch != NULL))
{ // get the actual document interface
m_hr = document_dispatch->QueryInterface(IID_IHTMLDocument2, (void **)&m_document);
// release dispatch interface
document_dispatch->Release();
}
}
}
void CSwiftDlg::WriteHTMLString()
{
if (m_document == NULL)
GetDocument();
SAFEARRAY *empty_array = SafeArrayCreateVector(VT_VARIANT,0,1);
// construct text to be written to browser as SAFEARRAY
SAFEARRAY *safe_array = SafeArrayCreateVector(VT_VARIANT,0,1);
VARIANT *variant;
SafeArrayAccessData(safe_array,(LPVOID *)&variant);
variant->vt = VT_BSTR;
variant->bstrVal = m_sHTML.AllocSysString();
SafeArrayUnaccessData(safe_array);
// write SAFEARRAY to browser document
m_document->write(empty_array);
m_document->close();
m_document->write(safe_array);
}
回答: は、ここではいくつかの関連するコードです。コンテキストメニューからCtrl + Fを "リフレッシュ"したときのように、m_document-> write(safe_array)文の後にm_document-> execCommand( "Refresh"、...)を追加しました。それは "焦点の問題"を修正しました。
焦点は何とかオフになっているとき、通常この問題が発生した...表示してくださいいくつかのソースと詳細... – Yahia
それは、フォーカスの問題のようです - 私はコンテキストメニュー、エンコーディング、リフレッシュなどから任意のアクションを実行する場合。 Ctrl-Fを押してから、同じ効果が得られるプロパティ/メソッドは何ですか? – andywebsdale
下記の私の答えを見てください – Yahia