VC列表控件和picture控件右击弹出菜单栏

1.列表控件

在列表控件所在类的Class Wizard里添加NM_RCLICK消息响应函数

void CPara2::OnRclickAtslist(NMHDR* pNMHDR, LRESULT* pResult)
{
    POSITION pos = m_atslist.GetFirstSelectedItemPosition(); //m_atslist列表控件名
 if(pos == NULL)
 {
  return;
 }
 int nId;
 nId = (int)m_atslist.GetNextSelectedItem(pos);
 CString str = m_atslist.GetItemText(nId , 1);
 CMenu pMenu;
 CPoint pt(0,0);
 GetCursorPos(&pt);

 if(!pMenu.LoadMenu(IDR_MENU_HJ))//菜单栏ID
  return;
  
 pMenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN,pt.x ,pt.y,this); 
 *pResult = 0;
}


2.picture控件,也适用于其他控件

在控件所在类的Class Wizard里添加WM_CONTEXMENU消息响应函数

void CPara1::OnContextMenu(CWnd* /*pWnd*/, CPoint point)

{

    CRect rect;//定义矩形区域

    GetDlgItem(IDC_STATIC)->GetWindowRect(&rect);//获取控件区域的矩形 picture控件ID

    if(rect.PtInRect(point))

    {

       CMenu   menu;  

       VERIFY(menu.LoadMenu(IDR_MENU_HJ));   //菜单栏ID

       CMenu*   pPopup=menu.GetSubMenu(0);  

       ASSERT(pPopup!=NULL);  

       pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,point.x,point.y,this); //在鼠标当前位置显示指定菜单

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值