自定义浏览器异常退出问题。

leechiyang 2008-11-04 11:03:24
自定义的给予基于SDI的浏览器,使用CHtmlView。
为了使新开窗口的页面在我的程序里显示,重载了OnNewWindow2。代码如下:
void CWebClientView::OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel)
{
// Get a pointer to the application object.
CWinApp* pApp = AfxGetApp();

// Get the correct document template.
POSITION pos = pApp->GetFirstDocTemplatePosition();
CDocTemplate* pDocTemplate = pApp->GetNextDocTemplate( pos );

// Create a new frame.
CFrameWnd* pFrame = pDocTemplate->CreateNewFrame(
GetDocument(),
(CFrameWnd*)AfxGetMainWnd() );

// Activate the frame.
pDocTemplate->InitialUpdateFrame( pFrame, NULL );
CWebClientView* pView = (CWebClientView*)pFrame->GetActiveView();

// Pass pointer of WebBrowser object.
pView->SetRegisterAsBrowser( TRUE );
*ppDisp = pView->GetApplication();

}

有一个问题不知如何解决。
先打开1.htm,网页里连接到2.htm,并且在新窗口里打开。当关掉1.htm后整个程序就退出了。
请问,如何才能像IE一样,直到关掉2.htm后程序才退出?
...全文
182 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ToperRay 2008-11-05
  • 打赏
  • 举报
回复
当关掉1.htm后整个程序就退出了

1.html关闭后做什么了?

应该从这里入手吧。

jameshooo 2008-11-05
  • 打赏
  • 举报
回复
有8成的原因是组件没有正确清理。
2021‘someday 2008-11-04
  • 打赏
  • 举报
回复


顶!

我也顺便打个广告,本人也有支持ESRI ARCGIS的.shp文件的地图的Windows mobile 5.0/6.0手机GIS地图软件----移动GIS(MobileGIS),PC端的服务软件----移动GIS服务平台(MobileGISServer),可成套出售,可以完成以下功能:
1,通过GPRS上网连接后台服务端程序来实时传输在外工作的数据到后台数据库!

2,可以实时发回PDA的GPS信息,在后台地图上直接定位PDA用户的位置,也可以下发PDA的经纬度信息让PDA用户定位和跟踪其它PDA用户,了解自己与其它PDA的位置关系,起到定位和跟踪的作用!

3,可以发回PDA当前所在地名如在天河城附近等,实现在外面工作就知道在何时何地上班打卡的效果,同时可以在后台为相应的PDA用户设置固定时长返回一次当前位置的GPS信息确保对相应PDA用户的定位,跟踪与监控!

4,移动GIS服务平台可以对PDA用户进行登记,注销等管理,在移动GIS服务平台登记的PDA用户才可登陆此服务器,依据IMSI和IMEI号来进行登陆验证,安全可靠,

5,可以对在外面工作的PDA用户进行任务指派和任务管理如
PDA号码:13800138000
任务名称:测试线路
任务说明:主要是在天河北路一带的地下管线进行检测!

6,(此功能为信息采集的核心功能)用户可自行设置需要采集信息的对象及其属性,指派给指定的PDA用户,如测试线路的属性模板:
//0-编辑属性(可多个) ; 1-下拉属性(可多个) ; 2-选择属性(可多个) ; 3-大文本编辑框(可以没有此属性,但有此属性时只能有一个) ; 4-列表属性(可以没有此属性,但有此属性时只能有一个)(属性0+属性1+属性2/2+属性2%2)<=28
name,名称,0,;beproject,所属项目,0,;type,类型,1,0:小-1:中-2:大;complete,完成,2,;remark,备注,3,;listbox,设备表,4,

7,可以实时上传文件到后台服务器,实时下载后台服务器的文件和实时更新PDA上客户端的系统!

8,可以实时采集和传输图像信息!

跟据您的需要,还可以增加其它功能!

QQ:546046182

cnzdgs 2008-11-04
  • 打赏
  • 举报
回复
我的意思是只有主窗口在关闭的时候隐藏,其它窗口都直接关闭,不会浪费太多资源。
leechiyang 2008-11-04
  • 打赏
  • 举报
回复
to draculacsdn:
IE打开新窗口的时候并不新开一个新进程,那样是无法共享COOKIE的,很多B/S系统就都无法使用了。
leechiyang 2008-11-04
  • 打赏
  • 举报
回复
to cnzdgs:

我也想过把不显示的窗口隐藏起来,在程序里加个全局计数器,开一个新窗口计数器加1,关闭一个窗口减1,计数器为0后退出程序,类似于COM对象的生命周期管理方式。

但是这样比较浪费内存,用户连续使用本程序打开/关闭页面就不太好了。不知道有没有能够根本解决问题的办法?
draculacsdn 2008-11-04
  • 打赏
  • 举报
回复
可以在新打开窗口的时候再启动一个程序,因为ie也是这样子的,就是一个可执行程序能够启动多次就行了
cnzdgs 2008-11-04
  • 打赏
  • 举报
回复
可以响应框架类的WM_CLOSE消息,用if(this==AfxGetMainWnd())判断是不是主窗口,如果是主窗口,再查一下是否有其它未关闭的窗口,如果有,则用ShowWindow将自己隐藏,然后返回,不调用基类的OnClose函数;如果不是主窗口,则调用基类的OnClose函数,然后检查是否还有其它窗口存在,如果没有其它窗口,且主窗口是隐藏状态,则向主窗口发送关闭消息。在OnClose函数中判断窗口是否为隐藏状态,如果是隐藏状态则调用基类的OnClose函数退出。

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧