• 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接口,完成管理key-value任何类型包括自定义类)--任何对象

跪地拜求,实现com接口,完成管理key-value任何类型包括自定义类)--任何对象

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

佚名通过本文主要向大家介绍了跪地拜求,实现com接口,完成管理key-value任何类型包括自定义类)--任何对象等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 跪地拜求,实现com接口,完成管理 key-value 任何类型包括自定义类)--任何对象
描述:


接口中方法Add(BSTR key, VARIANT object), BSTR key 针对字符串可以满足, 菜鸟我必须要实现“key 能够传递自定义类的对象,VARIANT key 这样申明似乎解决不了”,给折磨好久了, 哭,各位高手, 请指点。感谢! 感谢!感谢!
   
这里给出我的例子。
project name : TestDictionary
// TestDictionary.cpp : Implementation of CTestDictionary
#include "stdafx.h"
#include "TestDictionary.h"
#include ".\testdictionary.h"
// CTestDictionary
STDMETHODIMP CTestDictionary::Add(BSTR key, VARIANT object)
{
// TODO: Add your implementation code here
wstring keystirng(key);
_map[keystirng] = object;
return S_OK;
}
STDMETHODIMP CTestDictionary::get_Items(BSTR key, VARIANT* pVal)
{
// TODO: Add your implementation code here
wstring keystirng(key);
*pVal = _map[keystirng];
return S_OK;
}
STDMETHODIMP CTestDictionary::put_Items(BSTR key, VARIANT newVal)
{
// TODO: Add your implementation code here
wstring keystirng(key);
_map[keystirng] = newVal;
return S_OK;
}
head source:
// TestDictionary.h : Declaration of the CTestDictionary
#pragma once
#include "resource.h"       // main symbols
// ITestDictionary
[
object,
uuid("AB33763D-A604-42CF-9F86-4EA61D8B51EA"),
dual, helpstring("ITestDictionary Interface"),
pointer_default(unique)
]
__interface ITestDictionary : IDispatch
{
[id(1), helpstring("method Add")] HRESULT Add([in] BSTR key, [in] VARIANT object);
[propget, id(2), helpstring("property Items")] HRESULT Items([in] BSTR key, [out, retval] VARIANT* pVal);
[propput, id(2), helpstring("property Items")] HRESULT Items([in] BSTR key, [in] VARIANT newVal);
};
[
object,
uuid("{8FA3C023-1EF5-4b1b-91F7-41815B8A5294}"),
dual, helpstring("ITestEnumrator Interface"),
pointer_default(unique)
]
__interface ITestEnumrator : IDispatch
{
[id(1), helpstring("method Next")] HRESULT Next([out,retval] VARIANT* pObject);
};
// CTestDictionary
[
coclass,
threading("apartment"),
vi_progid("ComLib.TestDictionary"),
progid("ComLib.TestDictionary.1"),
version(1.0),
uuid("B610EB97-5CEC-451A-90D9-A13EED57C168"),
helpstring("TestDictionary Class")
]
class ATL_NO_VTABLE CTestDictionary : 
public ITestDictionary,
public ITestEnumrator
{
public:
CTestDictionary()
{
}
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease() 
{
}
public:
STDMETHOD(Add)(BSTR key, VARIANT object);
private:
map<wstring,VARIANT> _map;
map<wstring,VARIANT>::iterator _iter;
public:
STDMETHOD(get_Items)(BSTR key, VARIANT* pVal);
STDMETHOD(put_Items)(BSTR key, VARIANT newVal);
};


解决方案1:

他的意思是:
1。声明为VARIANT key
2。在VARIANT里保存要传递的接口指针

解决方案2:

二楼的别吞吞吐吐,我也没有搞明白

解决方案3:

在VARIANT里面打包对象的接口


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

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

  • 跪地拜求,实现com接口,完成管理key-value任何类型包括自定义类)--任何对象

相关文章

  • 2017-06-04 MFCribbon下怎么让某一Category类别下的按钮显示或者隐藏呢
  • 2017-06-04 MFCsocketCstring定义
  • 2017-06-04 creat问题,在线等
  • 2017-06-04 VC++60实现二进制传文件时,接收端正常启动,发送端编译无错,启动后出问题关闭
  • 2017-06-05 数组在临界区的使用
  • 2017-06-05 如何检测我的exe所需要的系统dll?
  • 2017-06-04 为什么这个CLSID_WavDestFilter注册成功了,但是不能用
  • 2017-06-05 一个线程的小问题?
  • 2017-06-04 动态创建ActiveX的问题
  • 2017-06-05 记录使用操作中各值的程序更多分在后面!

文章分类

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

最近更新的内容

    • 请教,网页中的某一元素(播放的视频)如何可以设置在所有元素的最上面?
    • 高分悬赏!!急急!!COM编程入门问题!!
    • 关于ATL的问题,急!!!
    • 在ATL70中怎么样定义全局的枚举类型,在客户端要使用这种类型?
    • 在BHO,怎么捕获浏览器响应的最后一个的事件?
    • 我用mfc编写了一个ocx控件,为什么在网页中显示不了?
    • 请问哪里有wtsapi32h可以下载?
    • 如何知道端口由系统中的哪一个进程打开??
    • webbrowserDocumentCompleteExplorer1参数问题!
    • 嵌入网页中的ActiveX控件如何获得网页内容并打印?

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

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