【发布时间】:2019-03-15 07:06:17
【问题描述】:
我有一个带有基于节点的 GUI 的 c++ Win32 应用程序,当用户在 GUI 中按下某个键时,我使用 CreateWindowEx 创建一个动态组合框。我希望用户能够在组合框 Rect 之外单击以使组合框消失。
为此,我目前正在销毁其 DlgProc 的 WM_KILLFOCUS 通知内的组合框(因此在它之外的任何点击都会破坏它)。但是,似乎只要其子窗口之一获得焦点,就会发送 WM_KILLFOCUS 通知。例如,如果我单击组合框的编辑文本区域,组合框本身会失去焦点,因为该子项获得焦点。鉴于我的设置,这会导致组合框在其矩形内单击时被删除。
如何防止这种行为?基本上,我希望能够检测组合框或其子窗口以外的任何东西何时获得焦点,而不是简单地检测组合框本身是否失去焦点。
【问题讨论】:
-
您应该在问题中添加图片。很难理解你真正想要什么。 “删除组合框”是什么意思?删除组合框的下拉部分或删除整个组合框控件?通常你不需要为组合框做任何特别的事情,它们只是“开箱即用”。
-
我编辑了这篇文章。删除是指通过调用 DestroyWindow 来销毁整个组合框 HWND。
-
我认为在这里使用 WM_KILLFOCUS 不是正确的方法。