欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

VC6解决托盘菜单不消失

发布时间:2025/3/20 c/c++ 66 豆豆
生活随笔 收集整理的这篇文章主要介绍了 VC6解决托盘菜单不消失 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
CMenu menu; menu.LoadMenu(IDR_MNU_TRAY); // 2 CMenu* pMenu=menu.GetSubMenu(0); CPoint point; GetCursorPos(&point); SetForegroundWindow(); //解决托盘菜单不消失 pMenu->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this); PostMessage(WM_NULL,0,0); //解决托盘菜单不消失
SDK里写得很清楚地 

To   display   a   context   menu   for   a   notification   icon,   the   current   window   must   be   the   foreground   window   before   the   application   calls   TrackPopupMenu   or   TrackPopupMenuEx.   Otherwise,   the   menu   will   not   disappear   when   the   user   clicks   outside   of   the   menu   or   the   window   that   created   the   menu   (if   it   is   visible).   However,   when   the   current   window   is   the   foreground   window,   the   second   time   this   menu   is   displayed,   it   displays   and   then   immediately   disappears.   To   correct   this,   you   must   force   a   task   switch   to   the   application   that   called   TrackPopupMenu   at   some   time   in   the   near   future.   This   is   done   by   posting   a   benign   message   to   the   window   or   thread,   as   shown   in   the   following   code   sample:   

Hide   Example 

      SetForegroundWindow(hDlg); 

      //   Display   the   menu 
      TrackPopupMenu(       hSubMenu, 
                                          TPM_RIGHTBUTTON, 
                                          pt.x, 
                                          pt.y, 
                                          0, 
                                          hDlg, 
                                          NULL); 

      PostMessage(hDlg,   WM_NULL,   0,   0); 

总结

以上是生活随笔为你收集整理的VC6解决托盘菜单不消失的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。