工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 开发工具 > 移动开发 > 正文
EVC++开发实例之浏览器窗口
[文章信息]
作者:付林林
时间:2004-08-28
出处:
责任编辑:方舟
[文章导读]
曾有人问过我关于显示GIF图片的问题。我的回答是要么使用国外做的专用于显示GIF图片的类
advertisement
热点推荐
· 真没想到VB也可以这样用之指针技术
· 禁止QQ登录的方法
· 给你的XML文件做个数字签名
· ImageReady制作“焰火”小动画
· Java加密和数字签名编程快速入门
[正文]
  曾有人问过我关于显示GIF图片的问题。我的回答是要么使用国外做的专用于显示GIF图片的类,要么利用IWebBrowser COM组件。我还说过我用它做过自定义的IE。其实微软提供了CE下IE的源程序,就是利用这个组件来实现IE的各个功能的。我做IE是因为Windows CE自带的IE在各个方面都不符合我们的要求,于是我在IE源程序的基础上编写了符合我们要求的浏览器。这篇文章并不是要讲解如何做浏览器,而是用IWebBrowser组件来显示GIF、JPG图片,当然也能够显示网页。做浏览器要比只显示图片、网页要复杂的多。

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

  一、制作带有IE的内核

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

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

  二、编写程序

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

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

  利用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());
}


图1 显示GIF截图


发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • EVC开发实例之保存信息(二)
  • EVC开发实例之保存信息(一)
  • EVC开发实例之窗口切换
  • Windows CE串口通讯类的实现
  • 民营家电商排队造手机 设备商全面杀入
  • 英特尔澄清杨旭任职传闻 官方没宣布此消息
  • 国资委河北密制联通拆分方案
  • 垃圾邮件害人害企害国 清除垃圾邮件不手软
  • 中兴携手阿尔卡特 全球逐鹿CDMA
  • 用友总裁王文京:誓将ERP变成“大众消费”
  • 香港消费者委员会:数码相机最贵未必最好
  • 外电称中兴正评估西门子手机业务 或能并购
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索