单击右键弹出快捷菜单,并删除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中选中的项。
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中选中的项。
相关文章推荐
- Objective-C 集合之NSDictionary的常用方法
- 【Socket】详述socket编程之select()和poll()函数
- 经典SQL语句大全
- 屌丝程序猿赚钱之道之taobao 2
- HTML--CSS样式表--格式与布局
- android中如何发送一个广播
- iframe中取得父页面的元素,父页面取得子页面的元素
- 字典dictionary
- Objective - C tableView自适应高度 & KVC (Key -Value-Coding)
- Hdu 2034 之解题报告
- sql事务和存储过程
- Android Studio——FileOutputStream,OutputStreamWriter, BufferedWriter为什么连用?
- android中图片的三级cache策略(内存、文件、网络)之二:内存缓存策略
- theano学习笔记
- java设计模式(四)--代理模式
- Android逆向工程-破解-哈皮妹-萝莉
- asp.net使用unescape读取js escape编码过的字符串
- ASP.Net MVC的学习
- android startActivityForResult和setResult用法解析
- Android开发中,activity生命周期说明