请问VC6在制作支持MFC的ATL控件的时候,引用theApp出错的问题

sproll 2005-09-21 08:05:51
我做了一个ATL项目,并在里面添加了一个ATL控件,在编写这个控件的时候,我想用theApp对象的m_hInstance,但VC6老是报出错,说theApp未定义。
我在控件的CPP文件前面添加
extern CPrjChameleonApp theApp;
则报这句代码出错。
请问各位是如何在使用VC6制作支持MFC的ATL控件时,引用theApp的?
VS2003中的支持MFC的ATL控件中,在声明了extern CPrjChameleonApp theApp;
之后,就可以引用theApp的说,而且theApp的类型也与VC6不同,
extern CPrjChameleonApp NEAR theApp;
多了一个NEAR
...全文
123 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sproll 2005-09-24
  • 打赏
  • 举报
回复
太谢谢了。
老夏Max 2005-09-21
  • 打赏
  • 举报
回复
CComModule::m_hInst
这个对象就是模块(控件)的实例句柄。
老夏Max 2005-09-21
  • 打赏
  • 举报
回复
2003没有使用过。呵呵,就VC6的ATL来说它一般只有一个类似MFC的theApp的定义:
CComModule _Module;
它是一个全局的变量,起到类似theApp的作用。如果你是想使用MFC中的类,直接包含相关的头文件即可。如果是其他的可以直接使用这个全局变量获得相关的全局信息。
sproll 2005-09-21
  • 打赏
  • 举报
回复
不行。ATL项目和MFC EXE项目有点不一样,它的线程类的头文件PrjChameleonApp.h是在编译的时候自动生成的,里面还包含IDL文件中的接口定义。
VC生成的工程框架中线程类的声明是放在PrjChameleonApp.cpp文件中的。
我没办法改PrjChameleonApp.h。
快乐鹦鹉 2005-09-21
  • 打赏
  • 举报
回复
extern CPrjChameleonApp theApp;
这句话加在CPrjChameleonApp类头文件的最后,即这个类定义结束后进行申明。其它要用theApp的类只需要包含这个app头文件即可。
app类创建时就会在cpp中申明一个CPrjChameleonApp theApp;

3,245

社区成员

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

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