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

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 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)