我正在使用直接2D和直接写入制作自定义编辑框。绘画内容(框)由直接2D完成。我从WM_CHAR消息中获取输入并将其附加到字符串。这个字符串写在框中。现在的问题是,只要文本输入超过文本框的长度,它就会自动向下滚动,现在输入的文本在文本框中不可见。因此,如何滚动文本,使其始终在文本框中。
答案 0 :(得分:0)
我相信你已经使用了' IDWriteTextFormat :: SetTextAlignment'使文本与布局框的中心对齐。类似地,您可以使用' IDWriteTextFormat :: SetParagraphAlignment'控制文本的垂直对齐。
但它不能做你所说的"文本总是在文本框中#34;。您必须更改字体大小以适合静态布局框。 "滚动"无法帮助你。
答案 1 :(得分:0)
这完全取决于你想用它做什么以及你的控制需要多么复杂。如果仅显示单行的约束,您可以尝试强制DWRITE_WORD_WRAPPING_NO_WRAP
包装模式。如果你想要它是多线的,你只想使用单一字体,你可以计算一次线高,然后在新线显示下一行而不是当前;例如,在VK_UP上你可以向后滚动一行。重点是,通过多线控制,可以预期它会以行高的倍数显示文本的一部分。
在任何情况下,您都必须自己实施滚动,例如更新渲染目标,并一次只显示其中的一部分。它不是DirectWrite或D2D工作。