我在vc里要做一个右键的菜单,相当于是主菜单的快捷方式,所以我想就利用主菜单里的处理方式(即把他们关联起来)我做了一个右键的菜单,并且把ID和主菜单里的设成一样的,在右键的时候弹出来可是他并不能响应相应的事件,请问应当如何生成一个这样的菜单呢?

解决方案 »

  1.   

    如果你在资源里面定义了popup menu用
    CMenu menu;
    menu.LoadMenu(IDR_MENU);
    //取得显示菜单的点point
    menu.TrackPopupMenu( 0, Point.x, Point.y );
    如果你没有在资源中定义
    CMenu menu;
    menu.CreatePopupMenu();
    menu.AppendMenu( MF_STRING, ID_1, _T("1") );
    menu.AppendMenu( MF_SEPARATOR);
    menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this );
    更详细的自己看MSDN八
      

  2.   

    http://www.vccode.com/file_list.php?type=14
      

  3.   

    关键是TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL );
    的参数pWnd,你的消息响应函数在哪个窗口中,这个参数就要设为该窗口的指针,
    比如,你的消息响应函数在主窗口中,而右击菜单是在视图中弹出的,则该参数为:
    AfxGetMainWnd()
      

  4.   

    再比如你在一个视图中弹出菜单,而菜单响应函数在另一个视图中,则要这么写:
    pmenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, pOtherView );
      

  5.   

    robinzo(兔子) 我一开始就是这样做的,还是common_man(谢安王导)厉害,一句话就命中了我已经做成功了,谢谢大家了