我使用MFC Document / View架构在C ++中编程。我一直在努力实现与MFC CEdit lose focus handler类似的东西。正如答案所示,我处理了EN_KILLFOCUS消息。
基本上,我这样做:我在视图中绘制了文字。当用户单击视图中文本的区域时,我会在其上方放置并显示CEdit窗口,以便用户可以编辑文本。当编辑失去焦点时,我获得CEdit文本并将其保存在文档中。然后使视图无效。
但是,当视图失去焦点时,我似乎只收到EN_KILLFOCUS消息。我必须点击其他地方,例如停靠窗口或工具栏,以使CEdit失去焦点。当我在CEdit框之外点击视图上的任何其他位置时,我希望它发生。
我正在使用WS_CHILD样式创建CEdit。我尝试过WS_POPUP,但问题仍然存在。
任何帮助都将不胜感激。
答案 0 :(得分:1)
创建一个CEdit派生类/控件。并在您的视图中创建此类的实例
处理派生类中的EN_KILLFOCUS。一旦用户在编辑控制窗口外单击,您将能够处理此消息。
将您的编辑框保持为WS_CHILD。
将焦点设置为在视图的鼠标按下时查看,在视图的LButtonDown上调用SerFocus()。