碰到一个问题,不明白错在哪里,请大神们指点一下!!!
程序目的是在主窗口触发某事件后,弹出新的窗口显示列表,不同事件列表内容不同程序大概框架如下:
在主窗口类中添加了公有成员变量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为什么不能用了呢?
MFC出现Debug assertion failed问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 夜谭 2016-05-24 12:58关注
已找到问题的原因了,是没有弄清楚窗口类对象与窗口本身的关系的问题,在Domodal之前窗口对象虽然存在但是窗口本身是不存在的,所以不能进行执行m_TableList.GetExtendedStyle()等对窗口动作,我是在 CDeviceListDlg添加变量来传递我需要的参数,然后通过这些参数用重载OnInitDialog来对m_TableList进行初始化。可参考:http://bbs.csdn.net/topics/390957303
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 (标签-STM32|关键词-智能小车)
- ¥20 关于#stm32#的问题,请各位专家解答!
- ¥15 (标签-python)
- ¥15 第一个已完成,求第二个做法
- ¥20 搭建awx,试了很多版本都有错
- ¥15 java corba的客户端该如何指定使用本地某个固定IP去连接服务端?
- ¥15 activiti工作流问题,求解答
- ¥15 有人写过RPA后台管理系统么?
- ¥15 Bioage计算生物学年龄
- ¥20 如何将FPGA Alveo U50恢复原来出厂设置哇?