【问题标题】:Something preventing default (explorer-style) CListCtrl jump to line behaviour阻止默认(资源管理器样式)CListCtrl 跳转到行行为的东西
【发布时间】:2010-02-11 14:17:34
【问题描述】:

我正在维护一个最初用 VS6 编写的 MFC/COM/ATL 45-odd 项目解决方案。我现在正在使用VS2008。 我正在查看一个列表控件(vanilla CListCtrl),它的行为不像我们认为的那样。 通常在 MFC 列表控件中,您可以按一个键,(Q 说)& 选择将跳到以“Q”开头的第一行(如 Windows 资源管理器)。有谁知道为什么这不会发生? 样式/扩展样式设置为与同一项目中的另一个控件相同,可以正常工作。 我是否必须发送自己的消息,或者是否有控制该功能的标志等?通常谷歌会提供答案,但这次我无法正确构建我的查询以提供相关信息。 这是 CListCtrl 的 .rc 文件中的行,它不会跳转到按键时的行:

 CONTROL         "List1",IDC_BAL_LIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,0,73,493,230

下面是同一 .rc 文件中的一行,显示了执行此操作的列表控件:

CONTROL         "List1",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,1,38,501,219

如你所见,属性没有明显区别,那么什么程序代码会影响呢?

【问题讨论】:

  • 明显的区别在于ID值,在代码中是如何处理的?
  • 它们都绑定到 CListCtrl 成员变量并使用这些变量进行操作。我刚刚浏览了两个相关的代码部分,并且它们都分配了相同的 ExtendedStyles - LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES。我看不出它们之间有什么区别。很难显示所有代码,因为它在每个 .cpp 中分布在 2-3000 个 LOC 上 - 我希望有人可以提出一种可以关闭此功能的方法。如果我知道这将是一个很好的起点,例如,此属性是否有名称等。
  • 不可能有很多事情会阻止此功能工作 - 只是我无法在任何地方找到信息 - 肯定有一位 MFC 大师可以告诉我(可能很明显)回答为什么 up、down、PgUp、PgDn、End 和 Home 都可以工作,但是按“B”并跳转到“B”——算了!

标签: visual-c++ mfc


【解决方案1】:

我现在已经意识到问题出在哪里(休息后回到它) - CListCtrl 匹配零列(我认为有些人称之为“标签”列) - 这是一个隐藏列(在这个特定的列表控件)有时包含一个数字,有时是空白的,所以当按下字母键时不出所料地不会做任何事情。很明显,真的 - 我很抱歉让问题听起来比实际更复杂;)

【讨论】:

    猜你喜欢
    • 2017-03-13
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 2013-07-25
    相关资源
    最近更新 更多