请问,怎么创建弹出式菜单?具体一点啊,我是新手啊!

解决方案 »

  1.   

    在WM_CONTEXTMENU处理消息,具体过程如下:
    {
      CMenu* menu_bar = AfxGetMainWnd()->GetMenu();
      CMenu* file_menu = menu_bar->GetSubMenu(0); 
      ASSERT(file_menu);  file_menu->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, point.x, 
        point.y, this);
    }
    当然在右键响应消息处理也行
      

  2.   

    定义如下的宏(千万不能和其他的菜单ID重复)
    #define ID_MENU_1 10000
    #define ID_MENU_2 10001在OnRButtonDown函数中使用如下代码:CMenu menu;
    if (menu.CreatePopupMenu())
    {
    menu.AppendMenu(MF_STRING, ID_MENU_1, _T("菜单1"));
    menu.AppendMenu(MF_STRING, ID_MENU_2, _T("菜单2")); menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, point.x, point.y, this);
    menu.DestroyMenu();
    }在.h文件中定义如下函数
    afx_msg void OnMenu1();
    afx_msg void OnMenu2();在.cpp文件的END_MESSAGE_MAP()之前加上如下语句
    ON_COMMAND(ID_MENU_1, OnMenu1)
    ON_COMMAND(ID_MENU_2, OnMenu2)然后实现这两个函数就可以了,如果你的菜单条目太多的话,你可以使用
    ON_COMMAND_RANGE如:
    #define ID_MENU_BEGIN 10000
    #define ID_MENU_END 10001函数定义要改为
    afx_msg void OnMenu(UINT nID);ON_COMMAND_RANGE(ID_MENU_BEGIN, ID_MENU_END, OnMenu)
      

  3.   

    在对话框工程中;
    用右键弹出:
    映射ONRBUTTONDOWN;
    CMyDialog::OnRButtonDown(...,CPoint point)
    {
      LPPOINT m_point=new tagPOINT;
      CMenu menu;
      menu.CreatePopupMenu();
      menu.Append(MF_STRING,0,"JFKDJ");
      menu.Append(MF_STRING,0,"DFF");
      menu.TrackPopupMenu();
      menu.destroy();
    }
    自己试试吧  
      

  4.   

    啊,
    我要更正
    menu.TrackPopupMenu(TPM_LEFTALIGN,m_point->x,m_point->y,0,this,0);
      

  5.   

    WM_CONTEXTMENU消息事件
    void CTest1View::OnContextMenu(CWnd* pWnd, CPoint point) 
    {

    CMenu m_XpMenu;
    m_XpMenu.LoadMenu(IDR_MYMENU);
    CMenu *psub = (CMenu *)m_XpMenu.GetSubMenu(0);
    psub->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
    m_XpMenu.DestroyMenu();
    }