【问题标题】:Reuse Edit Control as Command Window重用编辑控件作为命令窗口
【发布时间】:2008-10-03 12:19:55
【问题描述】:

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

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

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

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

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

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

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

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

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

【问题讨论】:

  • 色情明星?为什么要冒着冒犯性旗帜的风险?
  • 只是想让事情活跃起来。没有冒犯的意思。

标签: windows winapi visual-c++ mfc


【解决方案1】:

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

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

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

【讨论】:

  • :) 我不想被禁止。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    相关资源
    最近更新 更多