1、我为list ctrl 设置了一个image list,每个item对应一张图片,但由于item很多,因此要花较长的时间才能插入所有的item。我发现list ctrl 是在所有的item都插入以后才一起把他们显示出来的,能不能每插入一个item就显示呢?2、CListCtrl有一个方法(GetSelectedCount)可以获得选中的item,那么有没有办法可以设置某个item被选中呢?比如说我要设置最后一个item被选中。3、如何才能控制list ctrl 的滚动?比如说,我的list ctrl中只有一个item,它对应一张很大的图片,我能不能控制滚动条的位置使得图片上指定的位置显示在list ctrl中?分数可以加,最好有sample(有的话一定加)
解决方案 »
- 关于单档多视的问题
- 请教关于提示(tooltip?)的一个问题,说简单却很难找到解答的一个问题,在线等...
- 数据库,小问题,高手请进(VC)!!!!
- 如何初始化一个静态的常量型的类字符串数组成员?
- 为什么SendMessage(WM_MOVE,0,0x00ff00ff)没有用?需要自己写OnMove()??
- 朋友们一般都用哪个的安装生成工具?
- 请问CListCtrl可以实现网格吗?
- 问5个问题,有的很难!
- vc2005 编译环境为X64的情况下,报错“_stat64::_stat64”: 没有重载函数接受 2 个参数
- 为什么按钮们的父亲不一样?
- 如何在windows中动态分配特大的内存, 急
- 如何开发网站负载测试软件?
3, WM_VSCROLL, SetScrollPos(), ScrollWindow()
如果你一定要插入一条显示一次的话,那你可以在插入完每一条后让list ctrl重画RedrawWindow()
我用SetItemState确实解决了第2个问题,不过又出现有一个新的问题,我的list中的东西比较多,用程序设定选中某一item后,不会自动滚动到该item所在的位置,这个滚动的工作一定要利用滚动消息做的吗?还是有什么简单的方法?
在添加item的大循环中添加如下代码:
while(1)
{
...
InsertItem(...); MSG message;
while(::PeekMessage(&message, m_hWnd, 0, 0, PM_REMOVE))
{
::TranslateMessage(&message);
::DispatchMessage(&message);
}2, SetItemState(...)
3, WM_VSCROLL, SetScrollPos(), ScrollWindow()
一个item的时候滚动条没有问题啊,可以看到其余部分的To tuyang()
你给的代码不好用啊,看不到item一个一个显示的效果。可以解释一下这段代码吗?
RedrawItems ( i , i ) ; // i is the index of the inserted item
UpdateWindow () ;