我正在尝试在屏幕上显示字符串,同时用户仍然键入它。通常,wxDC的DrawText函数用于字符串的内容已知的字符串。
void DrawText(const wxString& text, wxCoord x, wxCoord y)
我们知道,这个函数需要一个wxString并在屏幕上打印。但是,如何让用户在屏幕上输入内容(在wxWindow,wxFrame上)。总而言之,我现在正在绘画程序中工作,用户可以绘制某些形状。某些形状很容易绘制,移动等...但是有一个文本框并让用户在其中键入内容是我的想法到目前为止。当然,这应该是可编辑的,例如当用户再次点击相同的“文本框”时,我应该能够编辑它。
最后一点,我试图避免使用wxTextCtrl之类的控件,并且在某种意义上试图创建我自己的textctrl。什么是最好的起点?
任何想法都会受到赞赏。
答案 0 :(得分:0)
我认为你不需要在这里做任何特别的事情。只要用户处于某种“编辑”模式 - 即您希望他们输入文本 - 那么您需要做的就是在用户输入更多文本时重绘所有内容。
这样的事情:
DrawText
或更有可能DrawLabel
在rect 然后在文本发生变化时重新绘制文本,如果需要,你有一个包含持久性内容的字符串。
或者,您只需弹出wxDialog
wxTextCtrl
即可向用户询问整个文本字符串,然后在关闭对话框后绘制。
有道理吗?
答案 1 :(得分:0)
编写自己的wxTextCtrl
很困难,我强烈建议不要这样做。但是,如果你真的想(为什么?),那么它当然是可能的,毕竟wxRichTextCtrl
具有明显比普通wxTextCtrl
更多的功能只使用wxWidgets API编写。
这里没有特别的魔力,只需更新窗口(理想情况下,使用wxWindow::RefreshRect()而不是刷新整个窗口),只要其中显示的文本发生变化,您的wxEVT_PAINT
处理程序必须能够正确地绘制文本。