关于RichEdit的问题,熟悉的朋友请帮帮忙!

无聊客 2006-10-23 11:42:47
RichEdit是否支持这样的功能:当用户点击某个区域或者Object的时候,会弹出不同的菜单(菜单也是开发者根据不同的点击来决定弹出什么内容)?
最好有例子能说明一下,谢谢先!

比如如果点中的是空白区域,弹出菜单显示“粘贴”,如果点的是一张图片,弹出菜单显示“拷贝”、“删除”或其他自定义菜单
...全文
220 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhucde 2006-10-23
  • 打赏
  • 举报
回复
m_edit1为你的richedit的控制变量, "设置edit为只读"是笔误,别理会,用来测试其它例子时写的
zhucde 2006-10-23
  • 打赏
  • 举报
回复
区域或者object楼主自己判断(这个方法应该很多吧?)

弹出菜单,重载PreTranslateMessage:
BOOL CMydilog::PreTranslateMessage(MSG* pMsg)
{

if(pMsg->hwnd==m_edit1.m_hWnd)//设置edit1为只读
{
if( pMsg->message==WM_RBUTTONDOWN&&你的判断的哪个条件成立 )
{
CMenu *menu;
CPoint pt;
GetCursorPos(&pt);
menu=AfxGetApp()->GetMainWnd()->GetMenu()->GetSubMenu(1);
menu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, pt.x,pt.y,AfxGetApp()->GetMainWnd(),0);
}

}

我这里弹出的菜单是用的主菜单的第二个菜单的弹出项来做测试的,你可以自己定义其它的想要的菜单
DentistryDoctor 2006-10-23
  • 打赏
  • 举报
回复
重载virtual HMENU GetContextMenu(WORD, LPOLEOBJECT, CHARRANGE* );

For example:

virtual HMENU GetContextMenu(WORD, LPOLEOBJECT, CHARRANGE* );
...

HMENU CMyRecvEditCtrl::GetContextMenu(WORD, LPOLEOBJECT, CHARRANGE* )
{
CMenu popupMenu;
popupMenu.LoadMenu(ID_?);
CMenu* pMenuPopup = popupMenu.GetSubMenu(0);
popupMenu.RemoveMenu(0, MF_BYPOSITION);
return pMenuPopup->Detach();
}
东文-桑晨 2006-10-23
  • 打赏
  • 举报
回复
Mark一下,GetContextMenu应该可以,值得研究和学习一下
aa3000 2006-10-23
  • 打赏
  • 举报
回复
进来接分。
dfkoko 2006-10-23
  • 打赏
  • 举报
回复
jf
无聊客 2006-10-23
  • 打赏
  • 举报
回复
GetContextMenu可以工作,研究中,谢谢先
无聊客 2006-10-23
  • 打赏
  • 举报
回复
我试了下OnContextMenu,好象没响应。。。
yjgx007 2006-10-23
  • 打赏
  • 举报
回复
OnContextMenu

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧