关于ListCtrl的一个问题

kooko1986 2011-01-13 01:47:36
有个播放器程序,里面有个ListCtrl. 上面会显示很多条文件,然后因为这个List不够宽,所以看文件的全名的时候要把List往右边滑动一点.这里会出现一个问题.
每次当我往右边滑动把文件名字看完以后,我用鼠标点一下List,那么List就会自动往左边滑动,回到原始状态.
这样看名字又得把List往右边移.很麻烦.

想知道有没有办法让我点List以后,只是将List项移到当前点击的项,而不要每次一点就马上自动移到最左边去..
这个ListCtrl是下面函数创建的.
m_bFileListCtrlCreated=m_filelist.Create(LVS_SHOWSELALWAYS |LVS_SMALLICON |WS_CHILDWINDOW|WS_VISIBLE
|WS_EX_RIGHTSCROLLBAR,
FileListRect,
AfxGetApp()->m_pMainWnd,
IDC_FILELISTCTRL );

来个大神
...全文
215 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2011-01-14
  • 打赏
  • 举报
回复
是,这个tip就显示item的全文。
kooko1986 2011-01-14
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 schlafenhamster 的回复:]
用tooltip试试
[/Quote] 鼠标移动到上面提示? 是这意思吗?
kooko1986 2011-01-14
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 schlafenhamster 的回复:]
是,这个tip就显示item的全文。
[/Quote]
不过这个不是最后想要的结果.
我去试试重载下.

谢谢大家...
schlafenhamster 2011-01-13
  • 打赏
  • 举报
回复
用tooltip试试
HuWenjin 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 kooko1986 的回复:]
引用 9 楼 saimen 的回复:
WS_EX_RIGHTSCROLLBAR 在需要的时候自动显示

改成 WS_VSCROLL|WS_HSCROLL 让它一直显示,即使不需要也显示。


我看代码OnLButtonDown((UINT nFlags, CPoint point){}结束的时候有这样一句
CListCtrl::OnLButtonDown(nFlags, point)……
[/Quote]

我试了下,确实不行,估计,你要自绘了,并且自己处理SCROLL
kooko1986 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xianglitian 的回复:]
这个好像不好办
这个机制是有道理的
因为下一个item名字可能很短以至于滚动条的当前位置看不到
所以滚动条会复位
不过重载list屏蔽掉一些功能或许可以
但是具体的我也没做过
[/Quote]

我用鼠标单击其他项 会直接滑动块退回到最左边,
但是我直接双击 滑动块就不会退到左边..
双击的时候 也明明先响应了OnLButtonDown, 再响应的双击
向立天 2011-01-13
  • 打赏
  • 举报
回复
这个好像不好办
这个机制是有道理的
因为下一个item名字可能很短以至于滚动条的当前位置看不到
所以滚动条会复位
不过重载list屏蔽掉一些功能或许可以
但是具体的我也没做过
kooko1986 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 saimen 的回复:]
WS_EX_RIGHTSCROLLBAR 在需要的时候自动显示

改成 WS_VSCROLL|WS_HSCROLL 让它一直显示,即使不需要也显示。
[/Quote]

我看代码OnLButtonDown((UINT nFlags, CPoint point){}结束的时候有这样一句
CListCtrl::OnLButtonDown(nFlags, point);
是这个的原因吗?
kooko1986 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 saimen 的回复:]
WS_EX_RIGHTSCROLLBAR 在需要的时候自动显示

改成 WS_VSCROLL|WS_HSCROLL 让它一直显示,即使不需要也显示。
[/Quote]

是不是我没说清楚哦? 不是需要的时候自动显示 因为List上面名字很长 所以这个滑动条会一直都在的.因为显示不完.
WS_EX_RIGHTSCROLLBAR 这个查了下 说是垂直滚动条右边?
HuWenjin 2011-01-13
  • 打赏
  • 举报
回复
WS_EX_RIGHTSCROLLBAR 在需要的时候自动显示

改成 WS_VSCROLL|WS_HSCROLL 让它一直显示,即使不需要也显示。
wzfz2010 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 saimen 的回复:]
m_bFileListCtrlCreated=m_filelist.Create(LVS_SHOWSELALWAYS |LVS_SMALLICON |WS_CHILDWINDOW|WS_VISIBLE
|WS_EX_RIGHTSCROLLBAR,


貌似把WS_EX_RIGHTSCROLLBAR换掉就行了,这个好像是自动适应点击的。
[/Quote]
这样可以么?真不知道呢 学习饿了
kooko1986 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 saimen 的回复:]
m_bFileListCtrlCreated=m_filelist.Create(LVS_SHOWSELALWAYS |LVS_SMALLICON |WS_CHILDWINDOW|WS_VISIBLE
|WS_EX_RIGHTSCROLLBAR,


貌似把WS_EX_RIGHTSCROLLBAR换掉就行了,这个好像是自动适应点击的。
[/Quote]

我去查查.谢谢.
HuWenjin 2011-01-13
  • 打赏
  • 举报
回复
m_bFileListCtrlCreated=m_filelist.Create(LVS_SHOWSELALWAYS |LVS_SMALLICON |WS_CHILDWINDOW|WS_VISIBLE
|WS_EX_RIGHTSCROLLBAR,


貌似把WS_EX_RIGHTSCROLLBAR换掉就行了,这个好像是自动适应点击的。
kooko1986 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tigermaydo 的回复:]
换成LVS_REPORT以后 需要先添加栏目
m_list.InsertColumn(0,"column1",LVCFMT_LEFT,100);
m_list.InsertColumn(1,"column2",LVCFMT_LEFT,100);
m_list.InsertItem(0,"no1");
m_list.SetItemText(0,0,"item1-11111111111111……
[/Quote]
这个是好多年前的程序了.要是把类型改为LVS_REPORT的话,涉及改动的东西太多了.估计一周都完成不了了.
要是不改为lVS_REPORT,没有办法解决吗?
grf9527 2011-01-13
  • 打赏
  • 举报
回复
设置成report,就可以了
tigerMayDo 2011-01-13
  • 打赏
  • 举报
回复
换成LVS_REPORT以后 需要先添加栏目
m_list.InsertColumn(0,"column1",LVCFMT_LEFT,100);
m_list.InsertColumn(1,"column2",LVCFMT_LEFT,100);
m_list.InsertItem(0,"no1");
m_list.SetItemText(0,0,"item1-111111111111111111111");
m_list.SetItemText(0,1,"item1-2");
kooko1986 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tigermaydo 的回复:]
那是因为你选中的item无法完全显示 所以滑块会返回
楼主为何不将LVS_SMALLICON 换成 LVC_REPORT呢
[/Quote]

我换成LVS_REPORT以后 列表里面东西添加不进去了.
要是这里就用LVS_SMALLICON的话 有什么办法让滑块不要自动返回吗? 难道一定要把宽度增加到可以完全显示吗?
tigerMayDo 2011-01-13
  • 打赏
  • 举报
回复
那是因为你选中的item无法完全显示 所以滑块会返回
楼主为何不将LVS_SMALLICON 换成 LVC_REPORT呢

16,471

社区成员

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

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

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