在webbrowser,点击第一页的某个链接,新建第二页并打开链接,但是没有打开所有的frame(只打开第一个frame),不知是为什么?extern IDispatch** NewWindowDispatch3;
extern LONG_PTR RunCreateWindowProc;
void _stdcall WebBrowser::NewWindow2( IDispatch **ppDisp, VARIANT_BOOL* &Cancel)
{
NewWindowDispatch3 = ppDisp;
CallWindowProc( (WNDPROC)RunCreateWindowProc, NULL, WM_Y_OPEN_NW2, 0, 0);
*Cancel = VARIANT_FALSE;
}LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
switch(Message) {
case WM_CREATE:
RunCreateWindowProc = ( LONG_PTR)WndProc;
NewWindowDispatch3 = 0x0;
break;
case WM_Y_OPEN_NW2:
openNewWindow2( "Sub Parts");
break;}
return 0;
}
void openNewWindow2( string Description)
{
WebForm->openDefaultWeb("about:blank");
WebForm->getBrowser()->GetWebBrowser2()->put_RegisterAsBrowser( VARIANT_TRUE);
LPDISPATCH disp = NULL;
HRESULT hr = WebForm->getBrowser()->GetWebBrowser2()->get_Application( &disp);
if( SUCCEEDED(hr))
{
*NewWindowDispatch3 = disp;
}
}另外,如果使用下面的代码第一次成功新建了一个IE窗口,并导向了链接。(它弹出一个提示,匆忙之中按了确定键)之后再也不能新建IE窗口,一闪就退,并导向原来窗口的最后一个frame来打开点击的链接?
void _stdcall WebBrowser::OnNewWindow3(IDispatch **ppDisp, VARIANT_BOOL *Cancel,
DWORD dwFlags,
BSTR bstrUrlContext,
BSTR bstrUrl)
{
IWebBrowser2 *wb = NULL; CoCreateInstance(CLSID_InternetExplorer,
NULL,
CLSCTX_LOCAL_SERVER, //CLSCTX_ALL ,
IID_IWebBrowser2,
(void**)&wb);
wb->put_RegisterAsBrowser(VARIANT_TRUE);
wb->put_Visible(VARIANT_FALSE);
wb->get_Application(ppDisp);
}
extern LONG_PTR RunCreateWindowProc;
void _stdcall WebBrowser::NewWindow2( IDispatch **ppDisp, VARIANT_BOOL* &Cancel)
{
NewWindowDispatch3 = ppDisp;
CallWindowProc( (WNDPROC)RunCreateWindowProc, NULL, WM_Y_OPEN_NW2, 0, 0);
*Cancel = VARIANT_FALSE;
}LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
switch(Message) {
case WM_CREATE:
RunCreateWindowProc = ( LONG_PTR)WndProc;
NewWindowDispatch3 = 0x0;
break;
case WM_Y_OPEN_NW2:
openNewWindow2( "Sub Parts");
break;}
return 0;
}
void openNewWindow2( string Description)
{
WebForm->openDefaultWeb("about:blank");
WebForm->getBrowser()->GetWebBrowser2()->put_RegisterAsBrowser( VARIANT_TRUE);
LPDISPATCH disp = NULL;
HRESULT hr = WebForm->getBrowser()->GetWebBrowser2()->get_Application( &disp);
if( SUCCEEDED(hr))
{
*NewWindowDispatch3 = disp;
}
}另外,如果使用下面的代码第一次成功新建了一个IE窗口,并导向了链接。(它弹出一个提示,匆忙之中按了确定键)之后再也不能新建IE窗口,一闪就退,并导向原来窗口的最后一个frame来打开点击的链接?
void _stdcall WebBrowser::OnNewWindow3(IDispatch **ppDisp, VARIANT_BOOL *Cancel,
DWORD dwFlags,
BSTR bstrUrlContext,
BSTR bstrUrl)
{
IWebBrowser2 *wb = NULL; CoCreateInstance(CLSID_InternetExplorer,
NULL,
CLSCTX_LOCAL_SERVER, //CLSCTX_ALL ,
IID_IWebBrowser2,
(void**)&wb);
wb->put_RegisterAsBrowser(VARIANT_TRUE);
wb->put_Visible(VARIANT_FALSE);
wb->get_Application(ppDisp);
}
解决方案 »
- CWnd派生类为何不响应消息,接受不到消息,vc6和vc2005都如此,怪?
- 编辑出现刷新问题
- 如何写一个login窗口
- 如何获得Directx版本,和jre版本
- 请用过的兄弟近来讨论一下 用ATL向导生成的服务和console写的服务哪个更好用些 ?
- Link问题
- 500 分求用RAS拨号进行数据传输的资料和代码
- 求助,如何将atl写的COM组件DLL转成静态库
- 在VC资源编辑器中如何打开超过256色的BMP图
- 用InstallShield制作安装程序时怎样注册OCX的信息
- OPENCV2.4.11+vs2015 Release生成问题
- 大家好,我是数据结构初学者,下面是关于输出单链表的代码,在vs2017中运行时发生读取访问权限冲突,p是0xCDCDCDCD,出现的原因是?该如何解决,劳烦了!
其后,再添加你的控制代码
DWORD dwFlags,
BSTR bstrUrlContext,
BSTR bstrUrl)
{
IWebBrowser2 *wb = NULL; CoCreateInstance(CLSID_InternetExplorer,
NULL,
CLSCTX_LOCAL_SERVER, //CLSCTX_ALL ,
IID_IWebBrowser2,
(void**)&wb);
wb->put_RegisterAsBrowser(VARIANT_TRUE);
wb->put_Visible(VARIANT_FALSE);
wb->get_Application(ppDisp);
}
这一段奇迹般的好了,可以正常载入弹出页面。就是用webbrowser还是不行
在webbrowser里新建一页,然后打开一个页面,这个页面包括多个frame. 这个新建页的启动是其它页面的一个链接。
错误的结果是:显示一个标题头的frame,然后,不知道是中断还是不响应,就是不显示另外的frame.
CoCreateInstance(CLSID_InternetExplorer,。
你把ppDisp读到的数据就是一个CLSID_InternetExplorer
新建弹出窗口是因为想通过弹出窗口的页面获得url, 先隐藏这个弹出窗口,get url, 然后关掉隐藏窗口。但是有时能用,有时就一闪即灭。也不知道webbrowser是否有缺陷。在newwindow里不加任何代码,关键新建窗口不出现。ie也并没有设置对这个网站的弹出窗口的拦截
重要的事说三遍!不要用IE