编程弹出一菜单,可以如果不想点其中任何一项,它就不会关闭,一直在那,除非去点它,如何点一下其它空白地方,让它关闭。

解决方案 »

  1.   

    不就是弹出菜单么?
    CMenu menu;
    CMenu* pmenu;
    menu.LoadMenu(IDB_MENU1);
    pmenu=menu.GetSubmenu(0);
    pmenu->TrackMenu(..);
    pmenu->DestroyMenu();
      

  2.   


    1,CMenu menu;
    CMenu* pmenu;
    menu.LoadMenu(IDR_MENU1);
    pmenu=menu.GetSubMenu(0);
    pmenu->TrackPopupMenu(TPM_LEFTBUTTON|TPM_CENTERALIGN,0,0,this);
    //0,0指屏幕的左上角,
    //GetClientRect(&r);将此控件的边界放在r内
    //ClientToScreen()客户区坐标换成屏幕坐标2
    CMenu popupMenu;
    popupMenu.CreatePopupMenu();
    popupMenu.AppendMenu(MF_STRING,ID_1,"CAPTION");
    popupMenu.TrackPopupMenu(TPM_LEFTBUTTON|TPM_CENTERALIGN,0,0,this);
    //0,0指屏幕的左上角,
    //GetClientRect(&r);将此控件的边界放在r内
    //ClientToScreen()客户区坐标换成屏幕坐标
    //ID_1可能未定义,你可增加Accelerator,为ID_1加一个。。
      

  3.   

    你要注意了:
    你的菜单命令消息处理的是哪个CWnd*;
    和鼠标有没有被其他的CWnd捕捉了。
      

  4.   

    EndMenu
    The EndMenu function ends the calling thread's active menu.Res
    If a platform does not support EndMenu, send the owner of the active menu a WM_CANCELMODE message.