• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > com对象集合问题,急!

com对象集合问题,急!

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了com对象,创建com对象失败,易语言com对象,vbox创建com对象失败,cad失败创建com对象等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: com 对象集合问题,急!
描述:

大家好:
    我想创建一个Com 对象 它可以存储其它Com对象,也就是这个Com对象是另外一个Com 对象的集合。 例如 IPoint 是一个点对象, IPoints 是一个点集合对象具有Add(LPDISPATCH point) RemoveItem(short Index ) short GetCount()
LPDISPATCH Item( short Index ) 等方法,来操作点对象,点对象在客户端
创建后作为参数传给方法。有朋友做过这方面的例子吗?
 下面是我写的程序,但是总是出现内存引用错误,大家帮分析一下
 interface IGraphGroupItem : IDispatch 
{
[propget, id(1), helpstring("property ItemColor")] HRESULT ItemColor([out, retval] OLE_COLOR *pVal);
[propput, id(1), helpstring("property ItemColor")] HRESULT ItemColor([in] OLE_COLOR newVal);
[propget, id(2), helpstring("property ItemSymbolStyle")] HRESULT ItemSymbolStyle([out, retval] short* pVal);
[propput, id(2), helpstring("property ItemSymbolStyle")] HRESULT ItemSymbolStyle([in] short newVal);
   
[id(3), helpstring("method GetItemValueAsString")] 
          
};
interface IGraphGroup : IDispatch 
{
[id(1), helpstring("method AddItem")] 
HRESULT AddItem([in]IGraphGroupItem*  lpItem);
[id(2), helpstring("RemoveItem")] 
HRESULT RemoveItem([in]short pValue);
[id(3), helpstring("method GetItem")] 
HRESULT GetItem([in]short sIndex , [out,retval]IGraphGroupItem** lpItem);
        [id(4), helpstring("GetCount")] 
HRESULT GetCount([out,retval]short* pValue);
};
#if !defined(AFX_GRAPHGROUP_H__72C58F15_9053_43DA_BB48_843CC67257B1__INCLUDED_)
#define AFX_GRAPHGROUP_H__72C58F15_9053_43DA_BB48_843CC67257B1__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// GraphGroup.h : header file
//
#include "GraphGroupItem.h"
/////////////////////////////////////////////////////////////////////////////
// CGraphGroup command target
class CGraphGroup : public CCmdTarget
{
DECLARE_DYNCREATE(CGraphGroup)
    DECLARE_OLECREATE(CGraphGroup)   
CGraphGroup();           // protected constructor used by dynamic creation
    CGraphGroup(const CGraphGroup&  group);
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CGraphGroup)
public:
virtual void OnFinalRelease();
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CGraphGroup();
void Clear();
protected:
// Generated message map functions
//{{AFX_MSG(CGraphGroup)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
// Generated OLE dispatch map functions
//{{AFX_DISPATCH(CGraphGroup)
afx_msg void AddItem(LPDISPATCH  lpItem);
afx_msg void RemoveItem(short sItem);
afx_msg LPDISPATCH GetItem(short sIndex);
afx_msg short GetCount();
//}}AFX_DISPATCH
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
private:
CArray<CGraphGroupItem*,CGraphGroupItem*> m_Group;
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_GRAPHGROUP_H__72C58F15_9053_43DA_BB48_843CC67257B1__INCLUDED_)
IMPLEMENT_DYNCREATE(CGraphGroup, CCmdTarget)
CGraphGroup::CGraphGroup()
{
EnableAutomation();
m_TitleVisible = TRUE;
m_GroupTitleText = _T("");
}
CGraphGroup::CGraphGroup(const CGraphGroup& group)
{
CGraphGroupItem *pItem;
CGraphGroupItem *pNewItem;
EnableAutomation();
m_TitleVisible = group.m_TitleVisible;
m_GroupTitleText = group.m_GroupTitleText;    
    for ( short i = 0 ; i < group.m_Group.GetSize() ; i++ )
{
pItem = group.m_Group.GetAt(i);
pNewItem = new CGraphGroupItem( *pItem );
m_Group.Add(pNewItem); 
}   
}
CGraphGroup::~CGraphGroup()
{
Clear();
}
void CGraphGroup::OnFinalRelease()
{
// When the last reference for an automation object is released
// OnFinalRelease is called.  The base class will automatically
// deletes the object.  Add additional cleanup required for your
// object before calling the base class.
CCmdTarget::OnFinalRelease();
}
BEGIN_MESSAGE_MAP(CGraphGroup, CCmdTarget)
//{{AFX_MSG_MAP(CGraphGroup)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BEGIN_DISPATCH_MAP(CGraphGroup, CCmdTarget)
//{{AFX_DISPATCH_MAP(CGraphGroup)
DISP_PROPERTY_EX(CGraphGroup, "GroupTitle", GetGroupTitle, SetGroupTitle, VT_BSTR)
DISP_PROPERTY_EX(CGraphGroup, "TitleVisible", GetTitleVisible, SetTitleVisible, VT_BOOL)
DISP_FUNCTION(CGraphGroup, "GetMaxValue", GetMaxValue, VT_BOOL, VTS_PVARIANT)
DISP_FUNCTION(CGraphGroup, "GetTotalValue", GetTotalValue, VT_BOOL, VTS_PR8 VTS_PI4)
DISP_FUNCTION(CGraphGroup, "GetTitleTextLength", GetTitleTextLength, VT_I2, VTS_NONE)
DISP_FUNCTION(CGraphGroup, "AddItem", AddItem, VT_EMPTY, VTS_DISPATCH)
DISP_FUNCTION(CGraphGroup, "RemoveItem", RemoveItem, VT_EMPTY, VTS_I2)
DISP_FUNCTION(CGraphGroup, "GetItem", GetItem, VT_DISPATCH, VTS_I2)
DISP_FUNCTION(CGraphGroup, "GetCount", GetCount, VT_I2, VTS_NONE)
//}}AFX_DISPATCH_MAP
END_DISPATCH_MAP()
// Note: we add support for IID_IGraphGroup to support typesafe binding
//  from VBA.  This IID must match the GUID that is attached to the 
//  dispinterface in the .ODL file.
// {1DDBA0A3-7542-4D29-BD9B-9F730

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • COM对象作为结构成员不能初始化???
  • COM中如何创建窗口?
  • com对象是以文件的形式存于硬盘上么?若是,那么它是什么扩展名文件?是dll文件么?
  • COM中关于对象指针的传递
  • COM对象创建问题
  • 网页上的input输入框本质上是不是也是一个COM组件?用OLE/COM对象查看器怎么找到它?它的名称是什么?
  • COM+的对象池的问题!!!!
  • 我的COM对象里定义了一个返回接口的属性,我想根据不同情况返回不同接口该怎么实现
  • 关于聚合对象的一个问题COM
  • 创建com对象时为什么要用类厂?

相关文章

  • 2017-06-04 activex的界面大小可变吗
  • 2017-06-05 请教个OPC客户端的问题
  • 2017-06-04 activeX如何响应oncreate消息??100分
  • 2017-06-04 求助:一个引入窗体技术的自制控件问题。请指教。。。。在线等,,急
  • 2017-06-04 谁能将111222的“InternetExplorer下载文件的终极过滤”的代码发过来一份
  • 2017-06-04 我做的IE的toolband,为什么注册了以后只显示一个边?如何才能安装后全部显示出来?
  • 2017-06-04 用VC做AVI播放器碰到的问题(急)
  • 2017-06-04 进程内Com组件自动化中,可以调用并且DoModel一个自定义的对话框吗?
  • 2017-06-04 关于ie插件的问题
  • 2017-06-04 VC++中如何利用MSCom控件编写串口程序

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ADSI搜索的时候如何得到搜索到的项的个数?
    • COM中关于返回值为HMODULE的奇怪问题
    • 生成了exe,但是不能设断点调试,为什么呀?
    • 如何控制外部程序对某个文件的读写?读写发生时候给出提示,再决定是否可以让操作成功
    • ActiveX控件“MicrosoftChartControl60sp4OLEDB"不能例示
    • 请问高手,如何在DLL中重画窗口
    • 关于线程的认识?!
    • 全部家底请教算法
    • 请问将获取串口数据封装在控件中的过程分哪几步啊?
    • COM+的角色

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有