CMFCRibbonMiniToolBar
通常于用户在文档中选择对象后显示浮动工具栏。 例如,用户在文字处理程序中选择文本块后,应用程序将显示包含文本格式设置命令的浮动工具栏。
鼠标指针位于浮动工具栏边界之外时,浮动工具栏将变透明。
成员函数
由框架用于创建此类类型的动态实例。
由框架用于获取一个指向CRuntimeClass程序与此类类型的对象。
(重写 CMFCPopupMenu::IsRibbonMiniToolBar。)
设置要在工具栏上显示的命令的列表。
在指定的屏幕坐标上显示浮动工具栏。
显示浮动工具栏以及上下文菜单。
void CMSOffice2007DemoView::OnRButtonUp(UINT nFlags, CPoint point)
{
long nStartChar, nEndChar;
GetRichEditCtrl().GetSel(nStartChar, nEndChar);
if (nEndChar - nStartChar <= 1)
{
SendMessage(WM_LBUTTONDOWN, nFlags, MAKELPARAM(point.x, point.y));
ReleaseCapture ();
}
CPoint ptScreen = point;
ClientToScreen(&ptScreen);
if (!ShowContextMenu(ptScreen))
{
Default();
}
}
void CMSOffice2007DemoView::OnLButtonUp(UINT nFlags, CPoint point)
{
CRichEditView::OnLButtonUp(nFlags, point);
if (m_ptMouseDown == CPoint (-1, -1))
{
return;
}
m_ptMouseDown = CPoint (-1, -1);
if (GetSelectedItem() != NULL || CMFCPopupMenu::GetActiveMenu() != NULL || GetRichEditCtrl().GetSelText().IsEmpty())
{
return;
}
if (!theApp.m_bShowFloaty)
{
return;
}
CMFCRibbonMiniToolBar* pFloaty = new CMFCRibbonMiniToolBar;
InitFloaty(pFloaty);
ClientToScreen(&point);
pFloaty->Show(point.x, point.y);
}
//显示上下文菜单(右键菜单)
BOOL CMSOffice2007DemoView::ShowContextMenu(CPoint point)
{
if (DYNAMIC_DOWNCAST(CFrameWndEx, GetParentFrame()) == NULL)
{
// Maybe, server mode, show the regular menu!
return FALSE;
}
CRichEditCntrItem* pItem = GetSelectedItem();
if (pItem == NULL || !pItem->IsInPlaceActive())
{
CMFCRibbonMiniToolBar* pFloaty = new CMFCRibbonMiniToolBar;
InitFloaty(pFloaty);
pFloaty->ShowWithContextMenu(point.x, point.y, IDR_CONTEXT_MENU, this);
return TRUE;
}
return FALSE;
}
void CMSOffice2007DemoView::InitFloaty(CMFCRibbonMiniToolBar* pFloaty)
{
ASSERT_VALID(pFloaty);
CList<UINT, UINT> lstCmds;
lstCmds.AddTail(ID_FONT_FONT);
lstCmds.AddTail(ID_FONT_FONTSIZE);
lstCmds.AddTail(ID_FONT_GROWFONT);
lstCmds.AddTail(ID_FONT_SHRINK);
lstCmds.AddTail(ID_WRITE_CHANGESTYLES);
lstCmds.AddTail(ID_EDIT_COPYFORMAT);
lstCmds.AddTail(ID_FONT_BOLD);
lstCmds.AddTail(ID_FONT_ITALIC);
lstCmds.AddTail(ID_PARA_CENTER);
lstCmds.AddTail(ID_FONT_TEXTHIGHLIGHT);
lstCmds.AddTail(ID_FONT_COLOR);
lstCmds.AddTail(ID_PARA_DECREASEINDENT);
lstCmds.AddTail(ID_PARA_INCREASEINDENT);
lstCmds.AddTail(ID_PARA_BULLETS);
pFloaty->SetCommands(((CMainFrame*) GetTopLevelFrame())->GetRibbonBar(), lstCmds);
}