WEB开发网
开发学院软件开发VC MFC程序员的WTL指南(7)包容ActiveX控件 阅读

MFC程序员的WTL指南(7)包容ActiveX控件

 2006-07-22 22:03:17 来源:WEB开发网   
核心提示: 事件和伴随事件发送的数据都被记录在列表控件中,你可以看到事件的触发,MFC程序员的WTL指南(7)包容ActiveX控件(10),你还可以关闭一些事件记录而仅仅观察其中的一辆个事件,为了演示事件处理的重要作用,还可以在运行其间动态创建ActiveX控件,About对话框演示了这种技术,我们

事件和伴随事件发送的数据都被记录在列表控件中,你可以看到事件的触发,你还可以关闭一些事件记录而仅仅观察其中的一辆个事件。为了演示事件处理的重要作用,我们在BeforeNavigate2事件处理函数中检查URL,如果发现“doubleclick.net”就取消导航。广告和弹出窗口过滤器等一些IE的插件使用的就是这个方法而不是HTTP代理,下面就是做这些检查的代码。

void __stdcall CMainDlg::OnBeforeNavigate2 (
  IDispatch* pDisp, VARIANT* URL, VARIANT* Flags,
  VARIANT* TargetFrameName, VARIANT* PostData,
  VARIANT* Headers, VARIANT_BOOL* Cancel )
{
USES_CONVERSION;
CString sURL;
  sURL = URL->bstrVal;
  // You can set *Cancel to VARIANT_TRUE to stop the
  // navigation from happening. For example, to stop
  // navigates to evil tracking companies like doubleclick.net:
  if ( sURL.Find ( _T("doubleclick.net") ) > 0 )
    *Cancel = VARIANT_TRUE;
}

下面就是我们的程序工作起来的样子:

IEHoster还使用了前几章介绍过得类:CBitmapButton(用于浏览器控制按钮),CListViewCtrl(用于事件记录),DDX (跟踪checkbox的状态)和CDialogResize.

运行时创建ActiveX控件

出了使用资源编辑器,还可以在运行其间动态创建ActiveX控件。About对话框演示了这种技术。对话框编辑器预先放置了一个group box用于浏览器控件的定位:

在OnInitDialog()函数中我们使用 CAxWindow创建了一个新AtlAxWin,它定位于我们预先放置好的group box的位置上(这个group box随后被销毁):

上一页  5 6 7 8 9 10 

Tags:MFC 程序员 WTL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接