BHO里弹出新窗口,如何控制新窗口的大小?
BOOL PopupWindowEx(IWebBrowser2 *pWebBrowser, BSTR bstrUrl, int top, int left, int width, int height)
{
if (pWebBrowser == NULL) return FALSE;
VARIANT vtFlags, vtEmpty;
vtFlags.vt = VT_I4;
vtFlags.lVal = navOpenInNewWindow;
::VariantInit(&vtEmpty);
if (top >= 0) pWebBrowser->put_Top(top);
if (left >= 0) pWebBrowser->put_Left(left);
if (width >= 0) pWebBrowser->put_Width(width);
if (height >= 0) pWebBrowser->put_Height(height);
pWebBrowser->put_Visible(VARIANT_TRUE);
pWebBrowser->Navigate(bstrUrl, &vtFlags, &vtEmpty, &vtEmpty, &vtEmpty);
::VariantClear(&vtFlags);
::VariantClear(&vtEmpty);
return TRUE;
}
上面这个函数只能针对父窗口的,不能改变新窗口的大小.
而下面这个函数,如果开了MYIE,焦点会转移到MYIE,但是新窗口没有处理.
如果没开MYIE,则窗口能弹出来,但是也不能控制大小的.
BOOL PopupWindowEx(LPCTSTR lpszUrl, int top, int left, int width, int height)
{
//::CoInitialize(NULL);
IWebBrowser2 *pWebBrowser = NULL;
HRESULT hr;
hr = ::CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (void**)&pWebBrowser);
if(FAILED(hr) || pWebBrowser == NULL) return FALSE;
VARIANT vtUrl, vtFlags, vtTarget, vtEmpty;
vtUrl.vt = VT_BSTR;
vtUrl.bstrVal = CComBSTR(lpszUrl);
vtFlags.vt = VT_I4;
vtFlags.lVal = navOpenInNewWindow;
vtTarget.vt = VT_BSTR;
vtTarget.bstrVal = CComBSTR("_blank");
::VariantInit(&vtEmpty);
if (top >= 0) pWebBrowser->put_Top(top);
if (left >= 0) pWebBrowser->put_Left(left);
if (width >= 0) pWebBrowser->put_Width(width);
if (height >= 0) pWebBrowser->put_Height(height);
//pWebBrowser->put_Visible(VARIANT_TRUE);
hr = pWebBrowser->Navigate2(&vtUrl, &vtEmpty, &vtTarget, &vtEmpty, &vtEmpty);
::VariantClear(&vtFlags);
::VariantClear(&vtTarget);
::VariantClear(&vtEmpty);
pWebBrowser->Quit();
pWebBrowser->Release();
pWebBrowser = NULL;
//::CoUninitialize();
return SUCCEEDED(hr);
}
请问控制新窗口的大小应该怎么做呢?