1.在ActiveX(MFC)中嵌入了一个Word对象,但是总是出现ASSERT错误。DEBUG模式中会有这个错误,Release模式中没有。
另外在Debug模式中嵌入Excel时则没有这个错误。真是奇怪。
错误截图:

解决方案 »

  1.   

    点击重试 看堆栈回退至你代码处
    Debug版本在代码中加入了很多检测异常报错的代码
    Release则为了加速不做异常检测
      

  2.   

    我将异常代码截了个图。
    实际我自已没写什么代码,基本上是用向导生成了一个嵌入Word的示例程序,然后将这个示例框架代码移到了ActiveX中。这个异常代码有点奇怪,我在网上搜了一下,有部分朋友说在线程中创建窗口也会导致出现这个错误。不过这里不是。
      

  3.   

    不能用MFC自动生成的ActiveX控件  你要用ATL生成复合控件工程容纳你的Word对象 答对请给分
      

  4.   

    然后将这个示例框架代码移到了ActiveX中?!你是怎么移的 copy?
      

  5.   

    这个貌似不行,因为用了MFC的类,必须建ActiveX控件。否则将那些接口都没办法全部实现。
      

  6.   

    是直接COPY的。另外说一下,如果不加载Word的话,这个视图框架程序是没有问题的。但是加载了WORD就报这个错。我自已没写什么代码,基本上都是向导生成的。
      

  7.   

    看看call stack,看看最后是哪一句出问题了
      

  8.   

    不能用MFC自动生成的ActiveX控件 你要用ATL生成复合控件工程容纳你的Word对象
      

  9.   

    有没有相关的示例?我用ATL做了个测试,发现要实现的代码非常的多。而且微软好像也没有提供类似的示例。
    微软建议的是使用MFC来做。
      

  10.   

    MFC dll工程基础上 添加ATL COMPOSIT CONTROL
      

  11.   


    这个貌似不行,创建复合控件是可以,但是MFC里面是通过代码创建的OLE控件。这些代码放在ATL里面会报错。我在ATL里面不太会用代码创建OLE。MFC的那些代码看的让人头疼所以我就直接用MFC封装的代码写的。如果可以的话能否提供一点ATL创建OLE的代码。
      

  12.   

    从断言在 afxMapHWND 来看,似乎是映射 HWND 到 CWnd 时出错,而 CWnd 好像是不能持久保存的,
    看看是不是有些容器中保存了 CWnd 指针? 如果有的话,换成 HWND,使用时再转回去。