MFC ActiveX控件的创建

参考资料:MFC ActiveX (ocx)控件的开发_hk的博客-CSDN博客MFC ActiveX (ocx)开发https://blog.csdn.net/hkcsdn/article/details/52908748

15.COM组件技术应用之一:ActiveX控件 - 甩锅侠 - 博客园一、ActiveX控件(COM组件技术的应用之一) flash.ocx 1. 概念 1.1 ActiveX控件的概念 基于COM组件技术,可以被任何支持COM标准的计算机程序的项目使用。 可是采用拖拽https://www.cnblogs.com/csqtech/p/5745082.html 

1、编译失败的解决方案

VS报错:error MSB8011: Failed to register output. Please try enabling Per-user Redir......_buknow的博客-CSDN博客关于error MSB8011: Failed to register output. Please try enabling Per-user Redirection or register the component from a command prompt with elevated permissions.解决办法:大概有四种:第一种:Solution Explorer ->...https://blog.csdn.net/buknow/article/details/906450232、注册ocx失败的解决方案

需要用管理员权限的cmd注册

测试:新建一个MFC对话框程序

1、工具箱添加ActiveX控件,菜单“工具”-》“选择工具箱项”

选择“COM组件”,在你想要选择的控件上面打钩

 

工具箱最下面就多了对应ActiveX控件

拖到界面效果如下: 

笔者按:但是这样的办法有个弊端,电脑必须得安装注册这个ocx控件,不然对话框exe就打不开了。

 2、动态加载ActiveX控件方式

类向导 Ctrl + Shitf + x

 

 

动态创建ActiveX控件代码,最后这个是控件id,自己定义一下,只要不和mfc自动创建的id冲突即可

对话框头文件

private:
    CDMFCActiveXControl1 m_xtxApp;

对话框cpp文件

BOOL CTestActivXDlg::OnInitDialog()
{
    m_xtxApp.Create(_T("MFCActiveXControl1"), _T(""),WS_CHILD | WS_VISIBLE,CRect(0,0,0,0), 
    this, xtxCOMID);
}

#define xtxCOMID 3004

笔者按,动态加载的办法比较好做不同版本的兼容,按需加载ActiveX控件

3、测试ActiveX控件的事件

 添加ActiveX控件事件有个bug,必须加了标准事件后,自定义事件在可视化添加响应函数才会出现

1)方法一,可视化添加办法,有普通控件一样,没什么区别 。

2)手动添加

头文件

public:
    DECLARE_EVENTSINK_MAP()
    void OnSendMfcactivexcontroctrl1(); 

注意前面不能加afx_msg,笔者一开始加了,发现事件一直响应不了

添加映射

BEGIN_EVENTSINK_MAP(CTestActivXDlg, CDialogEx)
    ON_EVENT(CTestActivXDlg,xtxCOMID /*IDC_XTXAPP1*/, 1, CTestActivXDlg::OnSend, VTS_NONE)
    ON_EVENT(CTestActivXDlg, IDC_MFCACTIVEXCONTROCTRL1, DISPID_CLICK, CTestActivXDlg::OnSendMfcactivexcontroctrl1, VTS_NONE)
END_EVENTSINK_MAP()


void CTestActivXDlg::OnSendMfcactivexcontroctrl1()
{
    int b;
    b = 3;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值