如何使Cmenu弹出菜单消失
How to get CMenu popup menu to disappearing?
我在系统托盘中的应用程序中有一个弹出菜单。我遇到的问题是,我无法在不选择项目的情况下消失菜单。
当我在Windows中单击其他位置时,如何使弹出菜单消失?
这是显示弹出菜单的代码:
LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if( message == WM_MYMESSAGE && lParam == WM_RBUTTONDOWN)
{
m_menu.CreatePopupMenu();
POINT point;
GetCursorPos(&point);
m_menu.AppendMenu(MF_POPUP, WM_MAXIMIZE, _T("Maximize"));
m_menu.AppendMenu(MF_POPUP, WM_EXIT, _T("Exit"));
m_menu.TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x, point.y, this);
}
return CDialog::WindowProc(message, wParam, lParam);
}
我尝试使用CMenu::DestroyMenu
没有运气。
在调用TrackPopupMenu
之前,对我有用的解决方案正在调用SetForegroundWindow();
功能。
我在TrackPopupMenu
功能描述的评论中找到了解决方案。
添加tpm_returncmd标志。使用此标志,如果选择了菜单项或在外面单击的用户,TrackPopupMenu函数将返回。
CMenu menu;
CMenu *pSub = NULL;
// popup a menu to get the number of pages to display
VERIFY(menu.LoadMenu(IDR_MY_MENU));
pSub = menu.GetSubMenu(0);
int command = pSub->TrackPopupMenu(
TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RETURNCMD,
point.x,
point.y,
this);
这对我有用。
相关文章:
- 无法获取菜单选择以运行函数.C++
- 将地址分配给本地指针后,公共对象的变量将消失
- 应用投影矩阵后对象消失
- C++ 中的图形菜单
- C++ 程序菜单使用做同时和切换
- 添加自定义析构函数时,Move 构造函数在派生类中消失
- 我正在尝试创建一个菜单,但我的代码一直在循环
- 在 Linux 中使用 ioctl() 获取隐藏功能报告时,零字节消失
- 应用地址清理器后,免费无效指针消失
- 触发另一个窗口的菜单按钮
- 返回的指针属性中类实例上的矢量属性消失
- 从子菜单返回后,正确的输入至少进入验证循环一次
- C++ 我的开关格式中的循环不允许我显示菜单选项或接受输入?
- 如何为我的游戏设置主菜单场景?QT C++
- C++循环菜单时做
- 难以从 CImageList 设置菜单项位图
- 如何将我的程序添加到文件和文件夹的macOS右键单击菜单?
- 如何以编程方式显示功能区按钮的下拉菜单?
- 当我最大化子窗口时,系统菜单消失
- 如何使Cmenu弹出菜单消失