MFC:如何在CTabView选项卡中为CRichEditView实现上下文菜单?

df234987

我的CTabView其中一个标签是a CRichEditView将富文本添加到控件中并显示正常。如果我CRichEditView在工具栏中选择了文本,则编辑项目会正常工作(例如,复制高亮显示,如果单击它,它将复制到剪贴板中)。但是,我发现,如果我选择了文本并单击鼠标右键,将没有上下文菜单,该菜单与之前CRichEditView一样CEditView搜索互联网,我找到了一个可供CRichEditView::GetContextMenu()尝试和使用的实现。它首先发生断言失败,因为CDocument并非富文本类型,因此为了进行测试,我将其删除(注释如下),并得到以下结果:

HMENU CMyRichView::GetContextMenu(WORD seltyp, LPOLEOBJECT lpoleobj, CHARRANGE* lpchrg)
{
  // TODO: Add your specialized code here and/or call the base class
  /*
  CRichEditCntrItem* pItem = GetSelectedItem();
    if (pItem == NULL || !pItem->IsInPlaceActive())*/
    {
      CMenu menuText;
      menuText.LoadMenu(IDR_CONTEXT_EDIT_MENU);
      CMenu* pMenuPopup = menuText.GetSubMenu(0);
      menuText.RemoveMenu(0, MF_BYPOSITION);
      return pMenuPopup->Detach();
    }
}

哪里IDR_CONTEXT_EDIT_MENU是:

IDR_CONTEXT_EDIT_MENU MENU
BEGIN
    POPUP "edit"
    BEGIN
        MENUITEM "&Copy\tCtrl+C",               ID_EDIT_COPY
    END
END

现在,当我右键单击时,我会看到上下文菜单。但是,当我选择“复制”时,什么也没有发生。因此,我映射了,ID_EDIT_COPY以便可以设置断点以查看是否被调用。

void CMyRichView::OnEditCopy()
{
  // TODO: Add your command handler code here
    ASSERT_VALID(this);
    GetRichEditCtrl().Copy();
}

不是使用上下文项,而是使用工具栏。

我想念什么并且做错了什么?

TIA!

巴马克·谢米拉尼(Barmak Shemirani)

如果消息转到,CTabView则添加CTabView::OnEditCopy处理程序。

否则,您可以覆盖PreTranslateMessage如下所示的内容,以确保将消息发送到CMyRichEditView::OnEditCopy

BOOL CMyRichEditView::PreTranslateMessage(MSG *msg)
{
    if(msg->message == WM_CONTEXTMENU || msg->message == WM_RBUTTONDOWN)
    {
        CMenu menu;
        menu.LoadMenu(IDR_CONTEXT_EDIT_MENU);
        int c = menu.GetMenuItemCount();
        CMenu* popup = menu.GetSubMenu(0);
        popup->TrackPopupMenu(0, msg->pt.x, msg->pt.y, this, NULL);
        return TRUE;
    }
    return CRichEditView::PreTranslateMessage(msg);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

javascript:如何检查是否在上下文菜单新选项卡上单击了链接

如何使用键盘打开编辑器选项卡上下文菜单?

如何在胸腺中实现上下文菜单?

在选项卡项中为视图设置数据上下文

如何与YouTube卡类似地实现上下文菜单?

在上下文操作栏中,如何通过使选项卡不可单击/可滑动来禁用滑动选项卡?

Vim Ag插件上下文选项并在选项卡中显示结果

如何在窗口10的右键单击上下文菜单中添加cmd删除选项

如何在Android原生的“编辑文本”上下文菜单中添加选项

如何在TableView中的所选项目上显示上下文菜单

如何在“层次结构”上下文菜单中向GameObject添加选项?

如何在QDialog的上下文菜单中启用所有选项?

如何在上下文菜单中添加“运行lua脚本”选项

如何在PCManFM的上下文菜单中添加使文件可执行的选项?

使用ToolsAPI在Delphi IDE中将菜单项添加到单位的选项卡上下文菜单

如何在Windows的上下文菜单中为文件添加特定操作?

如何在Nautilus中为“ git gui”添加自定义上下文菜单?

如何在Nautilus的上下文菜单中获取vlc?

如何在 WPF 中双击显示上下文菜单

当鼠标悬停附加了上下文菜单时,单击选项卡不起作用

如何在Meteor中访问选项的上下文?

如何在单个选项卡菜单(ALL)中显示所有选项卡内容?

如何在Fragment类中实现选项卡?

我正在尝试在颤振中使用选项卡控制器如何在构建上下文中访问它

如何在Chrome扩展程序中动态地向上下文菜单添加选项?

如何在Server 2012上下文菜单中重新获得“以管理员身份运行”选项?

如何在 Android Studio 的右键单击上下文菜单中添加重新格式化代码选项?

如何在JBOSS中为EJB指定上下文

如何模仿Windows 7zip的“解压缩为“。””上下文菜单选项