前段时候需要用到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:选择了超过一个字符的文本

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

被折叠的 条评论
为什么被折叠?



