[转]走进IE编程 (2)嵌入Web browser

 作者:(yjgx007)

很多情况下, 特别是在GUI用户界面设计中, 漂亮和易定制的HTML用户界面是非常受欢迎的, 当然, 还有XML定制

的GUI, 这里暂不讲述.
在VS6.0时代, 我们一直用CHTMLView类作为显示HTML页面的类, 事实上, 这个类正是嵌入了Web browser(以后简

称WB)控件, 在事件交互方面, 它提供了一些HTML页面导航和状态控制的可重载的事件函数, 但是没有提供怎样

和HTML页面中元素进行交互的接口, HTML用户界面也就变得不太可能了, 当然, 熟悉ATL/COM的程序员仍然可以

摆脱MFC, 开发自已的基于WB控件的GUI界面.
从VS.NET 2005开始Microsoft MFC 7.0的类里多了一个CDHTMLDialog, 这个类实际上仍然嵌入了WB控件 + 普通

的对话框控件, 只不过针对HTML元素事件处理方面做了更多的工作, 详见其父类CDHtmlEventSink, 如果你有更

强的好奇心, 你可以看下面对CDHtmlEventSink的简要解释, 否则, 就暂时跳过去, 以后, 我们还会讲到.

------------------------------------------------------------------------------------------------
CDHtmlEventSink的功能摘要:
在创建对话框的时候, Web browser控件也同时被创建, 我们知道控件是基于COM的组件, 更进一步地Microsoft

称它为OLE对象, 也许你不知道OLE, 建议您亲自动搜索下. 按照正常人的思维, 即然控件可以被嵌入对话框, 对

话框和WB控件一定是可以通过事件一起进行交互工作的, 如果你用过MFC, 一定非常熟悉其中的消息映射, 甚至

你可以告诉我消息映射宏是怎样创建的, WB控件的事件处理基本上与此类似, 只不过从概念上并非再是消息

(message)映射宏, 而是事件(event)宏, 你可能有点困惑了, 没关系, 在windows控件的事件处理是完全基于消

息的, 你可以理解为一个特定的消息指向了一个特定的事件. 同理, 在WB控件中, 存在一个事件接收器(sink),

它暴露(expose)给你这个事件接收器, 你就可以收到各种各样的事件了.
下面是WB控件的事件映射宏的一个示例, "ButtonOK"是WB控件中HTML页面的某个名称为"ButtonOK"的元素 -

<input type="button" name="ButtonOK" value="OK" />, OnOK是CMyDialog的成员函数, 负责处理"ButtonOK"

元素的点击事件.

BEGIN_DHTML_EVENT_MAP(CMyDialog)
    DHTML_EVENT_ONCLICK(_T("ButtonOK"), OnOK)
    DHTML_EVENT_ONCLICK(_T("ButtonCancel"), OnCancel)
END_DHTML_EVENT_MAP()

------------------------------------------------------------------------------------------------

很多情况下, 我们用WB控件用得很舒服, 甚至可以定制一些关于WB控件在导航HTML页面时的一些自身行为, 像导

航前的HTTP头的修改, 因此, 把相同的操作方式应用在IE browser中, 结果是根本不执行. 这个归咎于浏览器自

身的安全性问题, 在这方面我们以后将做更多探讨.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值