KillTimer不能放在析构函数,可以放在DestroyWindow函数里
时间:2019-09-03
本文章向大家介绍KillTimer不能放在析构函数,可以放在DestroyWindow函数里,主要包括KillTimer不能放在析构函数,可以放在DestroyWindow函数里使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
转自 https://www.cnblogs.com/huking/archive/2009/11/27/1612201.html
KillTimer&析构函数
析构函数中不能用KillTimer,
原因:在析构函数中窗口已经不存在,所以KillTimer函数已经没有了窗口句柄,当然会出错
使用位置:BOOL DestroyWindow(void)函数中.
如:
BOOL TestDlg::DestroyWindow()
{
KillTimer(1);
return CDialog::DestroyWindow();
}
原因:在析构函数中窗口已经不存在,所以KillTimer函数已经没有了窗口句柄,当然会出错
使用位置:BOOL DestroyWindow(void)函数中.
如:
BOOL TestDlg::DestroyWindow()
{
KillTimer(1);
return CDialog::DestroyWindow();
}
DestroyWindow以及KillTimer函数
1.里面对窗口的销毁过程做了详细的介绍
http://blog.csdn.net/xiaoxiongli/archive/2007/06/28/1670277.aspx
2.函数的基本说明
http://www.builder.com.cn/2001/0814/34040.shtml
3.MFC定时函数的使用中killtimer的说明(论坛)
http://www.qqgb.com/Program/VC/VCJC/Program_241397.html
killtimer函数的源代码:
{
ASSERT(::IsWindow(m_hWnd)); //析构函数里面m_hWnd是无效的,当然assert出错了。
return ::KillTimer(m_hWnd, nIDEvent);
}
如果在mainfrm的析构函数中来销毁的时候已经调用过函数destroywindows函数,已经把 m_hwnd变为无效,所以在函数调用killtimer、
函数用该在destroywindow中调用,这样就不会出想Fail:afxwin2.inl. Line:171的断言错误
MFC在消息响应以及窗口创建销毁的时候函数的调用情况:
1.里面对窗口的销毁过程做了详细的介绍
http://blog.csdn.net/xiaoxiongli/archive/2007/06/28/1670277.aspx
2.函数的基本说明
http://www.builder.com.cn/2001/0814/34040.shtml
3.MFC定时函数的使用中killtimer的说明(论坛)
http://www.qqgb.com/Program/VC/VCJC/Program_241397.html
killtimer函数的源代码:
{
ASSERT(::IsWindow(m_hWnd)); //析构函数里面m_hWnd是无效的,当然assert出错了。
return ::KillTimer(m_hWnd, nIDEvent);
}
如果在mainfrm的析构函数中来销毁的时候已经调用过函数destroywindows函数,已经把 m_hwnd变为无效,所以在函数调用killtimer、
函数用该在destroywindow中调用,这样就不会出想Fail:afxwin2.inl. Line:171的断言错误
原文地址:https://www.cnblogs.com/XiHua/p/11451233.html
- 厚土Go学习笔记 | 07. 基本类型
- Unity应用架构设计(11)——一个网络层的构建
- Go语言·Web调优详解
- Unity应用架构设计(12)——AOP思想的实践
- 厚土Go学习笔记 | 26. 函数闭包
- 学会代码执行函数,让老哥带你勇闯天涯!
- ASP.NET Core知多少(6):VS Code联调Angular + .NetCore
- 线程安全知多少
- Parallel线程安全问题
- 厚土Go学习笔记 | 25. 函数值 函数是函数也是值
- GoStub框架使用指南
- 厚土Go学习笔记 | 24. map字典测试用例(文字出现次数统计)
- .NET Core+MySql+Nginx 容器化部署
- Trie树分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Helm部署应用时RBAC权限报错“secrets is forbidden: User "system:...”
- 原来Python自带了数据库,用起来真方便!
- 一天一大 leet(路径总和)难度:简单-Day20200707
- 一天一大 leet(无重复字符的最长子串)难度:中等-more-001
- 一天一大 leet(交错字符串)难度:困难-Day20200718
- 我把公司 10 年老系统改造 Maven,真香!!
- 一天一大 leet(恢复空格)难度:中等-Day20200709
- 一天一大 leet(旋转数组的最小数字)难度:简单-Day20200721
- 一天一大 leet(最佳买卖股票时机含冷冻期)难度:中等-Day20200710
- 一天一大 leet(戳气球)难度:困难-Day20200719
- 一天一大 leet(不同的二叉搜索树 II)难度:中等-Day20200721
- 组合游戏系列5: 井字棋、五子棋AlphaGo Zero 算法实战
- 一天一大 leet(最小路径和)难度:中等-Day20200723
- 一天一大 leet(二叉树的最大深度)难度:简单-Day20200728
- 生产者消费者模式的三种实现方式