安装 BCGControlBar 库到你的计算机:
你必须编译链接所有的 BCGControlBar 库的 DLL 文件;
打开 BCGControlBar 项目并编译链接。下面是一个你将得到的 DLLs 和 库文件列表:
BCGCB***D.dll, BCGCB***D.lib DLL debug version BCGCB***.dll, BCGCB***.lib DLL release version BCGCB***UD.dll, BCGCB***UD.lib DLL debug version, UNICODE BCGCB***U.dll, BCGCB***U.lib DLL release version UNICODE BCGCB***StaticD.lib static library debug version BCGCB***StaticDS.lib static library debug version, MFC shared DLL* BCGCB***Static.lib static library release version BCGCB***StaticS.lib static library release version, MFC shared DLL* BCGCB***StaticUD.lib static library debug version, UNICODE BCGCB***StaticUDS.lib static library debug version, UNICODE, MFC shared DLL* BCGCB***U.lib static library release version, UNICODE BCGCB***US.lib static library release version, UNICODE, MFC shared DLL*
*** 表示版本号。比如,如果你使用的库版本为 5.00 发行版, DLL 的相应的发行版本为 BCGCB500.dll
* static library version with MFC shared DLL 适用于 4.7 或更高版本。
所有这些文件将定位在你的 <BCGLibrary Directory>/Bin 目录中。 记得要把这些目录加入你的系统目录中。
请按如下内容改变你的源代码:
#include "BCGCB.h"
class CMyApp : public CWinApp,
public CBCGWorkspace
SetRegistryBase (_T("Settings"));
// 初始化自定义管理器:
InitMouseManager();
InitContextMenuManager();
InitKeyboardManager();
class CMyApp ....
{
...
virtual void PreLoadState();
...
};
void CMyApp::PreLoadState()
{
// 把鼠 标事件连接到特定 的视图 :
GetMouseManager()->AddView (iIdTestView, _T("Test view"), IDR_VIEW);
// 初始化上下文菜单:
GetContextMenuManager()->AddMenu (_T("Test menu"), idMenu);
}
CBCGMenuBar m_wndMenuBar; // 新的菜单栏
CBCGToolBar m_wndToolBar; // 应用程序工具栏
// 创建菜单栏(替换标准菜单):
if (!m_wndMenuBar.Create (this))
{
TRACE0("Failed to create menubar/n");
return -1; //创建失败
}m_wndMenuBar.SetBarStyle (m_wndMenuBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_wndMenuBar.EnableDocking (CBRS_ALIGN_ANY);
DockControlBar (&m_wndMenuBar);
重要之处: 你可以在应用程序中使用任何数目的CBCGToolBar 工具栏。所有的工具栏图像将被合并到一个位图文件中。 无论如何,仅仅有一个CBCGMenuBar 对象被使用。
为了使能 工具栏/菜单 的自定义,请作出如下改变:
void CMainFrame::OnViewCustomize()
{
// 创建一个自定义工具栏对话框:
CBCGToolbarCustomize* pDlgCust = new CBCGToolbarCustomize (this,
TRUE /* Automatic menus scaning */);// 添加预定义工具栏:
pDlgCust->AddToolBar ("Main", IDR_MAINFRAME);
....// 添加用户自定义命令:
pDlgCust->AddButton ("User", CBCGToolbarButton (ID_USER_TOOL1, 1, "User Tool 1", TRUE));
pDlgCust->AddButton ("User", CBCGToolbarButton (ID_USER_TOOL2, 2, "User Tool 2", TRUE));
pDlgCust->AddButton ("User", CBCGToolbarButton (ID_USER_TOOL3, 3, "User Tool 3", TRUE));
....pDlgCust->SetUserCategory ("User");
// 使能用户自定义工具栏的 Create/Delete :
pDlgCust->EnableUserDefinedToolbars ();pDlgCust->Create ();
}
为了使能 Microsoft?Office 2000 菜单:
CList<UINT, UINT> lstBasicCoomads;
lstBasicCoomads.AddTail (ID_FILE_NEW);
lstBasicCoomads.AddTail (ID_FILE_OPEN);
lstBasicCoomads.AddTail (ID_FILE_SAVE);......
lstBasicCoomads.AddTail (ID_APP_ABOUT);
CBCGToolBar::SetBasicCommands (lstBasicCoomads);
为了使能菜单阴影:
CBCGMenuBar::EnableMenuShadows (BOOL bEnable = TRUE)
注意 如果你查看的内容可能动态改变就不要在弹出式菜单中使用菜单 阴影(比如,视图显示动画、HTML页)在这种情况下,菜单阴影 会记忆以前的视图图像。
为了在运行时改变菜单字体:
CBCGMenuBar::SetMenuFont (LPLOGFONT lpLogFont, BOOL bHorz = TRUE);
为了使能“页面”(自定义)按钮,只需要调用:
m_wndToolBar.EnableCustomizeButton (TRUE, id_of_customize_command,
_T("Customize..."));
为了使能图像覆盖下的文字:
m_wndToolBar.EnableTextLabels (BOOL bEnable = TRUE);
为了使能用户自定义工具:
EnableUserTools (ID_TOOLS_ENTRY, ID_TOOL1, ID_TOOLx); |
为了使能动态可裁剪菜单:
EnableTearOffMenus (_T("RegBase", ID_TEAR_OFF1, ID_TEAR_OFFx); |
为了使能静态可裁剪菜单
pMenuButton->SetTearOff (D_TEAR_OFF_BAR); |