我使用MFC文档/视图架构在C++中编程。我一直在尝试实现类似于MFC CEdit lose focus handler的东西。我按照答案的建议处理了消息EN_KILLFOCUS。
基本上,我是这样做的:我在视图中绘制了文本。当用户单击视图中的文本区域时,我将CEdit窗口定位并显示在它的顶部,以便用户能够编辑文本。当编辑失去焦点时,我获取CEdit文本并将其保存在文档中。然后使视图无效。
但是,我似乎只在视图失去焦点时才会收到EN_KILLFOCUS消息。我必须单击其他地方,例如停靠窗口或工具栏,才能使CEdit失去焦点。我希望当我在视图上的其他位置单击CEdit框之外的任何位置时,它就会发生。
我正在创建具有WS_CHILD样式的CEdit。我尝试了WS_POPUP,但仍然存在同样的问题。
任何帮助都将不胜感激。
发布于 2014-02-18 16:35:47
创建CEdit派生类/控件。并在视图中创建此类的实例
处理派生类中的EN_KILLFOCUS。一旦用户在编辑控件窗口之外单击,您将能够处理此消息。
保持您的编辑框为WS_CHILD。
在视图的鼠标按下时将焦点设置为视图,在视图的LButtonDown上调用SerFocus()。
https://stackoverflow.com/questions/21846993
复制相似问题