在Doc/View 结构的程序中,如果一个菜单没有添加呼应函数菜单就是灰的,如果有了响应函数菜单就变成可用的了,请问MFC实现此控制的原理是什么?

解决方案 »

  1.   

    在下拉菜单显示的时候, WM_INITMENUPOPUP消息被先发送以显示菜单项。MFC CFrameWnd::OnInitMenuPopup 函数遍历菜单项并为每个菜单项调用更新命令处理函数(如果有的话).菜单的外观被更新以反映它的状态(启用/禁用,选择/取消选择) 
      

  2.   

    你注意看看那些.cpp文件里面是不是都有一些类似的东西(这些是从我的一个程序上拷的)
    BEGIN_MESSAGE_MAP(CHellApp, CWinApp)
    //{{AFX_MSG_MAP(CHellApp)
    ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
    ON_COMMAND(ID_MENU_TOOL_RESTART, OnMenuToolRestart)
    //}}AFX_MSG_MAP
    // Standard file based document commands
    ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
    ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
    END_MESSAGE_MAP()
    MFC就是靠这个来实现window的消息影射的,这是一些预定义的宏,如果没有为相应的ID响应函数,就会显灰色