★★★ATL COM工程中创建多个ATL Object对象,为什么只有第一个创建的对象可用?
Threading Model:Apartment
Interface:Custom
Aggregation:No
如下是接口定义:
class ATL_NO_VTABLE CFTProp :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CFTProp, &CLSID_FTProp>,
// public IFTProp
public IShellExtInit,
public IShellPropSheetExt
{
public:
CFTProp()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_FTPROP)
DECLARE_NOT_AGGREGATABLE(CFTProp)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CFTProp)
// COM_INTERFACE_ENTRY(IFTProp)
COM_INTERFACE_ENTRY(IShellExtInit)
COM_INTERFACE_ENTRY(IShellPropSheetExt)
END_COM_MAP()
// IFTProp
public:
// IShellExtInit
STDMETHODIMP Initialize(LPCITEMIDLIST, LPDATAOBJECT, HKEY);
// IShellPropSheetExt
STDMETHODIMP AddPages(LPFNADDPROPSHEETPAGE, LPARAM);
STDMETHODIMP ReplacePage(UINT, LPFNADDPROPSHEETPAGE, LPARAM) { return E_NOTIMPL; }
};
上面的ATL 对象能正常运行。
我想在这个一个ATL COM工程中再创建一个ATL Object,所以按照上面的创建步骤再创建了一个,如下是接口:
class ATL_NO_VTABLE CFTComment :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CFTComment, &CLSID_FTComment>,
// public IFTComment
public IShellExtInit, // 使用Shell接口的初始化;
public IContextMenu // 使用Shell中菜单接口;
{
public:
CFTComment()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_FTCOMMENT)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CFTComment)
// COM_INTERFACE_ENTRY(IFTComment)
COM_INTERFACE_ENTRY(IShellExtInit) // IShellExtInit接口映射;
COM_INTERFACE_ENTRY(IContextMenu) // IContextMenu接口映射;
END_COM_MAP()
// IFTComment
public:
STDMETHOD(Initialize)(LPCITEMIDLIST pidlFolder, LPDATAOBJECT pDataObj, HKEY hkeyProgID); // 接口初始化方法;
STDMETHOD(QueryContextMenu)(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
STDMETHOD(GetCommandString)(UINT idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax);
STDMETHOD(InvokeCommand)(LPCMINVOKECOMMANDINFO pici);
};
但是只有第一个创建的FTProp对象可以能正常运行,而第二个创建的则无法运行,是什么原因呢?
如果我把第二创建的ATL对象FTComment放在另一个工程(ATL COM工程)中,就能正常运行,搞不懂是什么原因,是对象创建的时候“Attributes”的设置原因吗?如果是,我该怎么设置才能在一个工程中使用两个ATL Object对象呢?
相关推荐
梦想划词翻译—聚合词典搜索-crx插件
语言:中文 (简体) 梦想划词翻译是为阅读和学习外语而开发的一款翻译和查词工具,聚合数十款在线词典和在线翻译。 ★★★ 历经三个多月,终于发布了第一个版本 ★★★ 这是一款精心雕琢并免费开源的划词翻译扩展「 https://github.com/ryanker/dream_translate 」,也是一款致力于改善「中国式哑巴英语」而设计的一款英语发音练习扩展程序。 语言本身是一项技能,需要像游泳和骑自行车一样,通过实战练习才能掌握;应让「听说」变成身体的一种条件反射,而不是依靠死记硬背单词和语法规则来学习。如果有人说背诵「游泳说明书」就能学会游泳,那不是在开玩笑,就是在害人。 ★ 学习深坑 ★ 在中国式「填鸭式教育」体系下,使用着西方国家已淘汰几十年的「语法翻译法」教学英语,把英语这样的技能当成知识学习,已经把全民带入到一个错误的深渊。学生们为应付考试,学习英语时往往注重「背单词学语法」,而忽略了最重要的「听说」运用能力,很容易造成考完试不用,就忘光的现象。这样的错误学习方法造就了 90% 以上的学习失败率,大量的学生因为学不好英语,在高考前已经放弃了学习,从而人生轨迹也发生改
mobx-logger:Log Mobx动作,React,事务和计算
MobX记录器 通过仅记录正确的信息,始终了解MobX应用程序中的实际情况。 ★★★喜欢这个项目吗? ,或以支持我的工作! 谢谢。 ★★★ 安装 NPM: npm install mobx-logger CDN: https://unpkg.com/mobx-logger/mobx-logger.umd.js : https://unpkg.com/mobx-logger/mobx-logger.umd.js 用法 import { enableLogging } from 'mobx-logger' ; // optional const config = { ... } ; enableLogging ( config ) ; 要获得Mobx 3支持,请使用Mobx Logger 0.6.0。 选项 与MobX DevTools不同,您可以简单地配置应将哪些特定信息记录到控制台。
电子工程师必须知道的10个网站
电子工程师必须知道的10个网站.解决你想不到的问题。
蓝梦分页控件 1.0.7.420
注意:★★★控件请到论坛下载,此处附件只有说明<br/><br/>蓝梦的分页控件 Ver 1.0.7.420<br/><br/><br/>下载地址<br/><br/>http://www.xgamesdev.com/bbs/showtopic-339.aspx<br/><br/><br/>特点:<br/><br/>1.分页逻辑全部封装内部完成。<br/><br/>2.您可以使用控件提供的数据获取方式获取数据,也可以仅仅利用控件UI。<br/><br/>3.支持SQL2005,SQL2000,ACCESS,您可以通过重写GetData方法扩充数据库支持。<br/><br/>4.你可以启用URL参数传递页码模式。<br/><br/>5.支持缓存数据,你可以自由设置缓存大小。<br/><br/>6.可以选择使用数字,下拉列表,上下翻页按钮后者它们的任意组合进行翻页。<br/><br/>7.数字支持多种样式(数字,中文,大写)页码呈现方式,你甚至可以修改数字页码的每个数字字符。<br/><br/>8.可以通过修改CSS样式表自由修改UI呈现的样式。<br/><br/>9.分页显示信息可以定制模板。<br/><br/>10.同时支持 .Net 1.1 和 .Net 2.0<br/><br/><br/>更多特性未能详列。<br/><br/><br/>未来版本:<br/><br/>1.增加数字按钮图片模式。<br/><br/>2.增加Ajax支持。<br/><br/>3.增加oracle, MySql支持。<br/><br/><br/><br/>其它说明:<br/><br/>1.简单的使用方法参考例子里面的代码。<br/><br/>2.zWebControlLibrary目录下为附带的css文件和一个图片按钮。<br/><br/>3.zWebControlLibrary03.dll: .Net 1.1适用<br/><br/>4.zWebControlLibrary05.dll: .Net 2.0适用<br/><br/><br/><br/>注意:<br/><br/>你可以免费使用此控件用于学习研究,如需商用,请联系蓝梦。<br/><br/><br/><br/><br/><br/>蓝梦联系方式:<br/><br/>QQ:81513697<br/><br/><br/><br/>发布日期:2007-4-20<br/>
常见ASPCMS系统综合人气排名
常见ASPCMS系统综合人气排名


