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