“无限” C不使用 ES_AutoHScroll 编辑文本
我对 ES_AUTOHSCROLL Set 有不良反应。
我想做的是创建一个编辑,可以根据其中的文本调整大小。然而,每当用户在编辑结束后输入内容时,我就会遇到问题。
如果没有 ES_AUTOHSCROLL,用户无法输入超过当前编辑大小的内容,因此我的编辑不会增长以适应新字符,因为输入被忽略。
使用 ES_AUTOHSCROLL,当用户输入超过当前编辑大小时,它会在我有机会增加窗口大小之前先滚动,因此即使窗口现在足够大以容纳新字符,我最终也会隐藏第一个字母。
我的解决方案是让我编辑的一个最大宽度字符比其所包含的文本长并且有效,因为您有空间输入下一个字符。不过,这看起来有点俗气。
如果有一种方法可以允许比编辑窗口的宽度更宽的文本而不使用 ES_AUTOHSCROLL 我会被设置。
I'm having undesirable reflexes with ES_AUTOHSCROLL Set.
What I'm trying to do is create an Edit that resizes with the text in it. However I hit a problem whenever the user types past the end of the edit.
Without ES_AUTOHSCROLL the user cannot type past the current size of the edit, so my edit doesn't grow to fit the new character, because input is ignored.
With ES_AUTOHSCROLL when the user types past the current size of the edit, it scrolls first before I get a chance to increase my window size, so I end up with the first letter hidden even though the window is now big enough to hold the new character.
My solution was to make my edit one max-width character longer than the text its holding and that works, because you have room to type the next character. However, that looks a little tacky.
If there was a way to allow wider text than the width of the edit window without using ES_AUTOHSCROLL I'd be set.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为您还想使用 ES_MULTILINE
编辑:在 CEdit 的文档中,有一个成员函数
void CEdit::LimitText( int nChars = 0 )
它设置文本长度至 UINT_MAX。我仍然认为您还需要使用 ES_AUTOHSCROLL (否则当您尝试输入超出控件宽度时您将收到 EN_MAXTEXT 通知)。I think you also want to use ES_MULTILINE
EDIT: In the documentation of CEdit there is a member function
void CEdit::LimitText( int nChars = 0 )
which sets the text length to UINT_MAX. I still think you also need to use ES_AUTOHSCROLL (otherwise you'll get EN_MAXTEXT notifications when you try to type beyond the width of the control).我找到了一种方法来模拟我想要的效果。
我使用 ES_AUTOHSCROLL。
我响应 OnUpdate 并更改控件的大小以适合它包含的文本。为了处理滚动问题(它在知道文本会变大之前滚动以插入文本),仍在 OnUpdate 中,我选择 0,0,然后返回之前的选择。这样它就会滚动回到开头,然后更新大小。
这样,控件看起来会无限增长,而无需滚动。
I found a way to simulate the effect I want.
I use ES_AUTOHSCROLL.
I respond to OnUpdate and change the size of the control to fit the text it contains. To handle the scrolling problem (it scrolls to insert text before it knows it will get bigger), still inside OnUpdate, I select 0,0, then return the previous selection. That way it scrolls back to the beginning, then updates the size.
This way the control appears to grow indefinitely without scrolling.