是否创建没有IDispatch支持的COM项目? [英] Creating a COM project without IDispatch support?

查看:39
本文介绍了是否创建没有IDispatch支持的COM项目?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我正在尝试编写示例COM.
VC ++ IDE提供了创建简单COM对象的向导.
但是,它始终创建具有IDispatch支持的COM对象.

由于某些原因,我需要创建一个实现以下IDL并具有以下要求的简单COM对象:
-必须是COM exe
-一定不能从IDispatch派生而只能是IUnknown
-必须是单身人士

Hi,

I am trying to write a sample COM.
VC++ IDE provides a wizard to create a Simple COM object.
However, it always creates the COM object with IDispatch support.

For some reasons, I need to create a Simple COM object implementing the following IDL with the following requirements:
-- Must be COM exe
-- Must not be derived from IDispatch but IUnknown only
-- Must be a singleton

// typelib filename: Sample.exe
[
  uuid(94EE69BF-4387-4078-B33F-1E9B471D128E),
  version(1.0),
  helpstring("Sample 1.0 Type Library"),
)
]

// library Sample
{
    importlib("stdole2.tlb");
    // Forward declare all types defined in this typelib
    interface ISample;
    [
      uuid(7CEBF979-C4EB-48eb-BE06-FBA1B4929FE7),
      version(1.0)
    ]
    coclass CSample
    {
        [default] interface ISample;
    };
    [
      odl,
      uuid(E3B868FC-7A58-4f28-B895-922D2BE7797F),
      oleautomation
    ]
    interface ISample : IUnknown
    {
        HRESULT _stdcall CreateTester([out, retval] IUnknown** ppTester);
        HRESULT _stdcall Initialize();
        HRESULT _stdcall Uninitialize();
        HRESULT _stdcall get_Name([out, retval] BSTR* Name);
        HRESULT _stdcall GetSettings([out, retval] IUnknown** ppSettings);
        HRESULT _stdcall GetList([out, retval] VARIANT* VarList);
        HRESULT _stdcall SetList([in] VARIANT VarList);
    };
};



我使用VC ++向导创建了一个ATL COM项目,并试图从中剥离IDispatch.
但是,事实证明放弃这项工作太困难了.

有人可以写一个满足上述要求的COM项目吗?

谢谢.

-
HaeRim Lee



I created an ATL COM project this using VC++ wizard and tried to stripping off IDispatch out of it.
However, it turned out to be too difficult job to give up.

Can someone write a COM project satisfying the above requirements please?

Thank you.

--
HaeRim Lee

推荐答案

看看这篇文章:初学者教程:COM/ATL简单项目 [ ^ ]

您可以将其用作自己项目的基础.
Have a look at this article: Beginner''s Tutorial: COM/ATL Simple Project[^]

You could use it as a base for your own project.


这篇关于是否创建没有IDispatch支持的COM项目?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆