新手问题。CListCtrl不会用,无法添加数据……高分求解!

halcyon 2009-02-24 02:12:56
代码的功能很简单,一个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是空的,根本没有加进去!!!怎么回事啊?
...全文
158 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
halcyon 2009-02-24
  • 打赏
  • 举报
回复
……搞错了,是CListBox 而非CListCtrl,我好菜……
结贴!
halcyon 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 levelmouse 的回复:]
是view属性report
[/Quote]
没看到啊~~~只有什么visible属性的。。。
halcyon 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 lwx300 的回复:]
只有 1 列也是要的
[/Quote]
我在OnInitDialog里加了:
((CListCtrl*)GetDlgItem(IDC_LIST1))->InsertColumn(0,(LPCTSTR)_T("源文件"));
还是没用啊……
halcyon 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cnzdgs 的回复:]
CFileDialog使用OFN_ALLOWMULTISELECT标志时,需要自己提供一个缓冲区,将指针赋给OPENFILENAME结构中lpstrFile成员,并在nMaxFile成员中给出缓冲区长度。
另外,list->GetItemCount()返回的是整数,不能强制转换为LPCTSTR类型来显示。
[/Quote]
我看了szFileName的内容,是有值的
lwx300 2009-02-24
  • 打赏
  • 举报
回复
只有 1 列也是要的
halcyon 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 levelmouse 的回复:]
int index = list->InsertItem(0,(LPCTSTR)szFileName);
//list->SetItemText(index,0,(LPCTSTR)szFileName);
没设值?
[/Quote]
设了也没用,所以才去掉的……
halcyon 2009-02-24
  • 打赏
  • 举报
回复
没有insertColumn
一定要嘛?
我只有1列也要嘛?
cnzdgs 2009-02-24
  • 打赏
  • 举报
回复
CFileDialog使用OFN_ALLOWMULTISELECT标志时,需要自己提供一个缓冲区,将指针赋给OPENFILENAME结构中lpstrFile成员,并在nMaxFile成员中给出缓冲区长度。
另外,list->GetItemCount()返回的是整数,不能强制转换为LPCTSTR类型来显示。
一条晚起的虫 2009-02-24
  • 打赏
  • 举报
回复
ListCtrl是report形式?之前InsertColumn了没有?
lwx300 2009-02-24
  • 打赏
  • 举报
回复
CString sFilter=_T("Word文档(*.doc)|*.doc||"); //使用 2 个“|”结束。

list->UpdateData(); //可删除。
list->SetRedraw(true);
list->Invalidate(); //可删除。
::AfxMessageBox((LPCTSTR)list->GetItemCount()); //不要这样显示数值,先删除看看是否已经添加了项目。
yuhudie203 2009-02-24
  • 打赏
  • 举报
回复
::AfxMessageBox((LPCTSTR)list->GetItemCount());
感觉这句错误吧list->GetItemCount()得到的值是整型啊
xmrforever 2009-02-24
  • 打赏
  • 举报
回复
CListCtrl m_Grid;
m_Grid.SetItemText(x,y,Text);
x是行,y是列,Text是要添加的内容
xmrforever 2009-02-24
  • 打赏
  • 举报
回复
CListCtrl m_Grid;
m_Grid.SetItemText(x,y,Text);
x是行,y是列,Text是要添加的内容
xxfyath 2009-02-24
  • 打赏
  • 举报
回复
在程序中可以修改成report
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,

levelmouse 2009-02-24
  • 打赏
  • 举报
回复
是view属性report
levelmouse 2009-02-24
  • 打赏
  • 举报
回复
int index = list->InsertItem(0,(LPCTSTR)szFileName);
//list->SetItemText(index,0,(LPCTSTR)szFileName);
没设值?
halcyon 2009-02-24
  • 打赏
  • 举报
回复
补充:
1)我用的是VISUAL STUDIO 2005
2)没有看见属性编辑器里有设'STYLE'为'REPORT’的地方
访问真八字排盘系统介绍: 1、八字排盘 八字排盘是将年月日时按照天干地支的形式进行排列,一个时间单位代表了一个柱。八字由年柱、月柱、日柱和时柱共四个柱组成,也被称为四柱八字。八字学中基于中国阴阳五行、天干地支与刑冲克害、以及民间盲派的神煞论等方式,进一步预测爱情顺遂、工作高低、姻缘好坏、财富高低、学业成就、身体健康等事的学问。 八字排盘由以下元素组合:年月日时四柱、大运干支、胎元 、流年干支、十神、地势、神煞等。生辰八字不只是把干支历计算出来,而还要遵守月令、节令的强弱,时辰的阴阳变化进行校正。排盘分析,就是根据出生者的性别、天干地支的阴阳五行关系、进一步推算出来的一套方法论,给预测者做人生吉凶的参考数据,在未来事业、财运、婚姻、家庭等问题时,能做出风险较低的决策。 八字排盘怎么看 八字排盘由年、月、日、时四柱组成,每柱包含一个天干和一个地支,共八个字。年柱代表出生的年份,月柱代表出生的月份,日柱代表出生的日期,时柱则代表出生的时辰。每个柱的干支组合都会对个人的命运产生影响。天干地支旁边标注的正财、偏财、偏印、正印、比肩、劫财、食神、伤官、正官、七杀等,称为十神。 2、八字排盘软件介绍 我们是腾讯云市场金牌合作伙伴,广州正规软件开发公司,开发的八字排盘系统数据最全面精准,我们八字排盘采用最精确的排盘程序,而且运用“真太阳时”,进行更精确的时间划分。大家都知道我们使用的北京时间,是统一规定的标准时间。而八字排盘需要相对于太阳方位的天文时间,即平太阳时。我们国家地大物博,北京时间19时,哈尔滨已经夜幕降临,而新疆却还是太阳高挂,这时哈尔滨的天文时间可能在20:00以后,而新疆的天文时间可能在16时以前。北京时间是东经120度经线的平太阳时,如果您出生地的经度与北京时间所处的经度差异较大,或者处于单数时间点的前后,比如6点差一刻,8点,10点15分等

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧