CListCtrl 之右键菜单

在使用CListCtrl时要为它添加一个右键菜单,步骤如下:

1. 响应CListCtrl的NM_RCLICK消息。

2. 添加一个菜单资源,在菜单资源中插入要添加到菜单内容。

 

  CListCtrl添加右键菜单 - ♂『風』De 影子 - 風~~吹过~~~~

一般存在两种方法:

一、

void CListCtrlDlg::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult)

{

CPoint point;

::GetCursorPos(&point);

CMenu menu;

VERIFY(menu.LoadMenu(IDR_MENU1));      //IDR_MENU_POPUP是新建菜单ID

CMenu* popup=menu.GetSubMenu(0);

ASSERT(popup!=NULL );

popup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x, point.y, this );

*pResult = 0;

}

//***这时在listctrl的任何位置右键都会出现右键菜单

二、

 void CTest6Dlg::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult)
      {
           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_MENU1 ) );
                CMenu* popup = menu.GetSubMenu(0);
                ASSERT( popup != NULL );
                popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this );
           }
           *pResult = 0;
  }

 

//***这时只有listctrl存在选中项目的时候才会出现右键菜单

你可能感兴趣的:(list)