ATL向导生成的代码太讨厌了

neohost 2007-05-25 02:23:04
我用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?
...全文
225 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
neohost 2007-05-25
  • 打赏
  • 举报
回复

问题解决散分!!!
neohost 2007-05-25
  • 打赏
  • 举报
回复

同志们啊,问题我找出来了,建工程的时候不要选择那个万恶的“属性化”啊。

samsun2000 2007-05-25
  • 打赏
  • 举报
回复
没用过VC7。按你的说法,VC7里面cpp文件里既能有C++语法,也能有idl语法了!的确强大了哈。你的代码和别人的应该是一样的,不同的是开发环境的配置参数,人家把idl语法内容隐藏起来,而把默认继承类都显示出来;你的配置相反。

CLSID_PostItPpg这些GUID一定要有的,没有你的组件就不能工作。

建议你查找一下编辑环境属性,调整相关的显示项设置,应该能解决问题。
neohost 2007-05-25
  • 打赏
  • 举报
回复

三楼你你搞清楚情况没有。现在情况是这样的
我有一个类根本没有继承任何东西,但是就基名其妙地多了好多基类。不知道ATL开发人员咋想的。为了简单也不是这样的吧,你就给我明明白白地继承吧。
  • 打赏
  • 举报
回复
idl只是你的接口了
但还需要一些其他接口来增强功能,所以有那么多的基类,你删去也无妨.
Elysium 2007-05-25
  • 打赏
  • 举报
回复
呵呵,有利有弊

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧