夜谭 2016-05-24 03:23 采纳率: 50%
浏览 4650
已采纳

MFC出现Debug assertion failed问题

碰到一个问题,不明白错在哪里,请大神们指点一下!!!
程序目的是在主窗口触发某事件后,弹出新的窗口显示列表,不同事件列表内容不同程序大概框架如下:
在主窗口类中添加了公有成员变量m_DeviceDlg,它也是窗口类型,并且它包含一个列表控件(ListCtrl)
//主窗口类定义
class CZigBeeHomeAutomationDesktopDlg : public CDialogEx
{
....
public:
CDeviceListDlg m_DeviceDlg;
void CZigBeeHomeAutomationDesktopDlg::OnClickDeviceList(NMHDR *pNMHDR, LRESULT *pResult);
....
}
//根据触发条件显示列表窗口
void CZigBeeHomeAutomationDesktopDlg::OnClickDeviceList(NMHDR *pNMHDR, LRESULT *pResult)
{
....
case ..:
m_DeviceDlg.LoadDeviceList(m_LockDeviceList, m_LockDeviceCount);
m_DeviceDlg.DoModal();
case ..:
....
}
//列表窗口类定义
class CDeviceListDlg : public CDialogEx
{
...
public:
CListCtrl m_TableList;
void LoadDeviceList(void);
...
}
//用于重载列表控件以显示不同内容
void CDeviceListDlg::LoadDeviceList()
{
....
DWORD dwStyle;
dwStyle = m_TableList.GetExtendedStyle();<----这里发生Debug assertion failed
}
m_TableList为什么不能用了呢?

  • 写回答

4条回答 默认 最新

  • 夜谭 2016-05-24 12:58
    关注

    已找到问题的原因了,是没有弄清楚窗口类对象与窗口本身的关系的问题,在Domodal之前窗口对象虽然存在但是窗口本身是不存在的,所以不能进行执行m_TableList.GetExtendedStyle()等对窗口动作,我是在 CDeviceListDlg添加变量来传递我需要的参数,然后通过这些参数用重载OnInitDialog来对m_TableList进行初始化。可参考:http://bbs.csdn.net/topics/390957303

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型