【发布时间】:2012-05-30 08:55:09
【问题描述】:
我正在使用 Visual Studio C++ 2008 v 3.5 SP1(带有功能包)。
通过InsertItem() 将项目添加到MFC CListCtrl 对象后,在大多数视图模式中,它们的图标以相反的行顺序显示,但正确的列顺序。
我没有使用“报告”(LV_VIEW_DETAILS) 模式,所以我提到的行和列是指图标在网格或布局中的排序方式。
我这样添加它们:
for (int i = 0; i < item_count; ++i)
list_ctrl.InsertItem (i, item_arr[i].text, i);
并希望它们看起来像这样:
icon 0
icon 1
icon 2
:
icon N-2
icon N-1
(其中图标#与其项目#匹配,N是item_count)。
但是,在“大图标”、“小图标”和“平铺”(LV_VIEW_ICON、LV_VIEW_SMALLICON、LV_VIEW_TILE)模式下,它们看起来像这样:
icon N-1
icon N-2
:
icon 2
icon 1
icon 0
它们仅在“列表”(LV_VIEW_LIST) 模式下以正确的顺序出现,但随后它们会水平排列和滚动:
icon 0 icon 1 icon 2 .. icon N-2 icon N-1
(它们是否全部出现在单行/列中仅仅是图标和控件的相对大小/尺寸的函数。) 看来我可以有垂直方向但顺序相反,或者顺序正确但方向错误!
如何按照我想要的方式得到东西?我在文档或论坛中没有看到任何关于此的内容 - 仅关于按文本排序项目(我不想要)或在详细信息/报告模式下排序列的顺序(我不想要)。
【问题讨论】:
-
@Jonathan、Bart 或任何人:为什么将我的大量散文重新格式化为代码?我可以看到这样做的意义在于使用可以/确实出现在代码中的名称/类型,但是诸如“相对大小/维度”或“属性”之类的词......?
-
抱歉 - 我改进了 Joy 所做的一些更改,但我专注于省略的 'i' 到 'I' 映射,并指出作为代码更改的代码是一种改进。我同意运行文本中的“相对大小/尺寸”等最好保留为纯文本;我应该解开那些,我很抱歉在重新编辑时不够无情。您可以对其进行编辑以适合自己,但请记住,如果您一开始就使演示文稿“更好”,则根本不需要编辑。您可以随时编辑您的问题。
-
我看到 Bart 删除了一个笑脸和一些省略号;乔伊再次强调。他的改变得到了“人民”的认可。在这个问题的情况下,我认为我将 Joy 的更改标记为有帮助。我可能会留下“答案”:我需要将
OwnerDrawFixed属性更改回False!,它不强调属性。而且我可能会在以下内容中添加“它”:现在它可以按预期工作了。 但总的来说,笑脸在 SO 上的使用并不多,总的来说这是一件好事。 (如果您希望我为您清理,请再次发表评论;我会的,因为我造成了混乱。) -
@Jonathan 等人。感谢您的改进(以及良好风格的解释)。我并不是要挑剔,但你提到了乔伊的编辑,但我没有看到对乔伊的正式提及。另外,我不确定您所说的“被'人们'批准”是什么意思。 “人”是另一个用户,一般用户,......?
-
转到修订版 (stackoverflow.com/posts/10726216/revisions),然后查看修订版 2。您也可以通过单击“1 小时前编辑”(当我键入时)部分的时间来做到这一点问题的底部,在您的“询问”信息旁边。 “由人们批准”意味着编辑是由没有允许他们编辑任何内容的声誉的人提出的。这样的编辑由那些可以进行编辑的人仔细检查,并且(通常)两个人在接受之前批准编辑。所以,乔伊的改动得到了两个人的认可。