| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1503 人关注过本帖
标题:请教一下,关于CListCtrl
只看楼主 加入收藏
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
收藏
 问题点数:0 回复次数:16 
请教一下,关于CListCtrl

程序中需要CListCtrl控件,但是对于它非常陌生,手头也没有详细的资料,网上有很多关于它的应用的例子,但是还是弄不清一些函数,自己试着编了些代码,可是总提示有错.下面是我编的代码,编译链接都能过,就是执行的时候出错:
1,控件在对话框中,初始化函数
BOOL CExmDlg::OnInitDialog()
{
CDialog::OnInitDialog();

m_ExmList.InsertColumn(0,"序号",LVCFMT_LEFT,80);
m_ExmList.InsertColumn(1,"操作内",LVCFMT_LEFT,80);

m_ExmList.InsertItem(0,"主数据");/////加上这行执行时就出错
m_ExmList.SetItemText(0,1,"子数据");///加上就出错


return 1;

}
2,对话框调用
void CCListExm1View::OnDraw(CDC* pDC)
{
CCListExm1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here

CExmDlg dlg;
dlg.DoModal();
}
其它地方就没什么改动了,还请高手们帮忙看看,谢谢...

搜索更多相关主题的帖子: CListCtrl ExmList LEFT 对话框 
2006-07-22 17:46
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
1.试了一下没错,应该这么写,看看是不是别的地方错了。实在不行全删了一行一行加进去再试试。
2.不要在OnDraw()里面加dlg.domodal(),OnDraw()负责重画你的view。这样会造成死循环。

http://myajax95./
2006-07-24 14:23
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
收藏
得分:0 
谢谢版主

生活充满阳光,快乐无处不在
2006-07-24 20:06
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
收藏
得分:0 
重新试了一下,还是不行,把自己添加的代码都删了然后重新写的,还是原来的毛病

生活充满阳光,快乐无处不在
2006-07-25 11:24
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
是在别人程序的基础上加自己的东西吗?把代码传上来我给你看看,也许是别人的代码的问题。

http://myajax95./
2006-07-25 11:30
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
或者是不是把list control的属性里选了owner draw fixed了?

http://myajax95./
2006-07-25 11:39
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
收藏
得分:0 
以下是引用myajax95在2006-7-25 11:39:44的发言:
或者是不是把list control的属性里选了owner draw fixed了?

就是这个毛病了,改了以后就没问题了,版主好厉害
还想问一下,这类控件可以动态添加项吗?刚才试了试,如果在创建了对话框以后再添加项也执行不了,如果想动态添加项的话,是不是也要修改一些属性或者设置呢?


生活充满阳光,快乐无处不在
2006-07-25 12:00
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 

owner draw fix是当写程序的人想自己draw 每一个item的时候用的,选中了这个就需要自己写DrawItem()函数。否则就会crash。

不知道添加项是什么意思,是加行还是加列?好像都没问题。

m_list.InsertColumn(0,"col 1",LVCFMT_LEFT,80);
m_list.InsertColumn(1,"col 2",LVCFMT_LEFT,80);

m_list.InsertItem(0, "item 0");
m_list.SetItemText(0, 1, "item 1");

m_list.InsertColumn(3,"col 3",LVCFMT_LEFT,80);


http://myajax95./
2006-07-25 12:32
umbrellandy
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2006-7-21
收藏
得分:0 

或许刚刚没说清楚吧,在上面的例子中,添加行和列都是在初始化函数中实现的,这样控件里的各行各列就是固定不变的了.比如说我想程序实现一个功能:提示每天的行程安排.如果按照刚才我所说的那就要针对每天的安排都设计一个对话框,然后加上不同的初始化函数,似乎有点麻烦,所以我想能不能把"添加行"从初始化函数中拿出来用专门的函数负责.当用户选择"查看周一的行程",控件里就添加周一的内容,选择周二的就添加周二的,这样就不用设计那么多对话框了.不知道这次说清楚了没有...
刚才我试了试在创建对话框后添加行,执行时有错误...


生活充满阳光,快乐无处不在
2006-07-25 13:40
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
没问题呀,试试这个小例子。
tEi5wLSk.rar (27.7 KB) 请教一下,关于CListCtrl



http://myajax95./
2006-07-25 14:21
快速回复:请教一下,关于CListCtrl
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033583 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved