Richedit右键菜单

本文介绍了在富文本编辑器(Richedit)中实现右键菜单的方法。作者通过查阅MSDN,发现可以使用EM_SETOLECALLBACK消息和IRichEditOleCallback接口的GetContextMenu方法来实现。此功能允许根据选中内容的不同类型(如空、文字或对象)显示相应的右键菜单,简化了原本需要手动处理WM_RBUTTONDOWN消息的复杂过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前段时候需要用到Richedit的右键菜单功能.

先GOOGLE了下.都说MS没提供右键.基本上都自己响应WM_RBUTTONDOWN消息.

想了想.MS虽然有些让人不满意.但也不至于出现这么低级的错误吧?而且,响应右键时.无法判断选中的空.文字.或者是对象.需要自己再次获取.太不爽了,如果要判断鼠标右键拖放.则更为复杂

打开MSDN.逐个查看Richedit相关函数和消息.终于看到一个EM_SETOLECALLBACK.

相关参数有一个是IRichEditOleCallback指针,而IRichEditOleCallback有一个成员就是GetContextMenu.

HRESULT GetContextMenu( WORD seltype ,     LPOLEOBJECT lpoleobj ,     CHARRANGE *lpchrg ,    HMENU *lphmenu );

 

So easy??

Yes.

来看看这个函数的说明

seltype:是编辑框当前选中的内容的类型,可以取下面的值组合 :

SEL_EMPTY:无选择

SEL_TEXT:选择的是文本. SEL_OBJECT:至少选择了一个对象 SEL_MULTICHAR:选择了超过一个字符的文本
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值