`
阿尔萨斯
  • 浏览: 4168926 次
社区版块
存档分类
最新评论

listCtrl——我陷入一个困惑

 
阅读更多
listCtrl——我陷入一个困惑
listCtrl是MFC里面的一个控件,通常在插入数据的时候用InsertItem和SetItemtext这两个ClistCtrl的成员函数。

脑补内容如下:
———————————源于CSDN的blog——————————————

InsertItem在MSDN中的函数原型如下
intInsertItem(constLVITEM*pItem);
int InsertItem( int
nItem, LPCTSTRlpszItem);
int InsertItem( int
nItem, LPCTSTRlpszItem, intnImage);
int InsertItem( UINT
nMask, intnItem, LPCTSTRlpszItem, UINTnState, UINTnStateMask, intnImage, LPARAMlParam);
一般我们用的比较多的时第2种和第三种,其中第三种时建立一个带有头标的项

要调用第三个,可以先声明一个CImageList对象
m_ImageList.Create(16,16,true,2,2);
m_ImageList.Add(theApp.LoadIcon(IDR_MAINFRAME));
m_ListCtrl.SetImageList(&m_ImageList,LVSIL_SMALL);
这样,控件中的每一行的开头就有一个应用程序图标

现在转入正题,先介绍一下INSERTITEM个个参数的意义
nItem: 控件中行的索引
lpszItem: 控件头的名字
.........................................................................................................................................................................................................
SettItemtext函数的原型
BOOLSetItemText(intnItem,intnSubItem,LPTSTRlpszText);
******************注意这个函数中的参数
nItem就是INSERTITEM中的NITEM,
也就是说InsertItem是向控件声请一行来放数据,记住只是声请,那么方数据的工作就又SETITEMTEXT来实现
举例如下:

CListCtrl m_listctrl;

m_listctrl = newClistCtrl();

m_listctrl.Creae(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_EDITLABELS
,bigRect,this,IDC_LIST1
);

m_listctrl.InsertItem(0,"01");

m_SetItemtext(0,1,"1");

m_SetItemtext(0,2,"2");
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
至于要添多少多少个数据,就由你的控件由多少列了
———————————————脑补结束—————————————


正题:

我的目的是为了在C++中将Excel的数据导入到
listCtrl控件中。
range为CRange类型的一个实例。按理说这并不是个非常难理解的东西,但是我遇到了一个可能会C++中比较常见(但我确实之前没有遇到过的问题)

这个是我在无数疯狂修改后的程序:
图片
图片
图片
正常结果:(原谅我用excel表示效果,有些东西不能乱发)
图片
但是。。。你们知道之前经历了什么么?

按理说,这个地方只用一个int类型的变量传进去就可以了。窃以为用for循环的循环变量来控制这个SetItemText就可以了。
修改部分的代码如下:

图片
错误的结果是:
图片
这样的结果很明显只实现了InsertItem(只插入了每行第一列的数据),但是SetItemText就置若罔闻。我经过调试以后这个循环变量和GetItemCount得到的行号,实际上是一样的,都是Int的正常值。我想即使行号出错误,也会乱七八糟的插入一些值,起码不为空。
虽然不会报错,但是
SetItemText不会工作。
我为什么不早用获取行号来解决问题?因为看的例程都是随便通过一个int类型的变量传入到
SetItemText里面,但是我用就不行。
而且,红框里面的FUCK!!已经严重表明了我现在的心情,这块我确实想了很久。
这是为什么?!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics