// 最新のPlatform SDK(2001.01)にしか定義されていません。
//
// スクリプトでwindow.showModalDialog()を実行した場合と異なり、
// "-- Web ページ ダイアログ"という余分なタイトルは表示されません。
#include <comdef.h>
#include <Mshtmhst.h> // ShowHtmlDialog
_COM_SMARTPTR_TYPEDEF(ITridentAPI, __uuidof(ITridentAPI));
HRESULT _ShowHTMLDialog(
HWND hwndParent,
IMoniker* pMk,
VARIANT* pvarArgIn = NULL,
// TCHAR* pchOptions = NULL, // Del sha '01.05.13
WCHAR* pchOptions = NULL, // Add sha '01.05.13
VARIANT* pvarArgOut = NULL,
IUnknown *punkHost = NULL)
{
HRESULT hr = S_OK;
try
{
ITridentAPIPtr spTridentAPI; // Undocumented Interface
hr = spTridentAPI.CreateInstance(CLSID_TridentAPI);
if (FAILED(hr))
{
return hr;
}
hr = spTridentAPI->ShowHTMLDialog(
hwndParent, pMk, pvarArgIn, pchOptions, pvarArgOut, punkHost);
if (FAILED(hr))
{
return hr;
}
}
catch (...)
{
return E_FAIL;
}
return hr;
}
HRESULT ShowHTMLDialogFromURL(
HWND hwndParent,
LPCTSTR szURL,
VARIANT* pvarArgIn = NULL,
// TCHAR* pchOptions = NULL, // Del sha '01.05.13
WCHAR* pchOptions = NULL, // Add sha '01.05.13
VARIANT* pvarArgOut = NULL)
{
HRESULT hr = S_OK;
try
{
IMonikerPtr spMoniker;
hr = ::CreateURLMoniker(NULL, _bstr_t(szURL), &spMoniker);
if (FAILED(hr))
{
return hr;
}
hr = ::_ShowHTMLDialog(hwndParent, spMoniker, pvarArgIn, pchOptions, pvarArgOut);
if (FAILED(hr))
{
return hr;
}
}
catch (...)
{
return E_FAIL;
}
return hr;
}
---------- サンプル ----------
HRESULT hr = S_OK;
// pvarArgIn に、COMオブジェクトを入れてやり取りするのが、スマートでしょう。。。
WCHAR wszOptions[] = L"help:no; status:no; dialogWidth:460px; dialogHeight=320px";
hr = ::ShowHTMLDialogFromURL(m_hWnd, _T("http://www.kanabo.net/"), NULL, wszOptions, NULL);
if (FAILED(hr))
{
// エラーが発生
}