CListCtrl使用过程中出现断言出错求助
我是新手 刚开始自学 很多地方都是懵懵懂懂的
今天在自己做个信息管理的东西 在写ClistCtrl的时候出现断言错误
但是进去根本看不懂 图如下

顺便发下代码
BOOL C信息管理Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
C信息管理App *pApp = (C信息管理App *)AfxGetApp();
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
m_List.SetBkColor(RGB(0,128,128));
m_List.SetTextBkColor(RGB(0,128,128));
m_List.SetTextColor(RGB(255,255,0));
m_List.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP);
TCHAR szBuf[20];
LV_COLUMN lvc;
CRect rect;
m_List.GetClientRect(&rect);
int nColInterval = rect.Width()/7;
for(int i = 0;i<6;i++)
{
switch(i)
{
case 0:
wsprintf(szBuf,_T("编号"));
lvc.cx = nColInterval; //设置宽度
break;
case 1:
wsprintf(szBuf,_T("姓名"));
lvc.cx = nColInterval;
break;
case 2:
wsprintf(szBuf,_T("电话"));
lvc.cx = nColInterval*2;
break;
case 3:
wsprintf(szBuf,_T("地址"));
lvc.cx = nColInterval;
break;
case 4:
wsprintf(szBuf,_T("社会关系"));
lvc.cx = nColInterval;
break;
case 5:
wsprintf(szBuf,_T("备注"));
lvc.cx = nColInterval;
break;
}
lvc.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
lvc.fmt = LVCFMT_LEFT;
lvc.pszText = szBuf; //设置文字
lvc.iSubItem = i; //设置索引值
m_List.InsertColumn(i,&lvc); //将该项插入
}
WORD nCount;
POSITION pos;
CString my_Date;
nCount = pApp->i_InfoList.GetCount();
pos = pApp->i_InfoList.GetHeadPosition(); //找到头指针的位置
for(int i=0;i<nCount && pos!=NULL;i++)
{
Info* pInfo = pApp->i_InfoList.GetNext(pos);
m_List.InsertItem(i,LPSTR_TEXTCALLBACK);
CString my_Num;
my_Num.Format(_T("%d"),pInfo->i_Num);
m_List.SetItemText(i,0,my_Num);
m_List.SetItemText(i,1,pInfo->i_Name);
CString my_Pho;
my_Pho.Format(_T("%d"),pInfo->i_Pho);
m_List.SetItemText(i,2,my_Pho);
m_List.SetItemText(i,3,pInfo->i_Addr);
m_List.SetItemText(i,4,pInfo->i_SRel);
m_List.SetItemText(i,5,pInfo->i_Tip);
}
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
请高手指点下啊。。。为什么会出错 还有怎么改正?谢谢了
今天在自己做个信息管理的东西 在写ClistCtrl的时候出现断言错误
但是进去根本看不懂 图如下

顺便发下代码
BOOL C信息管理Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
C信息管理App *pApp = (C信息管理App *)AfxGetApp();
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
m_List.SetBkColor(RGB(0,128,128));
m_List.SetTextBkColor(RGB(0,128,128));
m_List.SetTextColor(RGB(255,255,0));
m_List.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP);
TCHAR szBuf[20];
LV_COLUMN lvc;
CRect rect;
m_List.GetClientRect(&rect);
int nColInterval = rect.Width()/7;
for(int i = 0;i<6;i++)
{
switch(i)
{
case 0:
wsprintf(szBuf,_T("编号"));
lvc.cx = nColInterval; //设置宽度
break;
case 1:
wsprintf(szBuf,_T("姓名"));
lvc.cx = nColInterval;
break;
case 2:
wsprintf(szBuf,_T("电话"));
lvc.cx = nColInterval*2;
break;
case 3:
wsprintf(szBuf,_T("地址"));
lvc.cx = nColInterval;
break;
case 4:
wsprintf(szBuf,_T("社会关系"));
lvc.cx = nColInterval;
break;
case 5:
wsprintf(szBuf,_T("备注"));
lvc.cx = nColInterval;
break;
}
lvc.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
lvc.fmt = LVCFMT_LEFT;
lvc.pszText = szBuf; //设置文字
lvc.iSubItem = i; //设置索引值
m_List.InsertColumn(i,&lvc); //将该项插入
}
WORD nCount;
POSITION pos;
CString my_Date;
nCount = pApp->i_InfoList.GetCount();
pos = pApp->i_InfoList.GetHeadPosition(); //找到头指针的位置
for(int i=0;i<nCount && pos!=NULL;i++)
{
Info* pInfo = pApp->i_InfoList.GetNext(pos);
m_List.InsertItem(i,LPSTR_TEXTCALLBACK);
CString my_Num;
my_Num.Format(_T("%d"),pInfo->i_Num);
m_List.SetItemText(i,0,my_Num);
m_List.SetItemText(i,1,pInfo->i_Name);
CString my_Pho;
my_Pho.Format(_T("%d"),pInfo->i_Pho);
m_List.SetItemText(i,2,my_Pho);
m_List.SetItemText(i,3,pInfo->i_Addr);
m_List.SetItemText(i,4,pInfo->i_SRel);
m_List.SetItemText(i,5,pInfo->i_Tip);
}
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
请高手指点下啊。。。为什么会出错 还有怎么改正?谢谢了
...全文
相关推荐
CListCtrl中列表显示任意图片
通过查看和分析这个程序,你可以更深入地理解这个过程,并将其应用到自己的项目中。
CListCtrl的使用例子
在这个"**CListCtrl的使用例子**"中,我们将深入探讨如何通过CListCtrl实现每行具有不同字体颜色和背景颜色的效果,并根据行内容动态调整这些样式。
CListCtrl 使用技巧
本篇文章将详细介绍CListCtrl的使用技巧,帮助开发者更好地理解和操作这个控件。首先,CListCtrl支持四种主要的视图样式:1.
CListCtrl添加按钮
**位图按钮**:由于CListCtrl本身并不直接支持按钮控件,我们可以通过在列表项中使用位图来模拟按钮的效果。
MFC CListCtrl 虚拟列表的使用实例.rar
本文介绍了一个基于MFC框架的虚拟列表控件(CListCtrl)使用实例。项目通过对话框形式展示如何高效地利用虚拟列表加载大量数据,结合预编译头文件提升编译性能。代码涵盖资源定义、应用初始化及UI交互


界面
