学习远控界面设计五: 在列表中显示弹出菜单

 今天我将记录我学习的内容,那就是如何设计在列表中显示弹出菜单。

我们先新建立一个资源。

我们将ID设置为比较有意义的ID,这样比较好区分。

我们来学习GHOST的菜单,当GHOST在选择机器控制的时候,菜单资源才会可用,不然菜单资源就是灰色的。

当我们管理机器的时候,需要右键,然后跳出菜单来选择功能。所以我们需要添加一个事件。

加入RCLICK,当右键点击的时候响应事件。然后来写代码

void CGhostDlg::OnNMRClickListoline(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
    // TODO: Add your control notification handler code here
    CMenu    popup;
    popup.LoadMenu(IDR_MENU);
    CMenu*    pM = popup.GetSubMenu(0);
    CPoint    p;
    GetCursorPos(&p);
    int    count = pM->GetMenuItemCount();
    if (m_list_oline.GetSelectedCount() == 0)       //如果没有选中
    { 
        for (int i = 0; i < count; i++)
        {
            pM->EnableMenuItem(i, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);          //菜单全部变灰
        }

    }
    pM->TrackPopupMenu(TPM_LEFTALIGN, p.x, p.y, this);
    *pResult = 0;
}

接下来看效果。

接下来我们来完成菜单栏的功能函数。

我们依次添加响应事件即可。

原文地址:https://www.cnblogs.com/killbit/p/5093484.html