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

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

我们先新建立一个资源。

 

 

我们将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;
}

接下来看效果。

 

 

 

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

 

 

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

 

posted @ 2016-01-01 17:08  杀死比特  阅读(356)  评论(0)    收藏  举报