08 2012 档案
由“Pure Virtual Function Called” 考虑到的
摘要:2012-8-22cswuyg1. 派生类对象析构时,基类析构函数执行的前期会修改对象的虚函数表指针值 一般情况下(特指基类不使用novtable属性),debug编译出来的exe,派生类对象的析构,在析构基类部分的时候,对象的虚函数表指针值项会被修改成基类的虚函数表地址,然后再执行基类的析构函数体。其中高亮的那一行是修改对象的虚函数表指针值为基类虚函数表地址 release下编译出来的就不是这样子。以一个小测试程序为例,编译器做了优化,并没有在调用基类析构函数时做赋值。但不确定编译器是否会一直做优化,因为看到了派生类析构函数体实质内容执行之前对虚函数表指针值做了一次赋值,那么为什么在基...
阅读全文
不要在WM_ACTIVATE里调用可以触发活动转移的函数
摘要:2012-7-8cswuyg不要在WM_ACTIVATE里调用可以触发活动转移的函数一、来源 WM_ACTIVATE的问题6月19号发现了,当时发现窗口会收到两次WM_ACTIVATE消息,很是奇怪,但找不到入手点,就没有深入追究。前几天同事发现有个按钮点击了没反应,是因为WM_LBUTTONDOW消息丢失,导致按钮事件没有生成,这才发现是WM_ACTIVATE有问题,总算找到原因了。但这是为什么呢?这就需要详细分析了。二、详细分析 避免在WM_ACTIVATE里调用可能触发活动转移的函数(如:ShowWindow( SW_HIDE )); 有一个窗口A显示着,点击了跟窗口A使用同一个消...
阅读全文