2

我对 ES_AUTOHSCROLL Set 有不良反应。

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

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

使用 ES_AUTOHSCROLL 当用户键入超过当前编辑大小时,它会在我有机会增加窗口大小之前先滚动,所以即使窗口现在大到足以容纳新字符,我最终也会隐藏第一个字母.

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

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

4

2 回答 2

0

我想你也想使用ES_MULTILINE

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

于 2010-11-30T22:49:17.430 回答
0

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

我使用 ES_AUTOHSCROLL。

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

这样,控件似乎可以无限增长而无需滚动。

于 2011-01-06T19:53:56.187 回答