重用编辑控件作为命令窗口
时间:2020-03-06 15:04:18 来源:igfitidea点击:
这是一个GUI应用程序(实际上是MFC)。我需要一个能够显示如下提示的命令窗口:
Name of favorite porn star:
用户应该能够在提示符后输入文本,例如:
Name of favorite porn star: Raven Riley
但是我需要防止用户将光标移到提示区域。还应防止用户退格到提示中,以防止出现以下情况:
Rrraven Rrrileeey Ruuuulez!!! Name of favorite porn star:
还需要控制文本的选择等等。最后,我只检索用户输入的文本(减去提示文本)应该没有问题。
从头开始创建自己的窗口类(从CWnd继承)还是更好?还是应该重用Windows EDIT控件(从CEdit继承)?
在AutoCAD和Visual Studio中(在调试模式下)可以看到类似的命令窗口。
解决方案
我认为我们最好创建CEdit的子类并限制过滤按键。我想最困难的部分是不允许用户将插入符号移动到提示区域,但是我们可能可以编写一些代码以确保插入符号始终被发送回它所属的位置(输入部分)。
无论如何,如果我们确实真的想要实现自己的控件(毕竟并不那么困难),我建议我们阅读Jacob Navia的"技术文档",了解他如何构建LCC编译器和环境。实际上,这些文档似乎不再在线,但是我敢肯定,我们可以通过他的电子邮件([email protected])获得这些文档。
编辑:我更好地喜欢我们以前的示例。保持优雅,大声笑:)
我有一个非常相似的要求,并且完全按照davidg的建议进行。将编辑控件和过滤的按键分为两个子类。这实际上是使用Qt而不是MFC,但原理将完全相同。
我们需要记住过滤主键,左键和退格键等键。我只是检查了一下移动是否会将插入符号移动到提示中,以及是否确实忽略了按键。
要注意的另一件事是粘贴多行文本,我们必须选择是仅粘贴第一行还是粘贴所有行,然后在第一行之后的所有行上添加提示。当子类化控件时,我们会得到很多行为,这些行为将无法完全按照期望进行。