如何在VC中嵌入IE

一、需要在你的程序中嵌入IE浏览器的窗口。有两种实现方法,其一,添加CHtmlView的视类;其二,添加IE浏览器的ActiveX控件。其实不管用什么方法,除了函数名称稍有区别外,它们最终都调用了微软的IWebBrowser2的接口。

 

二、方法和步骤:
 1. 建立一个对话窗形式的MFC应用程序,注意在导航的第2页上,一定要选择ActiveX Controls。这也是默认的选择。
 2. 向工程中添加 Microsoft Web 浏览器的ActiveX控件。
执行菜单 Project/Add To Project/Components And Controls... 选择Registered ActiveX Controls目录,找到Microsoft Web 浏览器,并Insert。这样MFC会给你产生一个IWebBrowser2的包装类CWebBrowser2。
 3. 在对话窗资源编辑器中,把工具条上的IE控件放到你的对话窗中。启动ClassWizard,映射这个IE控件为CWebBrowser2的一个对象(在演示程序中的对象名称是m_ie)

 三、演示程序中一些需要说明介绍的知识:(更多更详细的使用信息,请参考CHtmlView,IWebBrowser2的MSDN说明)
 1. 显示浏览一个HTML文件(或ActiveX文档类型的文件,如Word,PDF等),请使用Navigate()/Navigate2()函数
 2. 关于背景音乐、图象文件、FLASH等显示,其实是按照HTML的语法标记,直接写在HTML文件中的。
 3. 打印功能,需要调用ExecWB()函数。这个函数的功能非常多,根据参数命令(OLECMDID),能够实现诸如打印、保存、剪贴版等30多个功能。
 4. IE控件有一个非常重要的事件(当打开HTML的连接之前)。重载虚函数OnBeforeNavigate2()后,可以实现连接重定向;提取HTML中用户输入的表单数据等功能。在演示程序中,也给大家展示了如何取得数据,及安全数组的用法。
 5. 演示程序中,为了突出重点。HTML模版文件都非常基本和简单。如果你有深厚的HTML知识的功底,那就尽情发挥吧。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
VC ListCtrl是MFC的一种控件,用于显示数据列表。如果需要在ListCtrl嵌入进度条,可以通过以下步骤实现: 1. 首先,在ListCtrl的列头添加一个进度条列。可以使用InsertColumn函数指定插入的列的标题和宽度。 2. 然后,通过SetItem函数为每一行数据的进度条列插入一条数据。可以使用下述代码示例: ```cpp int nItem = pListCtrl->GetItemCount(); pListCtrl->InsertItem(nItem, _T("")); CProgressCtrl* pProgress = new CProgressCtrl; pProgress->Create(WS_CHILD | WS_VISIBLE, CRect(0, 0, 100, 20), pListCtrl, 0); pListCtrl->SetItemData(nItem, (DWORD_PTR)pProgress); pListCtrl->SetItem(nItem, nColumnIndex, LVIF_PARAM, NULL, 0, 0, (LPARAM)pProgress); ``` 3. 接下来,需要在绘制ListCtrl的每一行时,将进度条绘制出来。可以使用下述代码示例: ```cpp void CMyListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) { CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC); CRect rcItem(lpDrawItemStruct->rcItem); int nColumnCount = GetHeaderCtrl()->GetItemCount(); // 绘制进度条 if (lpDrawItemStruct->itemData) { CRect rcProgress(rcItem.left, rcItem.top, rcItem.right, rcItem.bottom); CProgressCtrl* pProgress = (CProgressCtrl*)lpDrawItemStruct->itemData; pProgress->MoveWindow(rcProgress); pProgress->SetWindowPos(NULL, rcProgress.left, rcProgress.top, rcProgress.Width(), rcProgress.Height(), SWP_NOZORDER); } // 绘制其他单元格内容 // 绘制选择框 // 绘制焦点框 } ``` 4. 最后,在ListCtrl更新进度条的值。可以使用下述代码示例: ```cpp CProgressCtrl* pProgress = (CProgressCtrl*)pListCtrl->GetItemData(nItem); pProgress->SetRange(0, 100); pProgress->SetPos(nProgressValue); ``` 通过以上步骤,就可以在VC ListCtrl嵌入进度条,并更新和显示相应的进度值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值