您的位置:首页 > 其它

单击右键弹出快捷菜单,并删除list control中的选中项

2015-12-24 21:01 225 查看

1.设置快捷菜单:为了首先我们需要在菜单项下插入一个菜单IDR_MENU1,并在此菜单下创建一个菜单项,此菜单项的名字可以随便取,比如:ab,然后在aa下面添加一个子菜单“删除”,将其ID号设置为ID_SC。(如果有需要的话还可以根据我们自己的需要添加其他的子菜单项,这里我们不再叙述,仅以“删除为例”)

1.1)在list control中添加快捷菜单:在list control中添加时要为list control添加事件处理程序,此时选中的消息类型为:NM_RCLICK,然后添加代码如下:

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;

1.2)在单文档应用程序中加快捷菜单:在菜单中的IDR_MENU1中创建菜单项aa,在aa下添加子项“删除”;然后在CMenuView类中添加WM_RBUTTONDOWN消息响应函数,具体代码如下:

void CdfjklsDlg::OnRButtonDown(UINT nFlags, CPoint point)

{

CMenu menu;

menu.LoadMenu(IDR_MENU1);

CMenu* pPopup=menu.GetSubMenu(0);

pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON ,point.x,point.y,GetParent());

CDialog::OnRButtonDown(nFlags, point);

}

2.对快捷菜单下的“删除”菜单添加事件处理程序(对于在list control中删除而言),具体是代码如下:

int i,iState;

int nItemSelected=m_list.GetSelectedCount();

int nItemCount=m_list.GetItemCount();

if(nItemSelected<1)

return;

for(i=nItemCount-1;i>=0;i--)

{

iState=m_list.GetItemState(i,LVIS_SELECTED);

if(iState!=0)

{

m_list.DeleteItem(i);

}

}

经过上面的1.1)以及2中的步骤就可以删除list control中选中的项。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: