代码的功能很简单,一个Dialog程序,选择一些文件并在一个List控件中显示所选文件:
CString sFilter=_T("Word文档(*.doc)|*.doc|");
CFileDialog Dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_FILEMUSTEXIST|OFN_ALLOWMULTISELECT,(LPCTSTR)sFilter);
if(Dlg.DoModal()==IDOK)
{
CListCtrl *list = (CListCtrl*)GetDlgItem(IDC_LIST1);
list->SetRedraw(false);
POSITION pos = Dlg.GetStartPosition();
while(pos)
{
CString szFileName = Dlg.GetNextPathName(pos);
int index = list->InsertItem(0,(LPCTSTR)szFileName);
//list->SetItemText(index,0,(LPCTSTR)szFileName);
}
list->UpdateData();
list->SetRedraw(true);
list->Invalidate();
::AfxMessageBox((LPCTSTR)list->GetItemCount());
}
//结果发现GetItemCount是空的,根本没有加进去!!!怎么回事啊?
CString sFilter=_T("Word文档(*.doc)|*.doc|");
CFileDialog Dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_FILEMUSTEXIST|OFN_ALLOWMULTISELECT,(LPCTSTR)sFilter);
if(Dlg.DoModal()==IDOK)
{
CListCtrl *list = (CListCtrl*)GetDlgItem(IDC_LIST1);
list->SetRedraw(false);
POSITION pos = Dlg.GetStartPosition();
while(pos)
{
CString szFileName = Dlg.GetNextPathName(pos);
int index = list->InsertItem(0,(LPCTSTR)szFileName);
//list->SetItemText(index,0,(LPCTSTR)szFileName);
}
list->UpdateData();
list->SetRedraw(true);
list->Invalidate();
::AfxMessageBox((LPCTSTR)list->GetItemCount());
}
//结果发现GetItemCount是空的,根本没有加进去!!!怎么回事啊?
1)我用的是VISUAL STUDIO 2005
2)没有看见属性编辑器里有设'STYLE'为'REPORT’的地方
//list->SetItemText(index,0,(LPCTSTR)szFileName);
没设值?
DWORD dwStyle =0 ;
dwStyle = GetWindowLong(m_listUnHandle.m_hWnd, GWL_STYLE);
SetWindowLong(m_listUnHandle.m_hWnd, GWL_STYLE, dwStyle | LVS_REPORT);
dwStyle = m_listUnHandle.GetExtendedStyle() ;
m_listUnHandle.SetExtendedStyle(dwStyle | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);同时添加列
TCHAR rgtsz[10][20] = {_T("车辆"),_T("报警内容"),_T("报警时间"),_T("状态")};
int iFmt[10]={LVCFMT_LEFT,LVCFMT_LEFT,LVCFMT_LEFT,LVCFMT_LEFT,LVCFMT_CENTER,
LVCFMT_LEFT,LVCFMT_LEFT,LVCFMT_LEFT,LVCFMT_LEFT,LVCFMT_LEFT} ;
LV_COLUMN lvcolumn;
int i=0;
int nCol = 4,
for(i=0;i< nCol ;i++)
{
lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT
| LVCF_WIDTH | LVCF_ORDER;
lvcolumn.fmt = iFmt[1]; //// LVCFMT_LEFT
lvcolumn.pszText = rgtsz[i];
lvcolumn.iSubItem = i;
lvcolumn.iOrder = i;
lvcolumn.cx = iArrWidth[i] ;
m_listUnHandle.InsertColumn(i, &lvcolumn);
}
再使用
InsertItem函数添加Item,
m_Grid.SetItemText(x,y,Text);
x是行,y是列,Text是要添加的内容
m_Grid.SetItemText(x,y,Text);
x是行,y是列,Text是要添加的内容
感觉这句错误吧list->GetItemCount()得到的值是整型啊
list->SetRedraw(true);
list->Invalidate(); //可删除。
::AfxMessageBox((LPCTSTR)list->GetItemCount()); //不要这样显示数值,先删除看看是否已经添加了项目。
另外,list->GetItemCount()返回的是整数,不能强制转换为LPCTSTR类型来显示。
一定要嘛?
我只有1列也要嘛?
((CListCtrl*)GetDlgItem(IDC_LIST1))->InsertColumn(0,(LPCTSTR)_T("源文件"));
还是没用啊……
结贴!