2011-04-29 129 views
1

如何在win32中实现自动隐藏功能?我在我的应用程序中有一个菜单,我可以用SetMenu(hwndDlg, NULL)隐藏,然后我可以使用SetMenu(hwndDlg, hMenu)重新启用它。但是,我想模仿很多现代应用程序(例如IE9)的行为,其中隐藏菜单直到您按Alt。然后,当主窗口变得聚焦时,菜单再次消失。有没有一个标准的API来做到这一点?或者我可以检查焦点和Alt键。Win32 - 自动隐藏菜单

经过对Spy ++的一些调查后,我能够显示用SC_KEYMENU处理WM_SYSCOMMAND的菜单,但仍然不确定要处理哪些消息以使菜单消失。

回答

1

所以你只是想知道当用户完成菜单,所以你可以再次隐藏它?

如果是这样,请尝试WM_EXITMENULOOP消息。

显然,应用程序为常规应用程序菜单,系统菜单和任何'TrackPopupMenu'菜单获取WM_ENTER/EXITMENULOOP,所以当常规菜单已被隐藏时(例如,如果用户访问和解散系统菜单)。