none
请教“关于CreatePopupMenu如何自动销毁”的问题 RRS feed

  • 问题

  • 目前我做了一个Dialog形式的应用程序,并在系统任务栏上创建了一个图标,

    在用户点击人物栏图标的鼠标右键时以CreatePopupMenu创建一个菜单。

     

    这时如果菜单弹出后用户点击了非本应用程序区域,菜单不会自动消失,请问要怎样实现才能让该菜单可以自动消失?

     

    实现的代码如下:

    LRESULT CPCSuiteDlg:SurprisenTrayNotify(WPARAM Param,LPARAM lParam)
    {
     if(Param != IDR_MAINFRAME)
     {
      return 0;
     }

     

     switch(lParam)
     {
      case WM_RBUTTONUP://鼠标右键,弹出菜单
      {
       POINT Cursor;
       
       ::GetCursorPos(&Cursor);//得到鼠标位置

       CMenu ExtendMenu;

       ExtendMenu.CreatePopupMenu();

      

       //添加菜单项,代码在此省略了.....

     

       ExtendMenu.TrackPopupMenu(TPM_VERTICAL,Cursor.x,Cursor.y,this,NULL);
      }
      break;

     

      default:
      break;
     }

     return 1;
    }

     

    而如果我不是通过在任务栏的鼠标右键事件产生的回调中创建菜单,则当菜单弹出后点击了非应用程序区域后菜单是可以自动消息的,请大侠帮忙看看啊,谢谢!

    2008年11月19日 9:13

答案

全部回复