浏览器

·会员区中已经更新关于ASP.NET的学习资料。(2007-11-07)
·会员区中已经更新关于各家浏览器测试比较的数据资料。(2007-09-25)
·会员区中已经更新关于火狐浏览器使用技巧的电子书。(2007-06-11)
·会员区中已经更新关于VBL浏览器开发的一些代码资料。(2007-02-18)
·飞马团队正式决定停止VBL浏览器的开发工作。(2006-08-05)
·VBL浏览器5.0开发完成,欢迎测试。(2006-06-28)
 
 火狐浏览器下载:    

  火狐浏览器上网,更好的冲浪体验!中文正版!免费!

  来自火狐浏览器官方的下载地址:
 

 

开发实例EVC:浏览器窗口

 

付林林

 

  关于显示GIF图片的问题。要么使用国外做的专用于显示GIF图片的类,或者利用IWebBrowserCOM组件。我用它做过自定义的IE。微软提供了CE下IE的源程序,就是利用这个组件来实现IE各个功能的。我做IE是因为WindowsCE自带的IE在各个方面都不满足要求,于是在IE源程序的基础上编写了符合我们要求的浏览器。

文章并不是要讲解如何做浏览器,而是用IWebBrowser组件来显示GIF、JPG图片,当然也能够显示网页。做浏览器要比只显示图片、网页要复杂的多。

  PocketPC下开发的人多数会感到奇怪,不是有HtmlView吗?怎么还要自己写啊。因为微软为PocketPC定制的内核包含的SDK中,含有支持网页浏览的控件,而在WindowsCE.NET中没有。这就需要自己实现了。在这里我采用模拟器来试验。模拟器能通过实际平台就更能通过了。操作基本一样。

  一、制作带有IE的内核

  在模拟器下定制一个内核大家应该不会陌生了,以前的文章中我已经讲过不止一次了。所以在这里我会简略的说明如何定制内核。第一步,选择"EMULATOR:X86",之后在"Available configuration"中选择"InternetAppliance"。接着只选择"Internet Browser",第五步只选择"InternetBrowser",第六步去掉所有网络选项,最后"Done"。编译前加入环境变量"IMGRAM64",然后选择"EMULATOR:x86Win32{WCE emulator}Release",开始编译。编译后单击"Download/Initialize"

  下载内核到模拟器上运行。单击桌面上的IE快捷图标,如果IE显示出来那第一步就成功了。

  二、编写程序

  这个程序我用EVC单独编写编译。而不在PB下编写。PB附带的应用程序向导没有MFC的选项,不如用EVC编写方便,编译后再将程序复制到内核目录下,通过PB来运行。

  编写程序我也不会过于详细的讲解,只讲解相关的代码。调出EVC,利用应用程序向导产生一个MFC程序,假设工程名为IEGIF,第一步选择单文档程序,语言下拉列表随便选。第二步复选"Windows Sockets"和"ActiveXControls",其它步骤默认。

  利用IWebBrowser组件前当然要先包含它需要的头文件了。在"stdafx. h"中添加下列文件名:

/////////////////////
#undef __urlmon_h__
#include <urlmon.h>
#undef _SHLOBJ_H_
#include <shlobj.h>
#undef _WINNETWK_
#include <winnetwk.h>
#undef __AFXHTML_H__
#include "afxhtml.h"在IEGIFView .h文件里CIEGIFView类的声明中添加下列代码:public:
  IWebBrowser2 *m_pBrowser;
  CWnd     m_wndBrowser;  ////IWebBrowser2 的容器
  void      Navigate(CString);///调用IWebBrowser2的Navigate接口在CIEGIFView类的构造函数中初始化指针:CIEGIFView::CIEGIFView ()
{
  m_pBrowser = NULL;
}在IEGIFView .cpp文件里定义下列函数:void CIEGIFView::Navigate(CString strURL)
{
  COleVariant   empty;
  BSTR bstrURL = strURL.AllocSysString();
  m_pBrowser->Navigate (bstrURL, COleVariant((long) 0, VT_I4),empty, empty, empty);
}在IEGIFView .cpp文件里定义消息处理函数:///响应WM_CREATE
int CIEGIFView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
  if (CView::OnCreate(lpCreateStruct) == -1)
    return -1;
  
  ////////////////////////////////////////////////////
  RECT rectClient;
  GetClientRect(&rectClient); ///在客户端整个区域显示GIF
  ///创建控件
  if (! m_wndBrowser.CreateControl(CLSID_WebBrowser, NULL,WS_VISIBLE | WS_CHILD,
  rectClient, this, AFX_IDW_PANE_FIRST))
  {
    DestroyWindow();
    return FALSE;
  }
  ///得到指针
  LPUNKNOWN lpUnk = m_wndBrowser.GetControlUnknown();
  HRESULT hr = lpUnk->QueryInterface(IID_IWebBrowser2,(void**) &m_pBrowser);
  if (! SUCCEEDED(hr))
  {
    m_pBrowser = NULL;
    m_wndBrowser.DestroyWindow();
    DestroyWindow();
    return FALSE;
  }
  
  return 0;
}
///响应命令ON_COMMAND(ID_OPENGIF, OnOpenGIF)
///随便用一个按钮,或菜单项。ID为ID_OPENGIF
void CIEGIFView::OnOpenGIF()
{
  CFileDialog dlg(TRUE, NULL, NULL);  
  if(dlg.DoModal() == IDCANCEL)
  {
    return;
  }
  Navigate(dlg.GetPathName());
 

 

 

首 页 - 关于我们 - 联系我们 - 火狐浏览器下载 - 人才招聘