【MFC】CListCtrl列表控件右键复制内容到粘贴板

您所在的位置:网站首页 利用鼠标右键拖动能实现文件复制吗 【MFC】CListCtrl列表控件右键复制内容到粘贴板

【MFC】CListCtrl列表控件右键复制内容到粘贴板

2024-07-13 07:38| 来源: 网络整理| 查看: 265

环境

VS版本:VS2010

字符集:多字符集

 

步骤

1、列表框初始化。

在OnInitDialog()函数中加入列表初始化代码。

m_lstAisMsg.SetExtendedStyle(m_lstAisMsg.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); k = 0; m_lstAisMsg.InsertColumn(k ++, _T("序号"), LVCFMT_LEFT, 50); m_lstAisMsg.InsertColumn(k ++, _T("时间"), LVCFMT_LEFT, 150); m_lstAisMsg.InsertColumn(k ++, _T("消息号"), LVCFMT_LEFT, 50); m_lstAisMsg.InsertColumn(k ++, _T("消息内容"), LVCFMT_LEFT, 500); m_lstAisMsg.InsertColumn(k ++, _T("告警内容"), LVCFMT_LEFT, 500);

 

2、添加Menu菜单资源。

 

3、在列表控件属性中,增加对NM_RCLICK消息处理。

 

 

4、在OnNMRClickListAisMsg()函数中添加下列代码。

void CMobStatus::OnNMRClickListAisMsg(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMIA; int nItem; int nSubItem; CMenu Menu; CMenu *pSubMenu; CPoint p; //LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); pNMIA = reinterpret_cast(pNMHDR); nItem = -1; nSubItem = -1; if (pNMIA) { nItem = pNMIA->iItem; nSubItem = pNMIA->iSubItem; } if (nItem == -1) { return; } //鼠标点的屏幕坐标 GetCursorPos(&p); Menu.LoadMenu(IDR_MENU_2); pSubMenu = Menu.GetSubMenu(0); pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, p.x, p.y, this); Menu.Detach(); Menu.DestroyMenu(); *pResult = 0; }

5、复制按钮代码如下。

void CMobStatus::OnCopyAisMsg() { CString strAisMsg; int nItem; TCHAR *pszData; HGLOBAL hClipboardData; nItem = m_lstAisMsg.GetSelectionMark(); if (nItem != -1) { strAisMsg = m_lstAisMsg.GetItemText(nItem, 3); } //复制剪切板 if (!strAisMsg.IsEmpty()) { if (OpenClipboard()) { EmptyClipboard(); hClipboardData = GlobalAlloc(GMEM_DDESHARE, (strAisMsg.GetLength() + 1) * sizeof(TCHAR)); if (hClipboardData) { pszData = (TCHAR *)GlobalLock(hClipboardData); _tcscpy(pszData, strAisMsg); GlobalUnlock(hClipboardData); SetClipboardData(CF_TEXT, hClipboardData); } CloseClipboard(); } } }

 

6、从列表复制,然后粘贴到记事本。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3