MFC 实现richedit右键菜单的复制粘贴功能

这篇博客介绍了如何在MFC应用中为RichEdit控件添加右键菜单并实现复制和粘贴功能。首先通过添加资源菜单、响应函数和消息映射来创建右键菜单,然后利用剪贴板功能实现复制和粘贴操作。通过跟踪不同编辑框的鼠标点击位置,动态启用或禁用菜单项,确保复制和粘贴功能的正确执行。博客还提供了详细的代码示例和参考链接。
摘要由CSDN通过智能技术生成

     需要用到Richedit的右键菜单复制,粘贴功能。百度谷歌了一下,发现网上的文章都是零零碎碎,借鉴意义不大。于是,发扬我们桂电勇于挑战困难,努力进取的精神,终于完成了右键添加菜单和复制粘贴等功能。

   大致分三个步骤:1.MFC添加右键菜单;2.添加菜单消息响应函数;3.菜单消息响应里使用剪切板实现复制,粘贴功能。


1.MFC添加右键菜单 

1.建立一个基于对话框的的MFC程序。

2.Insert->Resource->Menu。

3.可以给menu改一个id,也可以不改。

4.把菜单搞成这样的(搞成别的样的也可以)。

5.在对话框对应的类上点右键 -> Add ClassWizard( WindowsMessage Handler) -> WM_CONTEXTMENU->编辑之。

6.修改OnContextMenu函数


{CSDN:COED:27}

voidCRButtonMenuDlg::OnContextMenu(CWnd* pWnd, CPoint point)

{

       // TODO: Add your message handler codehere

       CMenu popMenu;

       popMenu.LoadMenu(IDR_RBTN_MENU);         //载入菜单

       CMenu *pPopup;

       pPopup=popMenu.GetSubMenu(0);     //获得子菜单指针

      

       pPopup->EnableMenuItem(ID_1,MF_BYCOMMAND|MF_ENABLED);  //允许菜单项使用

       pPopup->EnableMenuItem(ID_2,MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);       //不允许菜单项使用

 

       //ClientToScreen(&point);            //将客户区坐标转换成屏幕坐标

       pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);                //显示弹出菜单,参数依次为(鼠标在菜单左边|跟踪右键,x,y,this)

       pPopup->Detach();

       popMenu.DestroyMenu();

}


2.添加菜单消息响应函数

1.在资源窗口插入菜单,编辑菜单。(菜单名称后面加(&字母)就是快捷键)

2.在对话框右键>属性>常规     菜单选框中选择上面建立的菜单。

运行可以见到,对话框已建立起了菜单,下面开始添加响应事件

菜单每一项都有一个ID,可以在菜单窗口查看。1.在对话框的CPP文件里的响应事件列表中BEGIN_MESSAGE_MAP 加上:     ON_COMMAND(ID_1, OnC1)         // 第一个参数为菜单项ID,第二个参数为事件名称,这里命名为OnC1;

2.在对话框的类中(.h文件)添加成员函数声明:  afx_msg void OnC1();  

3.在对话框的CPP文件中加成员函数(菜单响应事件)的定义void CMyDlg::OnC1(){       MessageBox("Test ok");}

3. 菜单消息响应里 使用剪切板实现复制,粘贴功能。

下面的代码示范了如何将文本内容复制到剪贴板:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值