BCG界面库_如何用vc设计界面

BCG界面库_如何用vc设计界面BCGControlBarLibraryProfessionalEdition installation:整个库的源代码安装在\BCGCBPro 目录下面.可执行文件(*.dll)安装在\Bin (forVisualStudio6.0)或\Bin7 (forVisualStudio.NET)下面。请在你的源代码中做如下的改变:在应用程序的Inc

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

BCGControlBar Library Professional Edition installation:

整个库的源代码安装在<install dir>\BCGCBPro 目录下面.可执行文件(*.dll)安装在 <install dir>\Bin (for VisualStudio 6.0) 或<install dir>\Bin7 (for VisualStudio .NET)下面。

请在你的源代码中做如下的改变:

  • 在应用程序的Include路径中加入BCGCBPro目录,具体添加办法如下:vs2005下面打开菜单工具的Option项,选择项目解决方案-〉vc++目录,然后将包含文件<install dir>\BCGCBPro 添加进去。
  • 确信在你的应用程序的 InitInstance() 方法中调用了AfxOleInit() 。
  • 在stdafx.h中加入下面的包含文件:
#include “BCGCBProInc.h”
class CMyApp : public CWinApp,
                         public CBCGPWorkspace
  • 第一步,你需要定义一个在注册表里保存个性化数据的项并且鼠标,键盘和上下文菜单都需要。为了实现这一点,CMyApp::InitInstance set registry entry and initialize customization managers:
SetRegistryBase (_T(“Settings“));

// Initialize customization managers:
InitMouseManager();
InitContextMenuManager();
InitKeyboardManager();

  • 如果你决定使你的鼠标和菜单具有个性化,你需要 “attach” 一个需要的视图初始化鼠标和菜单的个性化管理。重载CBCGPWorkspace::PreLoadState 方法:
class CMyApp ….
{


virtual void
 PreLoadState();

};

void CMyApp::PreLoadState()
{

   
 // Associate mouse event with specific view(s):

    GetMouseManager()->AddView (iIdTestView, _T(“
Test view“), IDR_VIEW);

    // Initialize context menus:
    GetContextMenuManager()->AddMenu (_T(“
Test menu“), idMenu); 
}

  • 把框架文件中的基类CMDIFrameWnd 改为 CBCGPMDIFrameWnd (in case of SDI application changeCFrameWnd to CBCGPFrameWnd)
  • 将子框架的基类 CMDIChildWnd 改为  CBCGPMDIChildWnd
  • 将 CToolbar 改为 CBCGPToolBar 并且加入一个embedded menu bar 在你的CMainFrame类中:
CBCGPMenuBar    m_wndMenuBar;    // New menu bar
CBCGToolBar      m_wndToolBar;     
 // Application toolbar
  • CMainFrame::OnCreate() 方法中加入下面几行以实现菜单的功能:
// Create menu bar (replaces the standard menu):
if (!m_wndMenuBar.Create (this))
{

      TRACE0(“Failed to create menubar\n”);
      return -1;     
 // fail to create
}

m_wndMenuBar.SetBarStyle (m_wndMenuBar.GetBarStyle() |
                                          CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

  • 加入以下代码以实现ca:
m_wndMenuBar.EnableDocking (CBRS_ALIGN_ANY);
DockControlBar (&m_wndMenuBar);

Important:在你的应用程序中,你可以使用多个 CBCGPToolBar .所用工具条的图像将自动合并到一张位图上 . 但是只有一个CBCGPMenuBar 对象可以使用.
 

为了具有自定义工具条和菜单条, 请做如下改变:

  • 加入 toolbar/menu customization command (for example, View | Customize…)
  • Implement OnViewCustomize method. The code will look something like this:
void CMainFrame::OnViewCustomize()
{

 // Create a customize toolbars dialog:

 CBCGPToolbarCustomize* pDlgCust = new CBCGToolbarCustomize (this,
TRUE
 );

 // Add predefined toolbars:
 pDlgCust->AddToolBar (“Main”, IDR_MAINFRAME);
 ….

 // Add user-defined commands:
 pDlgCust->AddButton (“User”, CBCGPToolbarButton (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”);

 // Enable Create/Delete of the user-defined toolbars:
 pDlgCust->EnableUserDefinedToolbars ();

 pDlgCust->Create ();
}

为了能具有 Microsofte Office 2000 的菜单风格:

  • Define your own basic commands set (usually in CMainFrame::OnCreate()):
CList<UINT, UINT> lstBasicCoomads;
 

lstBasicCoomads.AddTail (ID_FILE_NEW);
lstBasicCoomads.AddTail (ID_FILE_OPEN);
lstBasicCoomads.AddTail (ID_FILE_SAVE);

……
lstBasicCoomads.AddTail (ID_APP_ABOUT);

CBCGPToolBar::SetBasicCommands (lstBasicCoomads);

  • 这些命令将使得这些菜单能保持常见.

使菜单项是否具有阴影的风格:

CBCGPMenuBar::EnableMenuShadows (BOOL bEnable = TRUE)

Note: please don’t use menu shadows if your views content may be dynamically changed when the popup menu is shown (e.g., views shows animation, HTML page). In this case menu shadow “is remember” the previous view image.

在运行时改变菜单的字体:

CBCGPMenuBar::SetMenuFont (LPLOGFONT lpLogFont, BOOL bHorz = TRUE);

使工具条具有”pager” (customization) button just call:

m_wndToolBar.EnableCustomizeButton (TRUE, id_of_customize_command,
_T(“Customize…”));

使工具条的按钮下具有文字:

m_wndToolBar.EnableTextLabels (BOOL bEnable = TRUE);

使用户能自定义工具:

  • Add a new menu item: ID_TOOLS_ENTRY. This item will be automatically replaced by the actual tools list
  • Add the following items to the STRING resource:
     
    1. ID_TOOL1    “Activates user-defined tool\nUser Tool”
    2. ID_TOOL2    “Activates user-defined tool\nUser Tool”
      ….
    3. ID_TOOLx    “Activates user-defined tool\nUser Tool”
       
  • In application’s InitInstance() call:
     

    EnableUserTools (ID_TOOLS_ENTRY, ID_TOOL1,    ID_TOOLx);
  • A new “Tools” page will be added to the customization dialog

To enable dynamic “tear-off” (“detachable”) menus:

  • Reserve some items in the STRING resource table. These IDs will be used as control bars IDs
    1. ID_TEAR_OFF1    “<dummy>”
    2. ID_TEAR_OFF2    “<dummy>”
    3. …….
    4. ID_TEAR_OFFx    “<dummy>”
  • For each “tear-off” popup menu, change the “Break” property to “Bar” (MF_MENUBARBREAK)
  • In application’s InitInstance() call: 
    EnableTearOffMenus (_T(“RegBase”, ID_TEAR_OFF1, ID_TEAR_OFFx);

To enable static “tear-off” (“detachable”) menus:

  • Reserve an item in the STRING resource table. This ID should be differ from dynamic tear-off ID (see above)
    ID_TEAR_OFF_BAR    “<dummy>”
     
  • In the main frame OnShowPopupMenu, enable “tear-off” for the specific menu button:
     

    pMenuButton->SetTearOff (ID_TEAR_OFF_BAR);

To ensure, that all BCGPControlBar allocations are freed properly:

  • Add the following call into your application’s ExitInstance() :
    ::BCGCBProCleanUp ();
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184520.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月8日 下午4:36
下一篇 2022年10月8日 下午4:36


相关推荐

  • css伪元素选择器有哪些_css3伪选择器

    css伪元素选择器有哪些_css3伪选择器伪元素选择器有::first-letter,::first-line,::selection,::before,::after

    2025年6月3日
    4
  • Java视屏教程下载地址——孙鑫讲解

    Java视屏教程下载地址——孙鑫讲解CD1-2        CD3-4CD5-6CD7-8CD9-10JLesson7CD11-12光盘讲解:CD1:Java的一些基本概念,Java的起源、为什么我们要学习Java语言,Java跨平台原理剖析;Java环境变量的配置,初学者常犯的问题,Java语言的基本数据类型和Java的语句。CD2:Java面向对象编程,面向对象编程和面向过程

    2022年5月16日
    44
  • mysql分表+分页查询

    mysql分表+分页查询随着项目运行的时间越来越长 有些数据的存储也会越来越大 比如一些点击量 浏览量量 单表的数据可以到达上千万条数据 这时候会存在单表数据过大 查询效率低的问题 为了提高查询效率这时候需要对单表进行拆分 比如一张 1000 万条数据的表 我们需要把它拆分为 10 张表 一张表就需要 100 万 my

    2026年3月19日
    4
  • Latex公式换行编写

    Latex公式换行编写latex在写公式时往往会遇到长公式或者连续等于的情况,这时可以选择公式换行操作:\begin{equation}\begin{aligned}a&=b+c\\&=c+b\end{aligned}\end{equation}得到如下的效果:其中&是用于标注需要对齐的位置,例如示例代码中放在…

    2022年6月14日
    90
  • 月之暗面 Kimi Linear 横空出世:长文本处理效率飞跃,Agent LLM迎来新基石?

    月之暗面 Kimi Linear 横空出世:长文本处理效率飞跃,Agent LLM迎来新基石?

    2026年3月12日
    2
  • SpringBatch文档

    SpringBatch文档第一章SpringBatch入门第一节SpringBatch概述SpringBatch是一个轻量级的、完善的批处理框架,旨在帮助企业建立健壮、高效的批处理应用。SpringBatch是Spring的一个子项目,使用Java语言并基于Spring框架为基础开发,使得已经使用Spring框架的开发者或者企业更容易访问和利用企业服务。SpringBatch提供了大量可重用的组件…

    2022年5月28日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号