MFC 列表控件输出控制

我第一用这个控件,不知道怎么控制数据插入进去,百度了很久还找不到方法。前面定义了m_list.InsertColumn(0,"姓名");m_list.InsertColu... 我第一用这个控件,不知道怎么控制数据插入进去,百度了很久还找不到方法。
前面定义了
m_list.InsertColumn(0,"姓名");
m_list.InsertColumn(1,"性别");
m_list.InsertColumn(2,"学号");
m_list.SetColumnWidth(0,70);
m_list.SetColumnWidth(1,40);
m_list.SetColumnWidth(2,80);//这样没错吧?
以下是输出按钮:
_RecordsetPtr m_pRecordset(__uuidof(Recordset));
m_pRecordset=theApp.m_pConnection->Execute("select * from name",NULL,adCmdText);
if(!m_pRecordset->EndOfFile)
m_pRecordset->MoveFirst();
else
{
MessageBox("表内数据为空");
return;
}

while(!m_pRecordset->EndOfFile)
{
// m_pRecordset->GetCollect("name");//
// m_pRecordset->GetCollect("sex");//
//m_pRecordset->GetCollect("num"));//怎么把name,sex,num,插入一行里面?(InsertItem,SetItemText)都试过了,图片是InsertItem的输出结果。
m_pRecordset->MoveNext();
}

还有一个问题,在清空按钮那里我写了m_list.DeleteItem(0);这只能一条条删,怎么做到可以全部删除呢,还有鼠标指定的删除呢?

输出就如图片那样,没有办法做到一行一行。
希望大家可以讲解得详细点,谢谢了。
void CDiaoDlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
CRect rt;
m_list.GetSubItemRect(pNMListView->iItem,pNMListView->iSubItem,0,rt);
CString str=m_list.GetItemText(pNMListView->iItem,pNMListView->iSubItem);
//MessageBox(str);
RORD dlg;
dlg.m_4=str;
dlg.m_5=str;
dlg.m_6=str;
dlg.DoModal();
*pResult = 0;
}
我把数值取出来以后,只有一个变量str,那么这样的话另外的对话框3个位置数值都是一样,那该怎么办?
展开
 我来答
zrj_bd
2010-08-01 · TA获得超过1871个赞
知道小有建树答主
回答量:647
采纳率:100%
帮助的人:1122万
展开全部
1.按照下面的操作是可以按行插入的:
int nItem = m_List.InsertItem(0, "test");

m_List.SetItem(nItem, 1, LVIF_TEXT, "test1", 0, 0, LVIS_SELECTED, LVIS_SELECTED);
m_List.SetItem(nItem, 2, LVIF_TEXT, "test2", 0, 0, LVIS_SELECTED, LVIS_SELECTED);

2。删除的话:用m_List.DeleteAllItems()

3.鼠标指定的删除:只能取得当前被选中项的索引号,然后用索引号删除
void CXXXXDlg::OnNMDblclkList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);

m_List.DeleteItem(pNMItemActivate->iItem)

*pResult = 0;
}

在RORD里面增加一个函数,public的,这个函数名称假如是:test();它的作用就是给rord这个对话框的编辑框赋值:
例如:
void test()
{
m_1 = "abc";
m_2 = "123";
m_3 = "ab88"
}
调用:
RORD dlg;
test();
dlg.DoModal();//弹出对话框
来自美国认真的兔子
2010-07-30 · TA获得超过644个赞
知道小有建树答主
回答量:550
采纳率:100%
帮助的人:435万
展开全部
用DeleteAllItems()直接删除全部条目,
鼠标指定删除要响应 ON_NOTIFY(NM_CLICK, IDC_LIST_ITEM, &CLIBSYSView::OnNMClickListItem)这个消息,得到左击的条目,再弹出菜单可以来删除这个条目,要的话我这有个示例
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式