Delphi中用Webbrowser加载百度地图滚轮失效(ApplicationEvents里使用IsChild提前判断是哪个控件的消息)
2015-08-18 16:30
465 查看
在Delphi中使用Webbrowser加载百度地图时,点击了其它界面,再回到百度地图中,即使点击了鼠标,再用滚轮也不能缩
放地图,除非点地图里面的自带的控件,之后才能缩放,原因是因为其它窗体控件获得焦点后没还回给Webbrowser.
目前的解决办法是在窗体上拖一个ApplicationEvents,在他的OnMessage事件中写入如下代码:
参考:http://m.blog.csdn.net/blog/fghydx/46122569
放地图,除非点地图里面的自带的控件,之后才能缩放,原因是因为其它窗体控件获得焦点后没还回给Webbrowser.
目前的解决办法是在窗体上拖一个ApplicationEvents,在他的OnMessage事件中写入如下代码:
if IsChild(WebBrowser1.Handle, Msg.Hwnd) then begin // 使用API进行判断,第一个参数是父窗口,第二个参数是测试窗口 if ((Msg.Message = WM_LBUTTONDOWN) or (Msg.Message = WM_LBUTTONUP)) then begin Webbrowser1.SetFocus; end; end; procedure SetFocusToDoc(Webbrowser:TWebBrowser); begin if Webbrowser.Document <> nil then begin if IHTMLDocument2(WebBrowser1.Document).activeElement<>IHTMLDocument2(WebBrowser1.Document).body then begin with Webbrowser.Application as IOleobject do DoVerb(OLEIVERB_UIACTIVATE, nil, Webbrowser, 0, Handle, GetClientRect); end; end; // if Webbrowser.Document <> nil then // begin // with Webbrowser.Application as IOleobject do //引用ActivitX // DoVerb(OLEIVERB_UIACTIVATE, nil, Webbrowser, 0, Handle, GetClientRect); // end; // if WebBrowser1.Document <> nil then // begin // if not IHTMLDocument4(WebBrowser1.Document).hasFocus then //引用MSHTML单元 // IHTMLWindow2(IHTMLDocument2(WebBrowser1.Document).ParentWindow).focus; // end; // if WebBrowser1.Document <> nil then // begin // if not IHTMLDocument4(WebBrowser1.Document).hasFocus then // IHTMLDocument4(WebBrowser1.Document).focus; // end; end;
参考:http://m.blog.csdn.net/blog/fghydx/46122569
相关文章推荐
- iOS开发问题——简单的验证码倒计时显示
- Objective-C 学习笔记 4 数据类型和表达式
- iOS-如何集成iOS9里的3D Touch
- Android 判断应用是否是第一次运行相应的执行不同的操作
- android横竖屏控制
- iOS-如何将非ARC的项目转换成ARC项目
- 关于android ListView倒计时遇到的一些问题
- IOS 数组去重及排序
- iOS开发- Xcode插件- 规范注释生成器VVDocumenter 自己的见解
- 【攻克Android (45)】四大组件之 ContentProvider
- iOS结构体二进制NSData相互转换
- Unity Object中文翻译
- IOS高访微信聊天对话界面(sizeWithFont:constrainedToSize和stretchableImageWithLeftCapWidth的使用)
- iOS开发之Quartz2D生成PDF-Part2
- 设计模式在android中的应用之2,策略模式
- Android 用户反馈界面的实现
- 【appium】查看Android应用包名、Activity的几个方法
- Android 代码混淆的实践
- Object-C 和 Swift 混编 之二 Swift 中调用 Object-C
- iOS判断当前控制器是否在显示