//右键单击--菜单
void CClientDlg::OnNMRclickServerList(NMHDR *pNMHDR, LRESULT *pResult)
{
m_iRcCurSel = m_LC_ServerList.GetSelectionMark();
if (m_iRcCurSel == -1)
return; NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if(pNMListView->iItem != -1)
{
DWORD dwPos = GetMessagePos();
CPoint point( LOWORD(dwPos), HIWORD(dwPos) );

CMenu menu;
VERIFY( menu.LoadMenu(IDR_MENU_LIST) ); //IDR_MENU是新建菜单ID
CMenu* popup = menu.GetSubMenu(0);
ASSERT( popup != NULL );
popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this );
}  *pResult = 0;
}//菜单--开始
void CClientDlg::OnMenuStartClient()
{
//想让“开始”菜单项变灰不可用。如何实现?
}

解决方案 »

  1.   


    ID_MENUITEM_XXXX为OnMenuStartClient对应的项名menu.EnableMenuItem(ID_MENUITEM_XXXX, MF_GRAYED);
      

  2.   

    对话框菜单?如果是文档视图类 则用
    menu.EnableMenuItem(IDMENU_START,MF_BYCOMMAND|MF_GRAYED);
      
    对话框菜单的话 还得添加代码上面的代码才能生效
    具体代码
      

  3.   


    //右键单击--弹出菜单
    void CClientDlg::OnNMRclickServerList(NMHDR *pNMHDR, LRESULT *pResult)
    {
    m_iRcCurSel = m_LC_ServerList.GetSelectionMark();
    if (m_iRcCurSel == -1)
    return; NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    if(pNMListView->iItem != -1)
    {
    DWORD dwPos = GetMessagePos();
    CPoint point( LOWORD(dwPos), HIWORD(dwPos) );

    CMenu menu;
    VERIFY( menu.LoadMenu(IDR_MENU_LIST) ); //IDR_MENU是新建菜单ID
    CMenu* popup = menu.GetSubMenu(0);
    ASSERT( popup != NULL );
    popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this );
    menu.EnableMenuItem(ID_MENU_PAUSE, MF_GRAYED|MF_DISABLED); //菜单中的“暂停”选项并没有变灰.........
    }  *pResult = 0;
    }