你的右键菜单项ID使用与向导生成的菜单一样的ID

解决方案 »

  1.   

    1楼正解,MFC框架菜单的打开和关闭功能有系统默认ID的,把自己添加的菜单项改成系统默认ID,消息映射便会根据ID执行对应的函数。
      

  2.   

    那为什么有些不行呢
    不知道具体哪些不行,要注意菜单功能是要放在CMainFrame、CDoc还是CView下响应
      

  3.   

    添加WM_CONTEXTMENU消息,TrackPopupMenu弹出你的右键菜单。
    至于菜单项的响应,添加WM_COMMAND消息响应,ON_COMMAND()宏
      

  4.   

    那为什么有些不行呢
    不知道具体哪些不行,要注意菜单功能是要放在CMainFrame、CDoc还是CView下响应
    我添加右键菜单,把个菜单项ID改成和上面那个mfc向导创建的菜单一样的,然后显示,根本没有自己对消息进行响应
    打印预览行,退出,打开这些就不行了
      

  5.   

    我是想利用mfc向导生成的响应函数来响应
      

  6.   

    那为什么有些不行呢
    不知道具体哪些不行,要注意菜单功能是要放在CMainFrame、CDoc还是CView下响应
    我添加右键菜单,把个菜单项ID改成和上面那个mfc向导创建的菜单一样的,然后显示,根本没有自己对消息进行响应
    打印预览行,退出,打开这些就不行了
    我知道什么问题了,因为你自己添加的菜单是在CView下弹出的,而CView里面有这些消息映射而没有ID_FILE_NEW / ID_FILE_OPEN / ID_APP_EXIT的消息映射,所有就没有响应了,因为这几个消息映射在CApp里面如果你想在CView里面响应这几个消息的话,由于这几个函数是受保护的,就需要在CApp里面重写CApp::OnFileNew、CApp::OnFileOpen和CApp::OnAppExit然后在CView里面写好菜单相应ID的映射,调用theApp的OnFileNew、OnFileOpen和OnAppExit就行了
      

  7.   

    这是例子,你可以看看
    http://download.csdn.net/detail/bason09/7796207
      

  8.   


    如果你想在CView里面响应这几个消息的话,由于这几个函数是受保护的,就需要在CApp里面重写CApp::OnFileNew、CApp::OnFileOpen和CApp::OnAppExit在CWinApp里面为什么这三个函数是受保护的?
      

  9.   

    那为什么有些不行呢
    不知道具体哪些不行,要注意菜单功能是要放在CMainFrame、CDoc还是CView下响应
    我添加右键菜单,把个菜单项ID改成和上面那个mfc向导创建的菜单一样的,然后显示,根本没有自己对消息进行响应
    打印预览行,退出,打开这些就不行了
    我知道什么问题了,因为你自己添加的菜单是在CView下弹出的,而CView里面有这些消息映射而没有ID_FILE_NEW / ID_FILE_OPEN / ID_APP_EXIT的消息映射,所有就没有响应了,因为这几个消息映射在CApp里面如果你想在CView里面响应这几个消息的话,由于这几个函数是受保护的,就需要在CApp里面重写CApp::OnFileNew、CApp::OnFileOpen和CApp::OnAppExit然后在CView里面写好菜单相应ID的映射,调用theApp的OnFileNew、OnFileOpen和OnAppExit就行了
    按你的方法,打开与退出实现了,但是偏偏新建不行
      

  10.   

    那为什么有些不行呢
    不知道具体哪些不行,要注意菜单功能是要放在CMainFrame、CDoc还是CView下响应
    我添加右键菜单,把个菜单项ID改成和上面那个mfc向导创建的菜单一样的,然后显示,根本没有自己对消息进行响应
    打印预览行,退出,打开这些就不行了
    我知道什么问题了,因为你自己添加的菜单是在CView下弹出的,而CView里面有这些消息映射而没有ID_FILE_NEW / ID_FILE_OPEN / ID_APP_EXIT的消息映射,所有就没有响应了,因为这几个消息映射在CApp里面如果你想在CView里面响应这几个消息的话,由于这几个函数是受保护的,就需要在CApp里面重写CApp::OnFileNew、CApp::OnFileOpen和CApp::OnAppExit然后在CView里面写好菜单相应ID的映射,调用theApp的OnFileNew、OnFileOpen和OnAppExit就行了
    按你的方法,打开与退出实现了,但是偏偏新建不行
    可以的,你Debug下断点会执行OnFileNew函数的,你按照这个方法建个多文档的应用程序就可以,自己摸索下吧
      

  11.   

    那为什么有些不行呢
    不知道具体哪些不行,要注意菜单功能是要放在CMainFrame、CDoc还是CView下响应
    我添加右键菜单,把个菜单项ID改成和上面那个mfc向导创建的菜单一样的,然后显示,根本没有自己对消息进行响应
    打印预览行,退出,打开这些就不行了
    我知道什么问题了,因为你自己添加的菜单是在CView下弹出的,而CView里面有这些消息映射而没有ID_FILE_NEW / ID_FILE_OPEN / ID_APP_EXIT的消息映射,所有就没有响应了,因为这几个消息映射在CApp里面如果你想在CView里面响应这几个消息的话,由于这几个函数是受保护的,就需要在CApp里面重写CApp::OnFileNew、CApp::OnFileOpen和CApp::OnAppExit然后在CView里面写好菜单相应ID的映射,调用theApp的OnFileNew、OnFileOpen和OnAppExit就行了
    按你的方法,打开与退出实现了,但是偏偏新建不行
    可以的,你Debug下断点会执行OnFileNew函数的,你按照这个方法建个多文档的应用程序就可以,自己摸索下吧不好意思现在才回复,我调试运行了,在单文档下设OnFileNew断点没有运行,而且在菜单栏里面的文件,新建也没有运行,
    应该是你的方法屏蔽了原有的响应