【问题标题】:CMFCPropertyGridProperty and CEdit text auto selectCMFCPropertyGridProperty 和 CEdit 文本自动选择
【发布时间】:2012-01-12 08:15:51
【问题描述】:

我读过的here (当用户选择一个编辑控件时,....并使用反向视频突出显示其文本)如果我理解正确,CEdit 应该突出显示(我希望它与选择相同) 文本,当我点击它时。

我将 CMFCPropertyGridCtrl 与 CMFCPropertyGridProperty 一起使用。但是当我点击网格(一个属性值)时,它没有选择任何东西。

我发现:属性在内部创建 CEdit,用于手动编辑属性值。它被创建,它的字体被设置等等。然后 SetFocus 被调用,在 UpdateWindow 之后 - 这将重绘编辑框并将光标设置在第一个字符之前。在此之后,再次触发鼠标单击以单击编辑框 - 这似乎是正确的。但是没有选择文本。

我还尝试创建自己的属性类,它派生自 CMFCPropertyGridProperty。在这一切之后,我已经调用了 SetSel。它确实选择了我的文本,但随后它只是取消选择它(在下一次重绘中)。我还实现的是,在重绘之后,只选择了从开始到鼠标单击的文本(当我在第 4 个字符之后单击时,只选择了前 4 个字符)。

我的问题:

CEdit 真的应该在第一次鼠标点击后自动选择文本吗? (你有一些资源吗?)

你不知道,为什么这在 CMFCPropertyGridProperty 中不起作用?

CMFCPropertyGridCtrl 和 CMFCPropertyGridProperty 可以在 mfc 源代码目录的 afxpropertygridctrl.h/.cpp 中找到。

【问题讨论】:

    标签: mfc cedit


    【解决方案1】:

    所以我终于发现了:

    CEdit 在单击文本后可能不会选择文本。这必须通过例如 SetSel 函数手动完成。

    但是在 CMFCPropertyGridCtrl 中,如果单击,它会传递给 CMFCPropertyGridProperty,并且会重复单击。因此,如果我使用 SetSel,它会取消选择文本。所以我不得不编写自己的类来继承 CMFCPropertyGridProperty 并跳过这一步(再次单击)。 SetFocus 和 SetSel 就足够了(这也将光标设置到 CEdit 窗口)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多