子窗口(CEdit)失去焦点 我是用MFC文档/视图体系结构在C++中编程的。我一直在努力实现类似的目标。我按照答案处理了这条信息

子窗口(CEdit)失去焦点 我是用MFC文档/视图体系结构在C++中编程的。我一直在努力实现类似的目标。我按照答案处理了这条信息,c++,windows,mfc,cedit,C++,Windows,Mfc,Cedit,基本上,我是这样做的:我在视图中绘制了文本。当用户单击视图中的文本区域时,我会定位并在其顶部显示CEdit窗口,以便用户能够编辑文本。当编辑失去焦点时,我获取CEdit文本并将其保存在文档中。然后使视图无效 然而,我似乎只在视图失去焦点时才收到EN_KILLFOCUS消息。我必须单击其他位置,例如停靠窗口或工具栏,以使CEdit失去焦点。我希望在单击视图中其他任何位置(CEdit框之外)时发生这种情况 我正在创建带有WS_CHILD样式的CEdit。我尝试了WS_弹出窗口,但仍然存在相同的问题

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

然而,我似乎只在视图失去焦点时才收到EN_KILLFOCUS消息。我必须单击其他位置,例如停靠窗口或工具栏,以使CEdit失去焦点。我希望在单击视图中其他任何位置(CEdit框之外)时发生这种情况

我正在创建带有WS_CHILD样式的CEdit。我尝试了WS_弹出窗口,但仍然存在相同的问题


如有任何帮助,将不胜感激。

创建CEdit派生的类/控件。并在视图中创建该类的实例

在派生类中处理EN_KILLFOCUS。一旦用户在编辑控制窗口外单击,您将能够处理此消息。
将您的editbox保持为WS_儿童。


将焦点设置为在视图的鼠标按下时查看,在视图的LButtonDown上调用SerFocus()。。。我试过这个。但它似乎不起作用。不过,我只在整个视图失去焦点时才会收到消息。嗯……在视图的鼠标按下时,您是否将焦点设置为视图的焦点?如果没有,请在视图的LButtonDown上调用SerFocus()。谢谢!这就成功了。然而,我发现对CEdit子类化已经没有意义了。我可以在命令上处理家长窗口中的EN_KILLFOCUS,您可以更改您的答案以反映这一点吗?我会给你一个接受的回答和投票。