cocos2d-x win32平台嵌入浏览器—IWebBrowser2的使用

cocos2d-x win32平台嵌入浏览器—IWebBrowser2的使用,第1张

概述这一篇暂时不会涉及到cocos2d-x的内容,只是先用win32 api以及IWebBrowser2这个com组件来创建一个浏览器应用,这边所用的开发工具还是用vs2010。 打开vs2010,文件->新建->项目->Visual C++->Win32项目,项目的名称就接点地气,取名为Cocos2dxWebBrowser,一路下一步直到完成。自动完成的向导会生成Cocos2dxWebBrowser

这一篇暂时不会涉及到cocos2d-x的内容,只是先用win32 API以及IWebbrowser2这个com组件来创建一个浏览器应用,这边所用的开发工具还是用vs2010。

打开vs2010,文件->新建->项目->Visual C++->Win32项目,项目的名称就接点地气,取名为Cocos2dxWebbrowser,一路下一步直到完成。自动完成的向导会生成Cocos2dxWebbrowser.cpp这个文件,在这个文件的开头处加入以下代码

#include "stdafx.h"#include "Cocos2dxWebbrowser.h"//以下代码就是要加的头文件以及需要导入的库文件#include <atlbase.h>#include <atlwin.h>  #include <windows.h>  #pragma comment(lib,"atl")  #pragma comment(lib,"User32.lib")  CComModule _Module;  //这个是必要的,不要忘记

找到WndProc这个窗口函数,加入以下变量

RECT rc;  IWebbrowser2* iWebbrowser;  VARIANT varMyURL;  static CAxWindow WinContainer;LPolESTR pszname = olESTR("shell.Explorer.2");  GetClIEntRect(hWnd,&rc);
static CAxWindow WinContainer;

CAxWindow是一个ActiveX控件,ActiveX控件这玩意知名度最高的估计是Flash插件以及Flash播放器。这边过多的细节就不展开,这边只要记住需要用这个ActiveX窗口做为浏览器的容器。

LPolESTR pszname = olESTR("shell.Explorer.2");
这边所做的只是字符串之间的转换,如果你了解win32 sdk中关于Unicode和Ascii的各种恩怨情仇,这句话你就能明白。当然这种恩怨情仇各种初学者都经历过。

GetClIEntRect(hWnd,&rc);
这一句更是经典的获取当前窗口客户区大小的函数,所谓的客户区是指去掉标题栏、菜单栏以及状态栏之后的可见区域。当你按照向导生成的代码,编译运行后会看到一个菜单栏加一块白色的区域,那个白色的区域就是客户区。

VARIANT varMyURL; 
VARIANT顾名思义就是变量的意思,这个变量是对当前语言体系中所有变量在类层次上的分装,待会会为这个变量分配一个字符串,用它来表示需要打开的URL。 接着再在swicth中加入WM_CREATE消息和创建浏览器的代码
case WM_CREATE:{	WinContainer.Create(hWnd,rc,WS_CHILD |WS_VISIBLE);  	WinContainer.CreateControl(pszname);  	WinContainer.queryControl(__uuIDof(IWebbrowser2),(voID**)&iWebbrowser);   	Variantinit(&varMyURL);  	varMyURL.vt = VT_BSTR;   	varMyURL.bstrVal = SysAllocString(_T("http://www.baIDu.com"));  	iWebbrowser-> Navigate2(&varMyURL,0);  	VariantClear(&varMyURL);   	iWebbrowser-> Release();   	}
WinContainer.Create(hWnd,WS_CHILD |WS_VISIBLE);  WinContainer.CreateControl(pszname);  WinContainer.queryControl(__uuIDof(IWebbrowser2),(voID**)&iWebbrowser);   
  

以上先用CAxWindow创建一个窗体,该窗体作为当前窗体的子窗体,接着根据之前COM组件的名字来创建一个控件(也许是组件),这个名字也就是shell.Explorer.2,即IE浏览器的COM名字,下一步是把生成好的控件的指针赋值给iWebbrowser,通过指针的指针方式来赋值。

Variantinit(&varMyURL);  varMyURL.vt = VT_BSTR;   varMyURL.bstrVal = SysAllocString(_T("http://www.baIDu.com"));

以上是为varMyURL这个VARIANT这个变量赋值,赋值的过程是要先初始化,接着把类型申明为字符串类型也就是VT_BSTR,最终用SysAllocString分配了一段字符串。这边过多细节可以不必深入,只要知道具体怎么用就好了,因为不是奔着COM来的。

iWebbrowser-> Navigate2(&varMyURL,0);  VariantClear(&varMyURL);   iWebbrowser-> Release();

最后调用IWebbrowser2的Navigate2来打开URL,以及一些收尾的工作。

自此用win32 API创建浏览器的过程就完成了,各位可以编译试试看。

大家可以去下载这个工程的完整代码来玩玩Cocos2dxWebBrowser

总结

以上是内存溢出为你收集整理的cocos2d-x win32平台嵌入浏览器—IWebBrowser2的使用全部内容,希望文章能够帮你解决cocos2d-x win32平台嵌入浏览器—IWebBrowser2的使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1005869.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存