转自 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(); 
}
 
DestroyWindow以及KillTimer函数

MFC在消息响应以及窗口创建销毁的时候函数的调用情况:

MFC程序中消息以及函数的处理顺序简介--转 关于destroywindow函数的比较好的博文:
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的断言错误

 

KillTimer不能放在析构函数,可以放在DestroyWindow函数里的更多相关文章

  1. EC笔记,第二部分:9.不在构造、析构函数中调用虚函数

    9.不在构造.析构函数中调用虚函数 1.在构造函数和析构函数中调用虚函数会产生什么结果呢? #; } 上述程序会产生什么样的输出呢? 你一定会以为会输出: cls2 make cls2 delete ...

  2. C++中为什么要将析构函数定义成虚函数

    构造函数不可以是虚函数的,这个很显然,毕竟虚函数都对应一个虚函数表,虚函数表是存在对象内存空间的,如果构造函数是虚的,就需要一个虚函数表来调用,但是类还没实例化没有内存空间就没有虚函数表,这根本就是个 ...

  3. C++析构函数定义为虚函数(转载)

    转载:http://blog.csdn.net/alane1986/article/details/6902233 析构函数执行时先调用派生类的析构函数,其次才调用基类的析构函数.如果析构函数不是虚函 ...

  4. C++:构造函数和析构函数能否为虚函数

    原文:http://blog.csdn.net/xhz1234/article/details/6510568 C++:构造函数和析构函数能否为虚函数? 简单回答是:构造函数不能为虚函数,而析构函数可 ...

  5. C++多态性中基类析构函数声明为虚函数

    在用基类指针指向派生类时, 在基类析构函数声明为virtual的时候,delete基类指针,会先调用派生类的析构函数,再调用基类的析构函数. 在基类析构函数没有声明为virtual的时候,delete ...

  6. C++箴言:避免构造或析构函数中调用虚函数

    如果你已经从另外一种语言如C#或者Java转向了C++,你会觉得,避免在类的构造函数或者析构函数中调用虚函数这一原则有点违背直觉.但是在C++中,违反这个原则会给你带来难以预料的后果和无尽的烦恼. 正 ...

  7. C++类有继承时,析构函数必须为虚函数

    C++类有继承时,析构函数必须为虚函数.如果不是虚函数,则使用时可能存在内在泄漏的问题. 假设我们有这样一种继承关系: 如果我们以这种方式创建对象: SubClass* pObj = new SubC ...

  8. C++进阶--构造函数和析构函数中的虚函数

    //############################################################################ /* 任何时候都不要在构造函数或析构函数中 ...

  9. 【校招面试 之 C/C++】第10题 C++不在构造函数和析构函数中调用虚函数

    1.不要在构造函数中调用虚函数的原因 在概念上,构造函数的工作是为对象进行初始化.在构造函数完成之前,被构造的对象被认为“未完全生成”.当创建某个派生类的对象时,如果在它的基类的构造函数中调用虚函数, ...

随机推荐

  1. npm/svn 命令

    npm npm config set registry https://registry.npm.taobao.org npm config list svn + 清除失败的事务 - cmd管理员运行 ...

  2. android studio 出现 Default Activity not found

    1.AndroidManifest.xml <activity android:name=".activity.StartPage" android:screenOrient ...

  3. Invalid escape sequence at line 1 column 29 path $[0].name

    编译报错:Invalid escape sequence at line 1 column 29 path $[0].name 解决:grade.properties 文件下 org.gradle.j ...

  4. BBPlus团队ALPFA冲刺(肖文恒)

    ALPHA冲刺博客 第一天:https://www.cnblogs.com/bbplus/p/11931039.html 第二天:https://www.cnblogs.com/bbplus/p/11 ...

  5. binlog2sql安装

    3.pip安装 3.1 首先安装setuptools软件包: (1)下载setuptools包 wget https://pypi.python.org/packages/source/s/setup ...

  6. mysql技术内幕--innodb存储引擎图解

    1. Innodb存储引擎        2. Innodb文件        3. Innodb表        4. Innodb事务        5. innodb索引与算法        6 ...

  7. 农业银行网上支付平台-商户接口编程-demo调试

    调试的时候会报一个这样的错误. ReturnCode = [1999]ErrorMessage = [系统发生无法预期的错误 - 第1个证书无法读取证书文档] 网上其他资料说是权限问题,有的人可能是权 ...

  8. 钉钉、阿里云和PaaS平台的整合开发

    钉钉在企业移动办公领域有着很高的占有率,但是可能大家都会觉得,他在企业定制化,数据分析等领域有着很大的短板. 而我们的kintone作为PaaS平台,可以补足这个短板.很多开发者想知道如何利用钉钉还有 ...

  9. Spring4- 01 - Spring框架简介及官方压缩包目录介绍- Spring IoC 的概念 - Spring hello world环境搭建

    一. Spring 框架简介及官方压缩包目录介绍 主要发明者:Rod Johnson 轮子理论推崇者: 2.1 轮子理论:不用重复发明轮子. 2.2 IT 行业:直接使用写好的代码. Spring 框 ...

  10. 苹果cms和海洋cms通用的百度主动推送工具

    百度主动推送的代码,不需要每天手动去添加地址推送,只要浏览器打开推送请求,不要关掉浏览器,程序自动帮你推送.(该插件只推送内容页,支持动态.伪静态.静态页面的推送,但这三种地址规则需要去代码里面自行拼 ...