ATL向导生成的代码太讨厌了
我用VC7.1的ATL向导生成了一个简单的控件,发现虽然它只从一个很简单的自定义接口ISimpleMath派生,但是在类视力的基类里却发现很多莫名其妙的基类,虽然我知道这些基类的功能。但是我不想让它这样不明不白地,想让它从代码里明明白白地继承?请问这应该怎么做?
比如说,人家的代码是这样的
class ATL_NO_VTABLE CPostItPpg :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CPostItPpg, &CLSID_PostItPpg>,
public IPropertyPageImpl<CPostItPpg>,
public CDialogImpl<CPostItPpg>
{。。。。}
我生成的代码却是这样的
[
coclass,
threading("apartment"),
vi_progid("PostIt.PostItPpg"),
progid("PostIt.PostItPpg.1"),
version(1.0),
uuid("E5F7D04C-6F91-44B2-8ECF-E96E72CC4212"),
helpstring("PostItPpg Class")
]
class ATL_NO_VTABLE CPostItPpg :
public IPropertyPageImpl<CPostItPpg>,
public CDialogImpl<CPostItPpg>
{....}
虽然如此,但是从类视图里看到我的类也是有那些没有继承的基类的。
分析了一下,好像我的ATL是使用.h来生成.idl,但是人家的是用idl来生成.h,还是拿这个例子来说,我生成的代码里面,根本就没有CLSID_PostItPpg这个变量,取而代之在类视图看到的是莫名其妙的GUID_XXX_XXX_XXX_XXX。真是烦死了,这个ATL也太自作聪明了。你就给我在代码里继承不行啊?
请教各位高手应该怎么做让它从代码里继承,而不是平白无故的就有了。
还有怎么从.idl来生成.h而不是从.h生成idl?