【问题标题】:What is the most correct way to hide an autocomplete popup?隐藏自动完成弹出窗口的最正确方法是什么?
【发布时间】:2009-05-13 09:57:07
【问题描述】:

我正在纯 WinApi 中开发自定义自动完成控件,我遇到的问题是我不知道如何在控件外部单击时隐藏弹出窗口(例如模拟组合框下拉行为) .它通常是如何实现的?我应该使用鼠标捕获吗?谢谢。

UPD:跟踪键盘焦点不符合要求,因为拖动父窗口也应该隐藏下拉菜单。

UPD:鼠标捕获不起作用,因为它“在鼠标悬停在捕获窗口上时捕获鼠标输入,或者在鼠标悬停在捕获窗口上且按钮仍然按下时按下鼠标按钮”。

【问题讨论】:

  • 我刚刚意识到我的答案是不正确的,因为弹出窗口首先不需要焦点。
  • 没错,焦点停留在编辑控件中。

标签: c++ winapi autocomplete


【解决方案1】:

在阅读this article 之后,我现在相信使用 SetWindowsHookEx 和 WH_MOUSE 挂钩是可行的方法。

但也许有更简单的解决方案?

【讨论】:

    【解决方案2】:

    自动完成功能是 Win32 api (Shell) 中的本机
    您不需要代码。
    (Windows Shell Autocomplete的源代码见Win32 group

    【讨论】:

    • 它不能自动完成单独的单词
    猜你喜欢
    • 2017-07-15
    • 2021-11-21
    • 2011-12-03
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 2012-09-21
    相关资源
    最近更新 更多