我有一个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();
}
不是使用上下文项,而是使用工具栏。
我错过了什么,做错了什么?
蒂亚!!