今天给根据别人改的方法重新修改了Alarm Store Simulator,加了一个check box,直接用(CButton*)GetDlgItem(IDC_CHECKBOXXX)->GetCheck();获得当前checkbox的状态,当然还能用SetCheck()更改,可是当关闭对话框的时候竟然报xxxxxx memory can not be read xxxxxxx的错误,单步进去发现死在dialog的析构函数上了,结果给这个从CDialog中继承的对话框加了一个空的析构函数,然后问题解决,可以成功关闭对话框,现在还没弄懂,这个问题有待进一步分析。。。

知道要用空析构函数的原因了: 如果给一个从Cdialog中继承的窗口类添加了WM_SIZE消息响应函数,则一定要定义窗口的析构函数,否则会报错,哪怕是空的析构函数也可以避免错误。 另外,AfxGetMainWnd()->UpdateData(TRUE);不能随便用,滥用的结果是程序会出windows常规错误窗口,提示abort or retry or cancel, 会死在里面dodataex中,也可能是由于多线程的原因,还没弄清楚,反正要慎重,一般的控件用setwindowstext就可以显示新的控件内容了。
posted on 2007-04-05 16:28 活着就是折腾,所以当然要骠悍的折腾 阅读(735) 评论(1)  编辑 收藏 引用 所属分类: MFC
Comments
  • # re: Check Box控件和程序在关闭是报内存错误
    microsin
    Posted @ 2007-09-19 12:10
    我的系统的cfx.ocx组件也报内存不能为读错,郁闷几天了.  回复  更多评论   

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理