【问题标题】:mfc c++ getting control properties by controlmfc c++ 通过控件获取控件属性
【发布时间】:2015-05-08 14:45:04
【问题描述】:

这似乎是在向那些已经知道的人提出一个愚蠢的问题。 你有没有注意到在你刚开始学习的一些 MFC 控件的属性中找到这些设置值常量是多么困难。这不是很好吗,如果我可以去一些知识的书籍,或者因为信息太大而无法放入一本书中,然后是一个网站,您可以在其中深入了解您想要查找的控件和方法或属性找出可以接受的设置常量...

例如,我在我的CDialog 上使用CListCtrl(如果需要,甚至可以是CDialogEx),我想为此控件设置垂直线和水平线(或网格线)。你会认为我会找到一个例子。到目前为止我还没有。另一种是CListCtrl 列格式。我找到了LVCFMT_LEFT,但是我正在寻找类似“LVCFMT_CENTER”的东西,但不是这样。所以我只是在互联网上梳理一下,看看我是否可以从某人关于CListCtrl's 上的其他问题的问题中瞥见我的答案。

如果有人能指导我完成我的任务,我将不胜感激。

疯狗

【问题讨论】:

    标签: c++ mfc clistctrl class-constants


    【解决方案1】:

    你看过这里https://msdn.microsoft.com/en-us/library/hfshke78.aspx 吗?

    要显示网格线,您需要设置扩展样式LVS_EX_GRIDLINES。你可以打电话给SetExtendedStyle

    auto exstyles = m_myListCtrl.GetExtendedStyle();
    exstyles |= LVS_EX_HEADERDRAGDROP;
    m_myListCtrl.SetExtendedStyle(exstyles);
    

    至于LVCFMT_CENTER,它确实有效,但不适用于第一列。见MSDN中的备注:

    如果将列添加到索引为 0 的列表视图控件(最左侧 列),它始终是 LVCFMT_LEFT。在第 0 列设置其他标志 不会覆盖该对齐方式。因此,如果您继续插入 索引为 0 的列,所有列中的文本都是左对齐的。如果你 希望第一列右对齐或居中,您可以制作一个 虚拟列,然后插入索引为 1 或更高的一列或多列 并指定您需要的对齐方式。最后删除假人 列。

    【讨论】:

    • 这是有史以来最奇怪的事情。因此,第一列左对齐不是控件或设计决策的要求,而是添加功能的限制,它会任意覆盖第一列的属性。奇怪!
    • 我相信这是随着时间的推移成为一项功能的错误之一(因为改变它会破坏事情)。
    • 感谢您如此敏捷和中肯地回答我的问题。然而,顶部的链接没有提供关于常量本身的任何信息,例如LVCF_anything。如果我已经有一个这样的值设置,例如LVCF_LEFT,我确实发现智能感知对我有一些帮助。我正在搜索(不确定是否可用)是为 MFC 中所有此类类的所有此类控件的所有此类属性找到所有此类值。那将是真棒!再次感谢。
    猜你喜欢
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多