afxwin1.inl assert at line:23
好久没更新了,奉献一篇技术贴。
最近使用ATL 7.0 写windows服务,因为以前的程序是用MFC编写的,遇到一些麻烦,解决问题花了些时间.
拿出来共享一下.
其实就是一个经常出现的错误:
afxwin1.inl assert at line:23
现象:打开afxwin1.inl 发现assert(afxCurrentInstanceHandle != NULL)出错
我心想MFC这个垃圾不会要我手动赋吧,所以研究了很久,看看自己初始化是不是缺少什么不骤,还是哪里修改了这个值. 后来发现,手动赋才是王道,因为如果是MFC程序,这个赋值在CWinAPP的里就作了,不过因为嫌太麻烦就懒得找了,呵呵.
另外一个问题,ATL程序如何获得这个句柄呢,其实每个ATL程序都会有一个全局成员 _AtlBaserModule保存这重要的句柄.
ok
solution:
在ATL程序初始化阶段手动赋值
afxCurrentInstanceHandle = _AtlBaseModule.GetModuleInstance();
afxCurrentResourceHandle = _AtlBaseModule.GetResourceInstance(); (这个也要赋一下,呵呵)
评论