c++mfc中的listbox中把选中的多行可以实现复制和黏贴,怎么实现,求大神指导

选中很多行,对其可以进行复制,并且可以黏贴,可以用Ctrl+c和Ctrl+v;或者选中后点击右键弹出菜单选择复制或者黏贴,希望有具体代码,谢谢大家了... 选中很多行,对其可以进行复制,并且可以黏贴,可以用Ctrl+c和Ctrl+v;或者选中后点击右键弹出菜单选择复制或者黏贴,希望有具体代码,谢谢大家了 展开
 我来答
百度网友c1f6f0d
推荐于2016-09-26
知道答主
回答量:24
采纳率:0%
帮助的人:9.3万
展开全部
void 对象::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if(nChar==VK_CONTROL) enableCtrl=TRUE; //启用CTRL键
if(flags.CulSel!=NULL&&flags.enableCtrl&&nChar==67){//C键值为67,复制
//遍历listbox找出选中行进行数据复制
}
if(flags.enableCtrl&&nChar==86&&flags.copyJht!=NULL){//V键值为67,粘贴
//对复制的数据处理
}

}

void 对象::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if(nChar==VK_CONTROL) enableCtrl=FALSE; //关闭CTRL键
}

//enableCtrl CTRL键是否按下的标识
//MFC可能会截断按键消息,这就需要重载一个函数
BOOL 对象::PreTranslateMessage(MSG* pMsg){
if(pMsg->message==WM_KEYDOWN ) SendMessage(WM_KEYDOWN ,pMsg->wParam,pMsg->lParam);
if(pMsg->message==WM_KEYUP ) SendMessage(WM_KEYUP ,pMsg->wParam,pMsg->lParam);
return CDialog::PreTranslateMessage(pMsg);
}
更多追问追答
追问
这个还要加什么库吗,我复制过来的enableCtrl还有culsel不识别
追答
BOOL 对象::PreTranslateMessage(MSG* pMsg){//重载函数发送keydown和keyup消息
if(pMsg->message==WM_KEYDOWN ) SendMessage(WM_KEYDOWN ,pMsg->wParam,pMsg->lParam);
if(pMsg->message==WM_KEYUP ) SendMessage(WM_KEYUP ,pMsg->wParam,pMsg->lParam);
return CDialog::PreTranslateMessage(pMsg);
}

void 对象::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if(nChar==VK_CONTROL) enableCtrl=TRUE;
if(enableCtrl&&nChar==67){//C键值为67
//检测listbox控件的选中行,复制数据到自己定义的剪切板
}
if(enableCtrl&&nChar==86){//V键值为67
//检测剪切板是否为空
//数据的复制处理
}
}

void 对象::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags){
if(nChar==VK_CONTROL) enableCtrl=FALSE;
}
//enableCtrl这个变量就定义在你的类里面,就是那个.h的文件里
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式