(转发)ActiveX控件编写(OCX),及属性页访问控件类对象

2024-02-04 14:08

本文主要是介绍(转发)ActiveX控件编写(OCX),及属性页访问控件类对象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址:ActiveX控件编写(OCX),及属性页访问控件类对象

ActiveX控件编写:

由MFC向导直接生成ActiveX控件。编译即可得*.ocx控件。并注册到系统。

1.如需显示自定义对话框:

// <span style="font-family: Arial, Helvetica, sans-serif;">CMyCtrl</span><span style="font-family: Arial, Helvetica, sans-serif;">消息处理程序</span>int <span style="font-family: Arial, Helvetica, sans-serif;">CMyCtrl</span>::OnCreate(LPCREATESTRUCT lpCreateStruct)
{if (COleControl::OnCreate(lpCreateStruct) == -1)return -1;// TODO:  在此添加您专用的创建代码m_dlgMain.Create(IDD_DLG_MAIN,this);<span style="color: rgb(0, 204, 204); font-family: Arial, Helvetica, sans-serif;">//创建</span>m_dlgMain.ShowWindow(SW_SHOW);return 0;
}
void CMyCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{if (!pdc)return;// TODO: 用您自己的绘图代码替换下面的代码。m_dlgMain.m_strTitle = m_StrTitleName;<span style="color: rgb(0, 204, 204); font-family: Arial, Helvetica, sans-serif;">//更改标题</span>m_dlgMain.MoveWindow(rcBounds);<span style="color:#00cccc;">//将自定义对话框Move到该控件视即可</span>
}

2.属性页添加属性持久化及获取

CMyCtrl* CMyPropPage::GetControlClass()//获取控件类指针,这是微软官方给的代码
{CAlarmsDisplayCtrl *pMyCtrl;ULONG Ulong;// Get the array of IDispatch pointers that is stored in the property page.LPDISPATCH FAR *lpDispatch = GetObjectArray(&Ulong);// Get the CCmdTarget object that is associated with any one of the previous// array elements.pMyCtrl = (CAlarmsDisplayCtrl*)FromIDispatch(lpDispatch[0]);// Cleanupreturn pMyCtrl;
} 
void CMyPropPage::DoDataExchange(CDataExchange* pDX)
{if(pDX->m_bSaveAndValidate==0)//初始化,load{// Get the array of IDispatchs stored in the property pageCMyCtrl *pCtrl = GetControlClass();if (pCtrl){m_strTitle = pCtrl->m_StrTitleName;}}DDP_PostProcessing(pDX);DDX_Control(pDX, IDC_EDIT_TITLE, m_edtTitle);DDP_Text(pDX,IDC_EDIT_TITLE,m_strTitle,_T("StrTitleName"));DDX_Text(pDX,IDC_EDIT_TITLE,m_strTitle);if(pDX->m_bSaveAndValidate !=0)//结束保存{CMyCtrl *pCtrl = GetControlClass();if(pCtrl){pCtrl->m_StrTitleName = m_strTitle;pCtrl->SetModifiedFlag();pCtrl->Invalidate();}}
}

如果获取到的控件指针一直是NULL请在控件的构造函数中添加:

CMyCtrl::CMyCtrl()
{InitializeIIDs(&IID_DMy, &IID_DMyEvents);// TODO: 在此初始化控件的实例数据。m_xInnerUnknown = 0; 
}

如果控件中包含其他的ActiveX控件如MS Web Browser导致的Create失败,请在InitInstance中添加:AfxEnableControlContainer();

这篇关于(转发)ActiveX控件编写(OCX),及属性页访问控件类对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/677754

相关文章

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

Qt中QGroupBox控件的实现

《Qt中QGroupBox控件的实现》QGroupBox是Qt框架中一个非常有用的控件,它主要用于组织和管理一组相关的控件,本文主要介绍了Qt中QGroupBox控件的实现,具有一定的参考价值,感兴趣... 目录引言一、基本属性二、常用方法2.1 构造函数 2.2 设置标题2.3 设置复选框模式2.4 是否

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

Python中判断对象是否为空的方法

《Python中判断对象是否为空的方法》在Python开发中,判断对象是否为“空”是高频操作,但看似简单的需求却暗藏玄机,从None到空容器,从零值到自定义对象的“假值”状态,不同场景下的“空”需要精... 目录一、python中的“空”值体系二、精准判定方法对比三、常见误区解析四、进阶处理技巧五、性能优化

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

CSS will-change 属性示例详解

《CSSwill-change属性示例详解》will-change是一个CSS属性,用于告诉浏览器某个元素在未来可能会发生哪些变化,本文给大家介绍CSSwill-change属性详解,感... will-change 是一个 css 属性,用于告诉浏览器某个元素在未来可能会发生哪些变化。这可以帮助浏览器优化

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

浅析CSS 中z - index属性的作用及在什么情况下会失效

《浅析CSS中z-index属性的作用及在什么情况下会失效》z-index属性用于控制元素的堆叠顺序,值越大,元素越显示在上层,它需要元素具有定位属性(如relative、absolute、fi... 目录1. z-index 属性的作用2. z-index 失效的情况2.1 元素没有定位属性2.2 元素处

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom