0

这是一个 GUI 应用程序(实际上是 MFC)。我需要一个能够显示如下提示的命令窗口:

最喜欢的色情明星的名字:

用户应该能够在提示后输入文本,如下所示:

最喜欢的色情明星的名字:Raven Riley

但我需要防止用户将光标移动到提示区域。还应防止用户退格进入提示符,以防止出现以下情况:

Rrraven Rrrileeey Ruuuulez!!!最喜欢的色情明星的名字:

还需要控制文本选择等等。最后,我只检索用户输入的文本(减去提示文本)应该没有问题。

从头开始创建自己的窗口类(即从CWnd 继承)会更好还是应该重用Windows EDIT 控件(即从CEdit 继承)?

在 AutoCAD 和 Visual Studio(在调试模式下)中可以看到类似的命令窗口。

4

2 回答 2

3

我认为你最好创建一个 CEdit 的子类并限制过滤按键。我想困难的部分是不让用户将插入符号移动到提示区域,但是您可能可以编写一些代码来确保插入符号总是被发送回它所属的位置(输入部分)。

无论如何,如果您真的非常想实现自己的控件(毕竟这并不难),我建议您阅读 Jacob Navia 的“技术文档”,了解他如何构建 LCC 编译器和环境。实际上,这些文档似乎不再在线,但我相信您可以通过他的电子邮件 (jacob@jacob.remcomp.fr) 获得它们。

编辑:我更喜欢你之前的例子。保持优雅,大声笑:)

于 2008-10-03T12:36:15.663 回答
1

我有一个非常相似的要求,并且完全按照 davidg 的建议做了;子类化编辑控件并过滤按键。这实际上是使用 Qt 而不是 MFC,但原理完全相同。

您需要记住过滤诸如 home 以及 left 和 backspace 之类的键。我只是检查了移动是否会将插入符号移动到提示符中,以及它是否确实忽略了按键。

要注意的另一件事是粘贴多行文本,您必须选择是仅粘贴第一行还是所有行,在第一行之后的所有行上添加提示。当对控件进行子类化时,您会得到很多无法完全按照您想要的方式工作的行为。

于 2008-10-03T12:55:23.037 回答