VC2012创建ATL的工程。工程创建好以后增加ATL类,选择简单对象。那么这就等于是添加一个ATL的组件。这个组件里面有一个接口,可以用界面提供的菜单给这个接口增加方法。如果我再创建一个ATL类型,那么相当于给当前com dll增加一个新的组件。问题: 我如何能在不增加组件的情况下,给一个组件增加新的interface? 我看网上的例子都是要手工修改一堆代码,有好几个地方要改,不能遗漏了。难道VC的界面里面不能建立新的接口么?如果可以做到的话,怎么做呢?
调试欢乐多
如何向已经存在的ATL对象添加一个新的接口呢?
你说的这个方法并,不能用来在已经存在的ATL组件简单对象当中,增加一个新的interface啊
#include "olectl.h"
import "oaidl.idl";
import "ocidl.idl";[
object,
uuid(76A94E3C-91DC-496A-87A4-97AE8E201AF7),
dual,
nonextensible,
helpstring("IMyATLTest Interface"),
pointer_default(unique)
]
interface IMyATLTest : IDispatch{
};[
object,
uuid(7E659BB1-FB79-4188-9661-65CA22B6A3E6), // 这个 IID 可以用 GUDIGEN.EXE 产生
dual,
nonextensible,
helpstring("IMyATLTest Interface"),
pointer_default(unique)
]
interface ICallBack:IDispatch
{
[helpstring("method MyCall")] HRESULT MyCall(void);
};[
uuid(C407F413-A590-4DCB-A092-F3811AE597DB),
version(1.0),
helpstring("ATLTest 1.0 Type Library")
]
library ATLTestLib
{
importlib("stdole2.tlb");
[
uuid(1E3574CA-C860-420D-8CB9-FA3309B6F383),
control,
helpstring("MyATLTest Class")
]
coclass MyATLTest
{
[default] interface IMyATLTest;
interface ICallBack; //手动
};
};
然后再右击类,出现Add->Implement interface...,点击进去后选择刚刚定义的接口就行了