1

我正在使用 MFC 文档/视图架构在 C++ 中编程。我一直在尝试实现类似于MFC CEdit lost focus handler的东西。正如答案所示,我处理了消息 EN_KILLFOCUS 。

基本上,我正在这样做:我在视图中绘制了文本。当用户单击视图中的文本区域时,我将 CEdit 窗口定位并显示在其顶部,以便用户能够编辑文本。当编辑失去焦点时,我得到 CEdit 文本并将其保存在文档中。然后使视图无效。

但是,当视图失去焦点时,我似乎只收到 EN_KILLFOCUS 消息。我必须单击其他地方,例如停靠窗口或工具栏,以使 CEdit 失去焦点。我希望它在我单击视图上的其他任何位置时发生,在 CEdit 框之外。

我正在使用 WS_CHILD 样式创建 CEdit。我尝试了 WS_POPUP 但仍然是同样的问题。

任何帮助,将不胜感激。

4

1 回答 1

1

创建一个 CEdit 派生类/控件。并在派生类中创建这个类的实例

处理EN_KILLFOCUS。一旦用户在编辑控制窗口外单击,您将能够处理此消息。
将您的编辑框保留为 WS_CHILD。

在视图的鼠标按下时将焦点设置为视图,在视图的 LButtonDown 上调用 SerFocus()。

于 2014-02-18T08:35:46.573 回答