listcontrol 使用MENU菜单 复制列表控件某行某列到剪贴板
2014-12-25 13:56
399 查看
void CClientDlg::OnNMRClickListBox(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码;
*pResult = 0;
Invalidate();
CString copytext ;
//获得对话框内列表控件句柄;
HWND ListhWnd = ::GetDlgItem (m_hWnd,IDC_LIST_Box);
LPNMITEMACTIVATE temp = (LPNMITEMACTIVATE) pNMHDR;
//获取选中行号
int nItem = temp->iItem;
//获取选中列号
int nSubItem = temp->iSubItem;
if(nSubItem == 0 || nSubItem == -1 || nItem == -1)
{
return ;
}
//Retrieve the text of the selected subItem
//from the list
//得到内容放入
copytext = m_list_box.GetItemText(nItem ,nSubItem);
//弹出MENU菜单选项;
CPoint point;
::GetCursorPos(&point);
CMenu menu;
menu.LoadMenu(ID_MENU_LIST); //读取资源,IDR_MENU为弹出的菜单ID;
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON, point.x,point.y,this);
}
//菜单下选项:”复制“ 的映射处理
void CClientDlg::OnCopy()
{
// TODO: 在此添加命令处理程序代码;
HGLOBAL hClip;
//定义一个HGLOBAL句柄变量用来指向分配的内存块;
if (OpenClipboard())
{
EmptyClipboard(); //将剪贴板内容清空;
hClip=GlobalAlloc(GMEM_MOVEABLE,copytext.GetLength()+1);
//定义指向字符型的指针变量;
char * buff;
//对分配的内存块进行加锁,将内存块句柄转化成一个指针,并将相应的引用计数器加1;
buff=(char*)GlobalLock(hClip);
//将用户输入的数据复制到指针变量中,实际上就是复制到分配的内存块中;
strcpy(buff,copytext);
//数据写入完毕,进行解锁操作,并将引用计数器数字减1;
GlobalUnlock(hClip);
//将存放有数据的内存块放入剪贴板的资源管理中;
SetClipboardData(CF_TEXT,hClip);
//关闭剪贴板,释放剪贴板资源的占用权;
CloseClipboard();
/* MessageBox(_T("已将数据存入剪贴板"));*/
}
}
{
// TODO: 在此添加控件通知处理程序代码;
*pResult = 0;
Invalidate();
CString copytext ;
//获得对话框内列表控件句柄;
HWND ListhWnd = ::GetDlgItem (m_hWnd,IDC_LIST_Box);
LPNMITEMACTIVATE temp = (LPNMITEMACTIVATE) pNMHDR;
//获取选中行号
int nItem = temp->iItem;
//获取选中列号
int nSubItem = temp->iSubItem;
if(nSubItem == 0 || nSubItem == -1 || nItem == -1)
{
return ;
}
//Retrieve the text of the selected subItem
//from the list
//得到内容放入
copytext = m_list_box.GetItemText(nItem ,nSubItem);
//弹出MENU菜单选项;
CPoint point;
::GetCursorPos(&point);
CMenu menu;
menu.LoadMenu(ID_MENU_LIST); //读取资源,IDR_MENU为弹出的菜单ID;
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON, point.x,point.y,this);
}
//菜单下选项:”复制“ 的映射处理
void CClientDlg::OnCopy()
{
// TODO: 在此添加命令处理程序代码;
HGLOBAL hClip;
//定义一个HGLOBAL句柄变量用来指向分配的内存块;
if (OpenClipboard())
{
EmptyClipboard(); //将剪贴板内容清空;
hClip=GlobalAlloc(GMEM_MOVEABLE,copytext.GetLength()+1);
//定义指向字符型的指针变量;
char * buff;
//对分配的内存块进行加锁,将内存块句柄转化成一个指针,并将相应的引用计数器加1;
buff=(char*)GlobalLock(hClip);
//将用户输入的数据复制到指针变量中,实际上就是复制到分配的内存块中;
strcpy(buff,copytext);
//数据写入完毕,进行解锁操作,并将引用计数器数字减1;
GlobalUnlock(hClip);
//将存放有数据的内存块放入剪贴板的资源管理中;
SetClipboardData(CF_TEXT,hClip);
//关闭剪贴板,释放剪贴板资源的占用权;
CloseClipboard();
/* MessageBox(_T("已将数据存入剪贴板"));*/
}
}
相关文章推荐
- 【Android 开发】:UI控件之 Menu 菜单的的使用(一)
- c#+Winform实现自定义的“复制、粘贴”右键快捷菜单,多个控件共享使用一个右键菜单
- 【Android 开发】:UI控件之 Menu 菜单的的使用(二)
- Android 菜单(Menu)控件的使用
- HoverMenuExtender(滑出菜单) 控件的使用
- Android4.0 -- UI控件之 Menu 菜单的的使用(一)
- Android4.0 -- UI控件之 Menu 菜单的的使用(四)
- Android 菜单(Menu)控件的使用
- emWin 2天速成实例教程010_Menu标题菜单控件使用方法
- AjaxControlToolkit 微软出的ajax.net 工具使用教程十二 HoverMenuExtender(滑出菜单) 控件的使用
- c#+Winform实现自定义的“复制、粘贴”右键快捷菜单,多个控件共享使用一个右键菜单。
- Android4.0 -- UI控件之 Menu 菜单的的使用(三)
- Android4.0 -- UI控件之 Menu 菜单的的使用(二)
- 【Android 开发】:UI控件之 Menu 菜单的的使用(三)
- SolpartMenu的使用:(一)、在ASP.NET页面中使用SolpartMenu控件之使用XML文件生成菜单
- 树控件中使用虚拟列表
- 使用struts-menu_详细实现动态菜单
- [控件使用]GridView列表模式转到编辑模式
- 为了使用服务器端控件,这样做二级菜单。
- 使用列表控件