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

Sep*_*our 5 c++ mfc listview visual-studio-2010

为了有一个像这样的表:

在此输入图像描述
在我的MFC对话框中,我添加了一个List Control.然后使用Add Variable向导,我为控件创建了这个变量:

public:
CListCtrl m_lstIDC_LIST1Control;  
Run Code Online (Sandbox Code Playgroud)

然后在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);  
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

在此输入图像描述
如果我取消注释该行:

//m_lstIDC_LIST1Control.SetExtendedStyle( LVS_SHOWSELALWAYS);  
Run Code Online (Sandbox Code Playgroud)

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

Rog*_*and 23

首先,确保在资源编辑器中选择了列表控件ReportView属性选项.我怀疑你使用的是默认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);
Run Code Online (Sandbox Code Playgroud)

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

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"));
Run Code Online (Sandbox Code Playgroud)

等等 ....