写MFC程序ASSERT(IsWindow(pTemp->m_hWnd))报错

来源:互联网 发布:js让某个a标签隐藏掉 编辑:程序博客网 时间:2024/04/28 10:00

这两天搞一个协议转发服务,没想到被一个问题难住:调试时报如下错误

Debug Assertion Failed
f:/sp/vctools/vc7libs/ship/atlmfc/src/mfc/occcont.cpp(950)
950行代码是:ASSERT(IsWindow(pTemp->m_hWnd));

硬盘压根没F盘,竟然错到了f盘去了,一开始在谷歌使用了错误的关键词搜索,扫出一大堆英文网站,看了半天没看明白,以为是运行时库的问题,我使用的是vs2005 sp1 ,所以重装了vs,没装sp1补丁,还是同样的错误,无奈换了个关键词搜索,终于在中文的csdn网站上发现端倪,貌似是activeX控件未注册的原因,因为这个程序是其他人写的,以前是VC6下编译的ActiveX控件,现在移植到VS2005下,导致activeX需重新编译,估计是因为CLSID号不同吧。也怪自己没仔细看调试时的输出目录,上面有提示一个CLSID号未知的,然后搜这个CLSID号发现原来是串口ActiveX控件,哎,我咋知道这个对话框程序有串口ActiveX呢。马上将此控件copy到c/windows/system32下,命令行下输入regsvr32 mscomm32.ocx。重新编译,OK!