【问题标题】:"Unlimited" CEdit text without ES_AutoHScroll没有 ES_AutoHScroll 的“无限”CEdit 文本
【发布时间】:2011-01-07 03:53:56
【问题描述】:

我在设置 ES_AUTOHSCROLL 时出现不良反应。

我想要做的是创建一个编辑,用其中的文本调整大小。但是,每当用户在编辑结束后键入时,我就会遇到问题。

如果没有 ES_AUTOHSCROLL,用户无法输入超过当前编辑大小,因此我的编辑不会增长以适应新字符,因为输入被忽略。

使用 ES_AUTOHSCROLL 当用户键入超过当前编辑大小时,它会在我有机会增加窗口大小之前先滚动,因此即使窗口现在大到可以容纳,我最终还是隐藏了第一个字母新角色。

我的解决方案是让我的编辑一个最大宽度字符比它所持有的文本长,这样就可以了,因为你有空间输入下一个字符。但是,这看起来有点俗气。

如果有办法在不使用 ES_AUTOHSCROLL 的情况下允许文本比编辑窗口的宽度更宽,我会设置。

【问题讨论】:

    标签: c++ mfc cedit


    【解决方案1】:

    我想你也想使用 ES_MULTILINE

    编辑:在 CEdit 的文档中,有一个成员函数 void CEdit::LimitText( int nChars = 0 ) 将文本长度设置为 UINT_MAX。我仍然认为您还需要使用 ES_AUTOHSCROLL(否则当您尝试输入超出控件宽度的内容时会收到 EN_MAXTEXT 通知)。

    【讨论】:

    • 我不想要多行。我想要一条在不使用 autohscroll 的情况下“永远”扩展的行。我希望能够在不使用 autohscroll 的情况下输入超过编辑框的宽度。
    【解决方案2】:

    我找到了一种方法来模拟我想要的效果。

    我使用 ES_AUTOHSCROLL。

    我响应 OnUpdate 并更改控件的大小以适合其包含的文本。为了处理滚动问题(它会在知道文本会变大之前滚动以插入文本),仍然在 OnUpdate 中,我选择 0,0,然后返回之前的选择。这样它会滚动回到开头,然后更新大小。

    这样,控件看起来会无限增长而无需滚动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      • 2013-01-12
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      相关资源
      最近更新 更多