上一贴:
http://community.csdn.net/Expert/TopicView1.asp?id=3249014

谢谢 DentistryDoctor(牙科医生)
您的方法非常好。。现在我又遇到了另外一个问题。
我有一些功能按钮的ID是和一些菜单项相同的,
我想在屏蔽这些菜单的时候也让这些按钮不可用,但是,我通过资源ID无法找到这个按钮,请问我该如何来解决?

解决方案 »

  1.   

    在OnCmdMsg里面处理好了,判断传入的ID
    BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) 
    {
    if(nID >= ID_PLUGINMENU && nID < ID_PLUGINMENU+m_PlugInNum)
    {
    INT nIndex = nID - ID_PLUGINMENU;
    PPLUGININFO pPlug =((PPLUGININFO)m_pPlugInManager->m_PlugInList.GetAt(nIndex)); if(nCode == CN_UPDATE_COMMAND_UI)
    {
    INT ii = m_pPlugInManager->GetModule(); // Update UI element state

    ((CCmdUI *) pExtra)->Enable(TRUE);

    if (pPlug->bSelect)
    {
    if (m_pPlugInManager->GetModule() == nIndex)
    {
    ((CCmdUI *) pExtra)->SetCheck(TRUE);
    }
    else
    {
    ((CCmdUI *) pExtra)->SetCheck(FALSE);
    }
    }

    return TRUE;
    }

      

  2.   

    HWND hWnd=GetSafeHwnd();
    hWnd = GetTopWindow( hWnd );
             while ( hWnd )
             {
                UINT nID=CWnd::FromHandle(hWnd)->GetDlgCtrlID();
                ...
                hWnd = GetNextWindow( hWnd, GW_HWNDNEXT );
             }
      

  3.   

    为何CFrameWnd上的菜单使用刚才的方法屏蔽不了?
    我是直接GetMenu()方法获取菜单的
    但是屏蔽不了。为何?
      

  4.   

    用AfxGetMainWnd()->GetMenu(),如果是MDI的架构,GetMenu得到childFrame的Menu