BCG之Ribbon界面下禁用右键菜单功能、禁用快捷访问方式等,BCGDockPane国际化(中英互换)

最近尝试使用BCG界面库,该界面库功能还是比较强大的,但是由于首次使用,还是有很多问题边学习边总结吧。

我们写自己的工程的时候往往会根据自己的需要修改相应的界面,在使用Ribbon的时候一般其快捷方式几乎没有什么使用的途径,特别是撰写一些比较小的Demo的时候,如下图所示:

此处参考MFC Ribbon下禁用状态栏CMyRibbonBar右键,快速访问工具(CMFCRibbonQuickAccessToolBar),关闭ApplicationButton响应的博客,在BCG界面库中可同样处理。

1、禁用快捷方式
在CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)方法中添加如下代码,CBCGPRibbonQuickAccessToolbar是BCG的快捷方式工具条处理类。

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	...

	//去掉RibbonQuickAccessToolbar  快捷访问方式
	CBCGPRibbonQuickAccessToolbar* pQAToolbar = m_wndRibbonBar.GetQuickAccessToolbar();
	pQAToolbar->RemoveAll();

	return 0;
}

m_wndRibbonBar是在MainFrame.h中定义的:CBCGPRibbonBar            m_wndRibbonBar;

2、禁用右键菜单功能

新建一个CMyRibbonBar 类,该类公有继承CBCGPRibbonBar,然后在CMyRibbonBar中重载OnShowRibbonContextMenu方法,具体如下:

//去掉BCGRibbon的快捷访问右键菜单
BOOL CVBEproBCGPRibbonBar::OnShowRibbonContextMenu(CWnd* pWnd, int x, int y, CBCGPBaseRibbonElement* pHit)
{
	return FALSE;
}

3、DockPane右键菜单的中英文互换

该部分参考MFC之CBCGPDockingControlBar 单文档停靠栏菜单国际化(实现中英文切换)博客中的提到的方法。但是在使用该博客的方法的时候发现,在资源中插入副本是不需要的,关键在于找到右键菜单的ID,然后根据对应关系汉化处理,即重构OnGetControlBarMenuItemText(UINT nResID, CString& strItem)方法。示例如下:

在DockPane类CWorkSpaceBar中添加如下函数的定义:

afx_msg void OnGetControlBarMenuItemText(UINT nResID, CString& strItem);

在该类中重构:

void CWorkSpaceBar::OnGetControlBarMenuItemText(UINT nResID, CString& strItem)
{
	switch (nResID)
	{
		case IDS_AFXBARRES_FLOATING: 
			strItem = "浮动"; break;
		case IDS_AFXBARRES_DOCKING:  
			strItem = "停靠";  break;
		case IDS_AFXBARRES_TABBED:   
			strItem = "选项卡式文档";   break;
		case IDS_AFXBARRES_AUTOHIDE: 
			strItem = "自动隐藏"; break;
		case IDS_AFXBARRES_HIDE:     
			strItem = "隐藏";     break;
	}	
}

实现效果如图所示:

 

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页