描述:
在Vista系统中做了一个Gadget,为了实现一些复杂的逻辑,使用了一个Com Dll, Gadget(实际上是一个脚本文件)则调用这个Dll.
在Com dll中创建一个Window窗口,使用了ATL的CWindowImpl<...>,在IE中执行这个脚本文件可以创建窗口成功. 而在Gadget中则无法创建窗口. 出错时部分汇编代码:
024256E8 mov dword ptr [esp+4],offset g_list (024256e0)
024256F0 jmp @ILT+605(ATL::CWindowImplBaseT<WTL::CListViewCtrlT<ATL::CWindow>,ATL::CWinTraits<1442840
我网上查了一下,好象是说Vista的DEP功能会导致该错误.
不知道有谁遇到过类似的问题,该怎么解决呢?
解决方案1:
vista机型默认打开DEP
而DEP可能会阻止32位应用程序
http://hi.baidu.com/zhangamao/blog/item/6b5e56906e84fa8da977a48c.html
没有在vista下开发过
你用CAxWindowImpl类取代CWindowImpl这个类试试看
学习vista
解决方案4:学习一下
您可能想查找下面的文章:
- 看了一下WTL,对这个代码看不懂
- 要用atl写个控件,涉及到界面的,怎么将wtl和atl结合起来用呐?用wtl来做控件的界面
- 在ATL中使用WTL中的CFileDialog实现预览功能出现的不刷新问题,高手进
- 使用WTL库,编译提示“cannotopenincludefile"atlresh"”,这是怎么回事?
- WTL能否用于ATL做COM组件的界面?需要注意什么?
- WTL中,怎么改变lineto画线的颜色和粗细?
- WTL问题,MainFrame加一个Destory响应怎么会这样
- 请大家帮忙看看这个:关于wtl
- WTL,CCodePageCombo继承CComboBoxT<ATL::CWindow>类,需要响应下拉菜单CloseUp的消息
- WTL下如何添加Mediaplayer控件