我正在使用MFC文档/ View 体系结构以C++编程。我一直在尝试实现类似于MFC CEdit lose focus handler的功能。根据答案,我处理了EN_KILLFOCUS消息。

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

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

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

任何帮助,将不胜感激。

最佳答案

创建一个CEdit派生的类/控件。并在您的 View 中创建此类的实例
在派生类中处理EN_KILLFOCUS。一旦用户在编辑控制窗口之外单击,您将能够处理此消息。

保持您的编辑框为WS_CHILD。

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

关于c++ - 子窗口(CEdit)失去焦点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21846993/

10-11 22:58