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);
}