如何在MFC对话框中将项添加到列表控件

时间:2013-09-14 13:32:18

标签: c++ visual-studio-2010 listview mfc

为了得到像这样的表:

enter image description here
在我的MFC对话框中,我添加了List Control。 然后使用Add Variable向导,我为控件创建了这个变量:

public:
CListCtrl m_lstIDC_LIST1Control;  

然后在我的对话框的OnInitDialog函数中,我添加了以下代码行:

// TODO: Add extra initialization here
m_lstIDC_LIST1Control.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_lstIDC_LIST1Control.SetExtendedStyle(LVS_EX_GRIDLINES);
//m_lstIDC_LIST1Control.SetExtendedStyle( LVS_SHOWSELALWAYS);
LVITEM lvItem;

lvItem.mask = LVIF_TEXT;
lvItem.iItem = 0;
lvItem.iSubItem = 0;
char* text = "Sandra C. Anschwitz";
wchar_t wtext[50];
mbstowcs(wtext, text, strlen(text)+1);
LPWSTR ptr = wtext;
lvItem.pszText = ptr;
m_lstIDC_LIST1Control.InsertItem(&lvItem);
UpdateData(false);  

我得到的结果是:

enter image description here
如果我取消注释该行:

//m_lstIDC_LIST1Control.SetExtendedStyle( LVS_SHOWSELALWAYS);  

水平网格也不会显示!
那么问题是什么呢? 为什么我添加的项目没有显示? 我该怎么做才能创建一个像第一张图片中所示的表格?

2 个答案:

答案 0 :(得分:22)

首先,确保在资源编辑器中选择了List Control的Report属性的View选项。我怀疑您使用的是默认的Icon视图,这不是您想要的。

然后,您需要添加所需的列:

m_lstIDC_LIST1Control.InsertColumn(0, _T("Full Name"), LVCFMT_LEFT, 90);
m_lstIDC_LIST1Control.InsertColumn(1, _T("Profession"), LVCFMT_LEFT, 90);
m_lstIDC_LIST1Control.InsertColumn(2, _T("Fav Sport"), LVCFMT_LEFT, 90);
m_lstIDC_LIST1Control.InsertColumn(3, _T("Hobby"), LVCFMT_LEFT, 90);

最后,您可以按如下方式填充列表项:

int nIndex = m_lstIDC_LIST1Control.InsertItem(0, _T("Sandra C. Anschwitz"));
m_lstIDC_LIST1Control.SetItemText(nIndex, 1, _T("Singer"));
m_lstIDC_LIST1Control.SetItemText(nIndex, 2, _T("Handball"));
m_lstIDC_LIST1Control.SetItemText(nIndex, 3, _T("Beach"));

nIndex = m_lstIDC_LIST1Control.InsertItem(1, _T("Roger A. Miller"));
m_lstIDC_LIST1Control.SetItemText(nIndex, 1, _T("Footballer"));
m_lstIDC_LIST1Control.SetItemText(nIndex, 2, _T("Tennis"));
m_lstIDC_LIST1Control.SetItemText(nIndex, 3, _T("Teaching"));

依旧......

答案 1 :(得分:2)

另外请确保您拥有正确的控件...您想要的是(至少在Visual Studio 2008的资源编辑器中)在工具箱中称为列表控件,而不是列表框