![]()
今回は画像表示やスクリプト実行のON/OFFなどを制御するダウンロードコントロールが正常に働くようにする。
//■追加
STDMETHOD(Invoke)(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
HRESULT hr = E_FAIL;
CComPtr<IDispatch> pIDispatch;
//ダウンロードコントロール用のInvoke
if(_pIAmbientControl)
_pIAmbientControl->QueryInterface(&pIDispatch);
if(pIDispatch)
hr = pIDispatch->Invoke(dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
if(SUCCEEDED(hr))
return hr;
//IEコントロールのイベント用のInvoke
hr = IDispEventImpl<SINKID_EVENTS, CTabBrowser100View, &DIID_DWebBrowserEvents2>::Invoke(dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
if(SUCCEEDED(hr))
return hr;
//デフォルト(CAxHostWindow)用のInvoke
return CComObject<CAxHostWindow>::Invoke(dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
//IInputObjectSite
STDMETHOD(OnFocusChangeIS)(IUnknown *punkObj,BOOL fSetFocus)
{
//■内部処理削除
//HRESULT hr = E_FAIL;
//CComPtr<IOleInPlaceObject> pIOleInPlaceObject;
//if(_pIDispatch)
// _pIDispatch->QueryInterface(&pIOleInPlaceObject);
//if(pIOleInPlaceObject == NULL)
// return S_OK;
//if(fSetFocus)
//{
// hr = pIOleInPlaceObject->UIDeactivate();
// pIOleInPlaceObject->InPlaceDeactivate();
//}
//else
//{
// HWND hWnd;
// hr = pIOleInPlaceObject->GetWindow(&hWnd);
// if(SUCCEEDED(hr) && ::IsWindow(hWnd))
// ::ShowWindow(hWnd,SW_NORMAL);
//}
return S_OK;
}
![]()
これでビルド/実行すると画像表示のON/OFFなどのダウンロード関連機能が再び使えるようになった。
次回は「お気に入り」メニューに「お気に入りの整理」などのメニュー項目を追加する。
