在我的应用程序中,我创建了一个包含mfc List Control的模式对话框。当我没有初始化列表控件中的任何列或项目时,对话框显示没有错误。当我尝试将列添加到列表控件时,我收到以下 Debug Assertion Failed 消息:
如果有帮助,断点位于
_AFXCMN_INLINE int CListCtrl :: InsertColumn(int nCol,const LVCOLUMN * pColumn) {ASSERT(:: IsWindow(m_hWnd)); return(int):: SendMessage(m_hWnd,LVM_INSERTCOLUMN,nCol,(LPARAM)pColumn); }
我正在尝试使用OnInitDialog()
中的以下代码添加列标题:
BOOL EventL::OnInitDialog()
{
m_ListEventLog.InsertColumn(0, _T("Description"), LVCFMT_LEFT, 250); //Failure happens HERE
//m_ListEventLog.InsertColumn(0, "Description", LVCFMT_LEFT, 200, 0); //I have also tried things such as this.
return FALSE;
}
我以这种方式将列标题添加到我的应用程序中的其他CListControls,没有任何问题。使用代码
调用模态对话框void ListOption::OnBnClickedEventLog()
{
EventL eventLog;
eventLog.DoModal();
}
答案 0 :(得分:2)
也许您忘记调用默认函数:
BOOL EventL::OnInitDialog()
{
BOOL res = CDialog::OnInitDialog();
m_ListEventLog.InsertColumn(0, _T("Description"), LVCFMT_LEFT, 250); //Failure happens HERE
//m_ListEventLog.InsertColumn(0, "Description", LVCFMT_LEFT, 200, 0); //I have also tried things such as this.
return res; // or return FALSE;
}
这就是ASSERT(::IsWindow(m_hWnd))
失败的原因,因为ListView控件的m_hWnd
尚未就绪。对话框的m_hWnd
也没有准备就绪。
答案 1 :(得分:0)
我遇到了同样的问题,直到我将DDX_Control(pDX, IDC_LIST1, movies);
添加到
void MainDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, movies);
}
电影 - 是Listcontrol的名称
CListCtrl movies;