3个回答
展开全部
您好,新建一个基于对话框的工程,命名为LCDemo,然后在对话框中按照图一所示添加一个List Control和两个Button,设置List Control样式为Report。为List Control关联一个变量m_listCtrl,并通过ClassWizard为List Control和Button添加Click消息的响应函数。
先在OnInitDialog()函数中对控件初始化,就是为List Control添加列,并插入10行列表项目,详细内容请参考附带的源代码,我只想列出主要的代码片断。
为对话框类定义一个整型变量IndexInFieldList,用它来存储项目索引,把下面代码粘贴到CLCDemoDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 函数中。
01.void CLCDemoDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)
02.{
03.POSITION pos;
04.pos = m_listCtrl.GetFirstSelectedItemPosition();
05.
06.// 得到项目索引
07.IndexInFieldList = m_listCtrl.GetNextSelectedItem(pos);
08.
09.*pResult = 0;
10.}
在向上移动操作按钮的WM_CLICK消息响应函数中写入下面代码。
view sourceprint?
01.void CLCDemoDlg::OnButtonUp()
02.{
03.m_listCtrl.SetFocus();
04.
05.if (IndexInFieldList == -1)
06.return;
07.
08.// 判断所选项是否位于行首
09.if (IndexInFieldList == 0)
10.{
11.AfxMessageBox("已经位于第一行!");
12.return;
13.}
14.
15.// 提取所选列表项各列类容
16.CString tempField1, tempField2, tempField3;
17.tempField1 = m_listCtrl.GetItemText(IndexInFieldList, 0);
18.tempField2 = m_listCtrl.GetItemText(IndexInFieldList, 1);
19.tempField3 = m_listCtrl.GetItemText(IndexInFieldList, 2);
20.
21.// 删除所选列表项
22.m_listCtrl.DeleteItem(IndexInFieldList);
23.
24.// 在IndexInFieldList-1位置处插入上面所删列表项的各列类容
25.int tempItem;
26.tempItem = m_listCtrl.InsertItem(IndexInFieldList-1, _T(tempField1));
27.m_listCtrl.SetItemText(tempItem, 1, _T(tempField2));
28.m_listCtrl.SetItemText(tempItem, 2, _T(tempField3));
29.IndexInFieldList--;
30.
31.// 使得IndexInFieldList-1位置处项目高亮显示并获得焦点
32.UINT flag = LVIS_SELECTED|LVIS_FOCUSED;
33.m_listCtrl.SetItemState(IndexInFieldList, flag, flag);
34.}
向下移动操作按钮的响应函数代码与上面的代码类似,请参考本文所附源代码,因为代码有相关中文注释,这里我就不再赘述了。
运行情况
具体的运行效果请编译好附带源代码后执行。
先在OnInitDialog()函数中对控件初始化,就是为List Control添加列,并插入10行列表项目,详细内容请参考附带的源代码,我只想列出主要的代码片断。
为对话框类定义一个整型变量IndexInFieldList,用它来存储项目索引,把下面代码粘贴到CLCDemoDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 函数中。
01.void CLCDemoDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)
02.{
03.POSITION pos;
04.pos = m_listCtrl.GetFirstSelectedItemPosition();
05.
06.// 得到项目索引
07.IndexInFieldList = m_listCtrl.GetNextSelectedItem(pos);
08.
09.*pResult = 0;
10.}
在向上移动操作按钮的WM_CLICK消息响应函数中写入下面代码。
view sourceprint?
01.void CLCDemoDlg::OnButtonUp()
02.{
03.m_listCtrl.SetFocus();
04.
05.if (IndexInFieldList == -1)
06.return;
07.
08.// 判断所选项是否位于行首
09.if (IndexInFieldList == 0)
10.{
11.AfxMessageBox("已经位于第一行!");
12.return;
13.}
14.
15.// 提取所选列表项各列类容
16.CString tempField1, tempField2, tempField3;
17.tempField1 = m_listCtrl.GetItemText(IndexInFieldList, 0);
18.tempField2 = m_listCtrl.GetItemText(IndexInFieldList, 1);
19.tempField3 = m_listCtrl.GetItemText(IndexInFieldList, 2);
20.
21.// 删除所选列表项
22.m_listCtrl.DeleteItem(IndexInFieldList);
23.
24.// 在IndexInFieldList-1位置处插入上面所删列表项的各列类容
25.int tempItem;
26.tempItem = m_listCtrl.InsertItem(IndexInFieldList-1, _T(tempField1));
27.m_listCtrl.SetItemText(tempItem, 1, _T(tempField2));
28.m_listCtrl.SetItemText(tempItem, 2, _T(tempField3));
29.IndexInFieldList--;
30.
31.// 使得IndexInFieldList-1位置处项目高亮显示并获得焦点
32.UINT flag = LVIS_SELECTED|LVIS_FOCUSED;
33.m_listCtrl.SetItemState(IndexInFieldList, flag, flag);
34.}
向下移动操作按钮的响应函数代码与上面的代码类似,请参考本文所附源代码,因为代码有相关中文注释,这里我就不再赘述了。
运行情况
具体的运行效果请编译好附带源代码后执行。
展开全部
为LIST control的通知消息NM_CLICK添加消息处理函数,在消息响应函数的里添加代码:
*pResult = 0;
CString strLangName; // 定义一个字符串用于存放文本
NMLISTVIEW *pNMListView = (NMLISTVIEW*)pNMHDR;
if (-1 != pNMListView->iItem) // 如果iItem不是-1,就说明有列表项被选择
{
strLangName = m_programLangList.GetItemText(pNMListView->iItem, 0); // 获取被选择列表项第一个子项的文本
SetDlgItemText(IDC_EDIT, strLangName); // 将文本显示到编辑框中 ,IDC_EDIT为编辑框的ID
}
*pResult = 0;
CString strLangName; // 定义一个字符串用于存放文本
NMLISTVIEW *pNMListView = (NMLISTVIEW*)pNMHDR;
if (-1 != pNMListView->iItem) // 如果iItem不是-1,就说明有列表项被选择
{
strLangName = m_programLangList.GetItemText(pNMListView->iItem, 0); // 获取被选择列表项第一个子项的文本
SetDlgItemText(IDC_EDIT, strLangName); // 将文本显示到编辑框中 ,IDC_EDIT为编辑框的ID
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先 listctrl.GetItemText
然后 edit.SetWindowText
然后 edit.SetWindowText
追问
能不能帮我写一个小的源程序呀
追答
我没有安装vs
你按照我的步骤
1。建立多话框工程
2。放2个控件
3。绑定控件变量
4。放个按钮
5。按我说的调用
有问题追问我
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询