导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

我想在clistview控件上用右键点击一个item

he8311 2009-08-11 06:49:26
我想在clistview控件上用右键点击一个item,然后弹出一个菜单项“保存内容”,点击该菜单项,则将右键点击到的item中的某一项subitem内容复制到剪贴板上,便于复制到其它文档中。
应该怎么做啊?
...全文
43 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bluesky395 2009-08-11
处理clistview控件的NM_RCLICK消息。。。

NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
可以使用pNMListView->iItem和pNMListView->iSubItem取得右键点击的item和subitem的索引。。。
回复
socoola 2009-08-11
用ClassWizard中的“Add Windows Message Handler”功能添加对NM_RCLICKT消息的响应函数:

void CListctrlTestDlg::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here


CListCtrl *CList =(CListCtrl *) GetDlgItem(IDC_LIST1); //获取当前列表控件的指针

CMenu menu ,* pSubMenu; //定义下面要用到的cmenu对象
menu.LoadMenu(IDR_POPMENU); //装载自定义的右键菜单
pSubMenu = menu.GetSubMenu(0);//获取第一个弹出菜单,所以第一个菜单必须有子菜单

CPoint oPoint;//定义一个用于确定光标位置的位置

GetCursorPos( &oPoint);//获取当前光标的位置,以便使得菜单可以跟随光标

int istat=CList->GetSelectionMark();//用istat存放当前选定的是第几项

CString pString =CList->GetItemText(istat,0);//获取当前项中的数据,0代表是第0列

// pString="您选择的项是:"+pString ;//显示当前选择项

// MessageBox(pString);//显示当前选中的路径

pSubMenu->TrackPopupMenu (TPM_LEFTALIGN, oPoint.x, oPoint.y, this); //在指定位置显示弹出菜单


*pResult = 0;
}
回复

BOOL CAdvListCtrl::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMIA = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
*pResult = 0;
return FALSE;
}
设施在NM_CLICK通知中的获得点击的项目。
你处理 NM_RCLICK 消息
回复
fishion 2009-08-11
用GetListCtrl得到CListCtrl,再用CListCtrl中的HitTest方法来判断位于哪个SubItem,再用GetItemText得到SubItem内容
回复
blingpro 2009-08-11
响应右击事件,在该方法内判断是哪个item,然后再弹出菜单就ok啦

gl
回复
ycoder 2009-08-11
点了弹出菜单后,设标记为TRUE;下次点击右键选中某项时,将该标记设为FALSE。
剪贴板:OpenClipboard,CloseClipboard,SetClipboardData。
回复
he8311 2009-08-11
如果点击弹出的菜单后,如何将item内容保存到剪贴板上?以便于将item内容拷贝到记事本上去。
回复
he8311 2009-08-11
按4楼socoola所说的,添加了对NM_RCLICKT消息的响应函数:
但如何知道是否点击过弹出的菜单?这样好做后续的处理
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……