activeX com 组件开发 一
来源:互联网 发布:nba怎么查询端口号 编辑:程序博客网 时间:2024/04/30 04:05
com组件开发 可以用vb c# vc++ 等 个人对c#比较熟练 ,但是c# 做控件弊端太大,要求客户装framework 这比较强人所难 ,当然vb 也要装运行库库 ,vc++可以装 或者不装,看你编译了 ,在说vc运行库 相对来说 ,比较轻巧,还是可以接受。所以打算花点时间,整理下vc++的com开发基础知识,从最近单的创建到复杂运用等各种界面的实现,及基本的。ole对象方法的使用。
vc++ 开发又分两个框架 mfc 及atl 这个 也会再文章一一来总结,先从最熟悉的 mfc开始 来做总结。
1、创建一个activeX 控件
2、添加属性 、方法、及事件
1)添加属性: 切换到类视图
在 _DActivexTest 上面右键弹出下面菜单
鼠标移动到“添加”菜单 弹出 添加属性 添加方法 这两个二级菜单 ,单击 添加属性 输入属性类型 及属性名称 单击完成
这时候属性是设置好了 但是 现在还没有赋值
在ActivexTestCtrl.h 文件中添加一个变量 修改后 头文件如下
#pragma once// ActivexTestCtrl.h : CActivexTestCtrl ActiveX 控件类的声明。// CActivexTestCtrl : 有关实现的信息,请参阅 ActivexTestCtrl.cpp。class CActivexTestCtrl : public COleControl{DECLARE_DYNCREATE(CActivexTestCtrl)// 构造函数public:CActivexTestCtrl();// 重写public:virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid);virtual void DoPropExchange(CPropExchange* pPX);virtual void OnResetState();// 实现protected:~CActivexTestCtrl();DECLARE_OLECREATE_EX(CActivexTestCtrl) // 类工厂和 guidDECLARE_OLETYPELIB(CActivexTestCtrl) // GetTypeInfoDECLARE_PROPPAGEIDS(CActivexTestCtrl) // 属性页 IDDECLARE_OLECTLTYPE(CActivexTestCtrl)// 类型名称和杂项状态// 消息映射DECLARE_MESSAGE_MAP()// 调度映射DECLARE_DISPATCH_MAP()// 事件映射DECLARE_EVENT_MAP()// 调度和事件 IDpublic:enum {dispidTest = 1};protected:BSTR GetTest();void SetTest(LPCTSTR newVal);public: //这是自己添加的变量 ------------------------------------------------CString m_test;};
在 ActivexTestCtrl.cpp文件中 多了两个方法一个是 GetTest() 一个是SetTest() 给属性赋值
分别修改下面三个函数
void CActivexTestCtrl::DoPropExchange(CPropExchange* pPX){ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));COleControl::DoPropExchange(pPX);PX_String(pPX, _T("Test"), m_test);// TODO: 为每个持久的自定义属性调用 PX_ 函数。}
BSTR CActivexTestCtrl::GetTest(){AFX_MANAGE_STATE(AfxGetStaticModuleState());CString strResult;// TODO: 在此添加调度处理程序代码strResult = m_test;return strResult.AllocSysString();}
void CActivexTestCtrl::SetTest(LPCTSTR newVal){AFX_MANAGE_STATE(AfxGetStaticModuleState());// TODO: 在此添加属性处理程序代码m_test = newVal;InvalidateControl();SetModifiedFlag();}
这样就完成了一个属性的添加 。
2)方法的添加 单击添加方法 弹出 添加方法向导 输入返回类型 void 方法名称 function 完成
在 ActivexTestCrtl.cpp中已经多了一个方法 这个方法就是 刚定义的方法、
void CActivexTestCtrl::Function(){AFX_MANAGE_STATE(AfxGetStaticModuleState());MessageBox(_T("调用了该方法"));// TODO: 在此添加调度处理程序代码}
3)添加事件 事件分两种 一个中是控件界面事件 例如click 事件等 另一种是 内部事件
界面click 事件 切换到类视图 找到ACctivexTestCrtl类,右键弹出 添加事件 ,选择click 完成。
在该类的cpp文件中就多了该事件 只要在里面执行你需要的方法就可以了。
根据上面过程就一个简单的控件就制作完成,但是这没有复杂的界面 就仅仅简单的一个 绘制有一个圆的图形界面 或者删除掉ondraw 的一个没有图形的控件,在下面文档将制作一个带窗口的控件。
- activeX com 组件开发 一
- MASM32开发COM组件【一】
- activex com 组件开发二 安全接口的实现
- COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)
- COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控件大小(上)
- COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控件大小(上)
- COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)
- COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控件大小(上)
- COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)
- 控件、组件、插件、COM、ActiveX
- COM组件、ActiveX、OCX区别
- Python开发Activex组件
- masm32开发com组件介绍[一]
- 【转】COM组件开发实践(一)
- COM组件开发实践(一)
- COM组件开发实践(一)
- COM组件开发实践(一)
- COM组件开发实践(一)
- Markdown 11种基本语法
- asp.net请求执行过程
- 公司散伙了,总结一下
- java虚拟机——类的生命周期(上)类的加载和连接
- Java+Swing+SQL+Server2005开发酒店管理系统源代码下载
- activeX com 组件开发 一
- Packet Tracer 5.0实验(一) 交换机的基本配置与管理
- emulator:ERROR:This AVD's configuration is missing a kernel file! 解决方法
- Tencent Position & Organize
- poj 1035 Spell checker(字符串处理)
- 【移动开发】Ken Burns特效的幻灯片
- MFC颜色组合框
- 单源最短路径算法之Bellman-Ford算法
- 内的异常功能