VS2015 MFCActiveX使用对话框调用另外一个ActiveX控件

VS2015 MFCActiveX使用对话框调用另外一个ActiveX控件MFCActiveX 控件的用途广泛 生成的文件就是在网页编程里使用比较多的 OCX 控件 在网页的 object 标签里可以调用 OCX 控件 那么比如我想制作一个 OCX 控件 在控件里加载一个网页这种该如何实现了 熟悉 MFC 的应该知道 MFC 里可以直接使用 webbrowser 这个 ActiveX 控件 使用 webbrowser 可以很方便的加载网页 下面讲解该如何实现这一功能 首先使用 vs2015 新建一个 MFC

BOOL CDialog1::OnInitDialog() { CDialogEx::OnInitDialog(); // TODO: 在此添加额外的初始化 m_web.Navigate(L"https://www.baidu.com/", NULL, NULL, NULL, NULL); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } 
#pragma once //引入对话框头文件 #include"Dialog1.h" `//并在类中定义对话框的变量: public: //定义对话框的变量 CDialog1 m_dialog1; 

然后在类向导中为CMFCActiveXTestCtrl添加两个消息函数OnCreate和OnSize这两个消息函数里添加相应加载对话框的代码:

int CMFCActiveXTestCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (COleControl::OnCreate(lpCreateStruct) == -1) return -1; // TODO: 在此添加您专用的创建代码 m_dialog1.Create(IDD_DIALOG1, this); return 0; } void CMFCActiveXTestCtrl::OnSize(UINT nType, int cx, int cy) { COleControl::OnSize(nType, cx, cy); // TODO: 在此处添加消息处理程序代码 RECT activeRect; GetClientRect(&activeRect); m_dialog1.MoveWindow(&activeRect); } 

完成上面的步骤我们就将一个包含有ActiveX控件(webbrowser控件)的对话框嵌入到我们自己的ActiveX控件里了。如果这个时候你以为就大功告成了,那就错了。因为你会发现在调用这个自己创建的ActiveX控件时,无法显示内部嵌入的webbrowser控件。这是因为MFC ActiveX默认情况下不支持嵌入另外一个ActiveX控件,我们需要加这样一行代码。在CMFCActiveXTestApp 类的InitInstance()函数里添加控件包容器代码:

BOOL CMFCActiveXTestApp::InitInstance() { BOOL bInit = COleControlModule::InitInstance(); if (bInit) { // TODO: 在此添加您自己的模块初始化代码。 //添加控件包含器,不然在对话框中不能显示控件 //添加控件包容器 AfxEnableControlContainer(); } return bInit; } 
 
   
    
     
     OCX测试 
      
      
      
     

在vs2010中有ActiveX控件测试容器也可以测试ocx。

资源下载地址:

https://download.csdn.net/download/_/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230178.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午2:57
下一篇 2026年3月16日 下午2:57


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号