求助:MFC --debug assertion failed! 退出时报错

gordonlj 2017-02-22 05:07:47
做个一个MFC界面的程序,该程序运行正常,在退出时,报错;
错误信息如下:

line693的代码如下:
692// _AFXWIN_INLINE HICON CStatic::SetIcon(HICON hIcon)
693// { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, STM_SETICON, (WPARAM)hIcon, 0L); }

所有的光标定义及DoDataExchange都有,为什么还会出现这种错误?
FILE:的路径是哪里来的?有点疑惑
...全文
245 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gordonlj 2017-02-24
  • 打赏
  • 举报
回复
谢谢大家,根据大家的提示,找到了原因的所在; 在MFC中创建了多个线程,有一个线程没有退出,当关闭窗口后,该线程函数setIcon,导致报错,在OnDestory窗口前,强行退出所有的线程。
zgl7903 2017-02-23
  • 打赏
  • 举报
回复
反正从报错行看 就是窗口无效, SetIcon 在哪里调用的, 点击重试 把调用堆栈贴出来看看
gordonlj 2017-02-23
  • 打赏
  • 举报
回复
引用 5 楼 zgl7903 的回复:
DDX_Control 关联控件 或者创建控件 了么?
恩恩,创建了DDX_Control 关联控件,控件类型为Icon,并关联定义了CStatic类型的成员变量,通过控制成员变量,进而控制控件的变化,请问哪里没有注意到?
zgl7903 2017-02-23
  • 打赏
  • 举报
回复
DDX_Control 关联控件 或者创建控件 了么?
赵4老师 2017-02-23
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
xiaohuh421 2017-02-23
  • 打赏
  • 举报
回复
ASSERT(::IsWindow(m_hWnd)); 提示你这个控件没有窗口句柄 一般来说, 就是你这个CStaic类型变量没有正确的关联控件
走好每一步 2017-02-23
  • 打赏
  • 举报
回复
调用了CStatic指针为NULL,又去调用了SetIcon,所以报错了,这种情况我也遇到过。
gordonlj 2017-02-22
  • 打赏
  • 举报
回复
引用 2 楼 worldy 的回复:
没有调用create函数创建窗口
基于对话框的MFC应用程序自带窗口,在这个窗口上进行编辑。 create函数还需要如何创建窗口?
gordonlj 2017-02-22
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
自己检查一下所有的Static控件,以及他们对应的icon等操作
检查了所有的光标文件ID及操作(定义,DoDataChange,setIcon操作),没有发现错误,光标的颜色变化也是正常的,符合逻辑要求。其它的Static控件就没有检查。 退出的时候报错,是哪里需要释放吗? 记得没有这项操作。
worldy 2017-02-22
  • 打赏
  • 举报
回复
没有调用create函数创建窗口
oyljerry 2017-02-22
  • 打赏
  • 举报
回复
自己检查一下所有的Static控件,以及他们对应的icon等操作

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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