WebBrowser隐藏后自动销毁的BUG以及解决办法

程序主界面上有个浏览器控件,里面是google地图,需要点击一个按钮后隐藏浏览器控件,显示其他界面,而且要做到还可以切换到原来的地图上。

一开始只是在浏览器上覆盖了一个图片控件,没有隐藏浏览器,后来发现这样不行,鼠标移动到原来浏览器控件的位置上时,

会变成”小抓手”(google地图上移动地图的抓手)。

后来切换到其他界面时用 ShowWindow将浏览器隐藏,但是出问题了,切换回来时浏览器就消失不见了。

查了下资料,原来MFC中的WebBrowser控件有BUG:
m_webBrowser.ShowWindow(SW_HIDE);之后控件就被自动销毁了,再也显示不出来了。

原因:
在MFC中,WebBrowser控件动态创建,没有设置WS_VISIBLE 属性 或者 调用了ShowWindow(SW_HIDE);
就会调用IOleControl::DoVerb() ,使WebBrowser控件的实例被销毁。

解决办法:

(1)
用SDK版的ShowWindow函数。
//隐藏IE控件
::ShowWindow(m_webBrowser .GetSafeHwnd(), SW_HIDE );
//显示IE控件
::ShowWindow(m_webBrowser .GetSafeHwnd(), SW_SHOW );

(2)

用MoveWindow()将浏览器控件移动到窗口边角地方,并且将窗口的长宽都置为0,需要时在MoveWindow移回来。

Original: https://www.cnblogs.com/javaexam2/archive/2012/08/10/2632940.html
Author: java简单例子
Title: WebBrowser隐藏后自动销毁的BUG以及解决办法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/539055/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Nginx核心知识100讲学习笔记(陶辉)详解HTTP模块(接受请求模块|正则表达式|冲突合并)

    一、冲突的配置指令以谁为准? 1、配置块的嵌套 bash;gutter:true; main http { upstream { … } split_clients {…}…

    Java 2023年5月30日
    068
  • Nginx做前端Proxy时TIME_WAIT过多的问题

    我们的DSP系统目前基本非凌晨时段的QPS都在10W以上,我们使用Golang来处理这些HTTP请求,Web服务器的前端用Nginx来做负载均衡,通过Nginx的proxy_pas…

    Java 2023年5月30日
    050
  • 回溯法实现全排序Ⅰ

    给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: &…

    Java 2023年6月16日
    080
  • Cannot deserialize instance of `java.lang.String` out of START_OBJECT token

    前端请求进入后端控制器报错【Cannot deserialize instance of java.lang.String out of START_OBJECT token】,从…

    Java 2023年5月29日
    081
  • 自定义存储过程和函数

    自定义存储过程和函数 存储过程是一组事先编译好、能完成特定功能的sql语句集合,是一个独立的数据库对象。存储过程类似于高级语言中的函数,可被用户的应用程序调用、执行。SPL是在GB…

    Java 2023年6月9日
    071
  • Java基础之 数据类型

    数据类型 强类型语言 要求变量的使用要严格符合会定,所有变量都必须先定义后才能使用 弱类型语言 变量的使用没有那么严格 位(bit):是计算机 内部数据 储存的最小单位,11001…

    Java 2023年6月8日
    064
  • 约瑟夫环数学问题,最容易看懂的教程。

    先大概看一下图片中的内容,下面做详细解释 其中字母的意义代表A倒数第二个死亡,B倒数第三个死亡,以此类推。前几个可能不容易看懂,但是仔细看 第四步到第五步的下标变化, 相当于把第四…

    Java 2023年6月5日
    0142
  • 2、自动回复消息

    上一篇已经接入公众平台,现在来说下消息回复 接入公众平台与消息处理区别: 接入公众平台 : method = RequestMethod.GET; 消息处理 : method = …

    Java 2023年6月13日
    061
  • Redis缓存相关的几个问题

    1 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来…

    Java 2023年6月7日
    063
  • springboot整合mybatis-plus代码生成器遇到bug

    一、生成的实体类没有ID主键 二、生成的mapper不能自动注入 在mapper中添加@Mapper注解,(如果有自定义的mapper.xml,在application.prope…

    Java 2023年6月13日
    063
  • java 将日期格式中的月份为转换为3个英文字母

    posted @2020-06-05 17:57 筱筱的春天 阅读(3190 ) 评论() 编辑 Original: https://www.cnblogs.com/baxianh…

    Java 2023年5月29日
    073
  • Idea的Debug

    来自CSDN:https://blog.csdn.net/yxl_1207/article/details/80973622 Original: https://www.cnblo…

    Java 2023年6月8日
    058
  • 大文件批量上传断点续传文件秒传

    在上篇中,我们可以使用 file. slice 方法对文件进行分片,可以从后台读到当前文件已经上传的大小,就可以知道从哪里开始切片,断点续传的原理就是基于这个的。 前端计算文件的 …

    Java 2023年6月5日
    081
  • 设计模式之建造者模式–工厂模式、生成器模式、单例模式、原型模式

    一 、学习原型模式,从模式动机、模式定义与分析、模式实例及代码要点、模式优缺点及应用场景四个方面分析该模式。 1模式动机: √复制一个对象,从而克隆出多个与原型对象一模一样的对象—…

    Java 2023年6月7日
    066
  • Redis下载安装

    nosql : 不仅仅只有sql 。 随着业务的增长和产品的完善,急速增长的数据给Oracle数据库带来了很大的压力,而随着我们对产品服务质量要求的提高,传统的数据查询方式已无法满…

    Java 2023年6月9日
    067
  • nginx配置返回文本或json

    有些时候请求某些接口的时候需要返回指定的文本字符串或者json字符串,如果逻辑非常简单或者干脆是固定的字符串,那么可以使用nginx快速实现,这样就不用编写程序响应请求了,可以减少…

    Java 2023年5月30日
    069
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球