如何使用 MFC 以编程方式更改 ActiveX 控件的属性?

Posted

技术标签:

【中文标题】如何使用 MFC 以编程方式更改 ActiveX 控件的属性?【英文标题】:How to change ActiveX control's property programmatically with MFC? 【发布时间】:2011-11-30 02:00:30 【问题描述】:

我在我的MFC项目中添加了一个activex控件,我没有使用对话框编辑器添加控件,我只是使用MFC为控件生成了一个包装类,并在包装​​类中调用“create”成员要以编程方式创建控件,代码或多或少类似于:

class CMyView


CCalendar m_ctl;
//other members.....

int CMyView::OnCreate

  m_ctl.create("",WS_CHILD|WS_VISIBLE,this,CRect(50,50,100,100));
  //.....

但是我发现包装类无法让我更改控件的属性,所以如果我想以编程方式更改控件的属性,我该怎么办?我可以通过包装类来实现这一点吗?或者它可以完全以编程方式完成吗?还是只能通过对话框编辑器完成?谢谢。

【问题讨论】:

您要更改什么属性? 任何自定义或库存属性,例如,如果 Calendar 控件提供了一个“redSunday”属性,它可能导致星期日显示为红色,我想实用地打开和关闭此属性。跨度> How to find the function name, which is going to be invoked?的可能重复 【参考方案1】:

是的,包装器仅包含函数,如果您通过类向导创建它。

要更改属性,即变量,您可以在表单或对话框中实例化 ActiveX,并且您可以在属性窗口中修改属性值。

如果您想在运行时执行此操作,您可以右键单击 activeX 对象,然后单击添加变量。您将看到它还将为对象创建包装类。此类将自动包含 activex 的 getter 和 setter,在新生成的头文件中可见。 如果您已经为您的 activex 创建了一个包装类,它可能无法正常工作,请在新项目中尝试。然后,您可以将生成的 .cpp 和 .h 文件复制到您自己的项目中。

【讨论】:

以上是关于如何使用 MFC 以编程方式更改 ActiveX 控件的属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式确定是不是已安装 ActiveX 控件,以及它或整个 ActiveX 是不是已被禁用?

如何将字节数组从 c# 传递到 MFC ActiveX

无法在 MFC 无窗口 Activex 中获取 Cwnd 类的句柄?

以编程方式更改项目设置

如何使用 MFC 为 ActiveX 控件添加任何可重用接口?

如何在 MFC 对话框中替换/更新 ActiveX 控件