为了账号安全,请及时绑定邮箱和手机立即绑定

OnDestroy//消息处理函数不是点击×,才会相应吗?

OnDestroy//消息处理函数不是点击×,才会相应吗?

白衣染霜花 2019-02-05 10:06:58
OnDestroy//消息处理函数不是点击×,才会相应吗?//怎么去掉if(1==bkMap)就会内存错误?void CJune22_tooltestDlg::OnDestroy(){CDialogEx::OnDestroy();// TODO: Add your message handler code hereif (1==bkMap){bkMap=0;pMemDC.SelectObject(pOldBitmap);pMemDC2.SelectObject(pOldBitmap2);pMemDC3.SelectObject(pOldBitmap3);pMemDC4.SelectObject(pOldBitmap4); }}
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

加上1==bkMap是对的,这样处理比较安全。
不知道你创建的地方在哪,不好确定1==bkMap是否可以去掉。
一般来说,如果你是模态对话框,去掉应该是可以的,如果是非模态,那么在反复调用是可能会报错。
这里是一个MFC的逻辑问题,因为OnDestroy销毁的是窗口而不是类,而Dialog作为一个“窗口类”,OnDestroy被混淆了。销毁类的函数是类析构函数。

查看完整回答
反对 回复 2019-03-20
?
四季花海

TA贡献1811条经验 获得超5个赞

改成下面这样试试
void CJune22_tooltestDlg::OnDestroy()
{
if (1==bkMap)
{
bkMap=0;
pMemDC.SelectObject(pOldBitmap);
pMemDC2.SelectObject(pOldBitmap2);
pMemDC3.SelectObject(pOldBitmap3);
pMemDC4.SelectObject(pOldBitmap4);
}

CDialogEx::OnDestroy();
// TODO: Add your message handler code here
}



查看完整回答
反对 回复 2019-03-20
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

(1==bkMap)为真
{
bkMap=0;
pMemDC.SelectObject(pOldBitmap);
pMemDC2.SelectObject(pOldBitmap2);
pMemDC3.SelectObject(pOldBitmap3);
pMemDC4.SelectObject(pOldBitmap4);
}
才能执行,可能是只有(1==bkMap)为真时里面的各个值才有效。



查看完整回答
反对 回复 2019-03-20
  • 3 回答
  • 0 关注
  • 1179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信