存档

文章标签 ‘vs2005’

最近开始用vs2005学习Windows Shell扩展编程,主要参考codeproject的几个经典例子,这几个经典例子以前都是在vc6的环境下跑的,后来作者更新到vc7,网上还有好多教程是老版本的基于vc6环境的教程。vs2005属于vc8和vc7还是略有区别不过区别不大,现在把这两天学习的内容列下来,仅供参考。 1. 按照方法生成项目,系统会自动生成两个项目SimpleExt和SimpleExtPS,SimpleExtPS项目可以整个删掉,对结果没有什么影响。 2. 按照方法拷贝代码过来时,记得将教程中的GUID修改为自己的GUID,就是中括号中包含好多字符的那个。这个GUID可以在idl文件的“library SimpleExtLib”项下面找到。 3. 编译后出现错误提示: error C2787: “IContextMenu”: 没有与该对象关联的 GUID error C2440: “初始化”: 无法从“DWORD_PTR”转换为“const IID *” 1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换 error C2440: “初始化”: 无法从“ATL::_ATL_CREATORARGFUNC (__stdcall *)”转换为“DWORD_PTR” 1> 没有使该转换得以执行的上下文 这个简单的用网上说的将包含文件PlatformSDK\include目录放在include目录前不适合vs2005,不能解决问题,倒是另一种方法可以解决,就是在SimpleShlExt.h文件中增加一行代码: struct __declspec(uuid(“000214E4-0000-0000-C000-000000000046″)) IContextMenu; 若使用IQueryInfo的话要加入: struct __declspec(uuid(“00021500-0000-0000-C000-000000000046″)) IQueryInfo; 4. 编译后出现错误提示: 1>正在注册输出… 1>Project : error PRJ0050: 未能注册输出。请确保您有修改注册表的相应权限。 1>生成日志保存在file://e:\project\shell\SimpleExt\SimpleExt\Debug\BuildLog.htm 这个问题需要在属性->配置属性->连接器->常规->注册输出项将“是”改为“否”即可。 5. 在项目的属性->自定义生成步骤->常规中设置命令行为: regsvr32 /s /c [...]

+146 人看过 | 2 条评论
七 26th, 2010 | Filed under 技术
我的软件
  Easy-PrintScreen v1.3
袖子文件收藏夹 v1.1
联系我:chishui2@gmail.com