为了得到像这样的表:
在我的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);
我得到的结果是:
如果我取消注释该行:
//m_lstIDC_LIST1Control.SetExtendedStyle( LVS_SHOWSELALWAYS);
水平网格也不会显示!
那么问题是什么呢?
为什么我添加的项目没有显示?
我该怎么做才能创建一个像第一张图片中所示的表格?
答案 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的资源编辑器中)在工具箱中称为列表控件,而不是列表框