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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深度学习(五)学习率的调节

    深度学习(五)学习率的调节   学习率对于深度学习是一个重要的超参数,它控制着基于损失梯度调整神经网络权值的速度,大多数优化算法(SGD、RMSprop、Adam)对其都有所涉及。学习率越小,损失梯度下降的速度越慢,收敛的时间更长,如公式所示:new_weight=existing_weight—learning_rate*gradient(新权值=当前权值–学习率×梯度)    如果学习…

    2022年5月20日
  • Java高级工程师面试题总结及参考答案「建议收藏」

    Java高级工程师面试题总结及参考答案「建议收藏」一、面试题基础总结1、JVM结构原理、GC工作机制详解答:具体参照:JVM结构、GC工作机制详解,说到GC,记住两点:1、GC是负责回收所有无任何引用对象的内存空间。注意:垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身,2、GC回收机制的两种算法,a、引用计数法b、可达性分析算法(这里的可达性,大家可以看基础2Java对象的什么周期),至于更详细的GC…

    2022年6月10日
  • java冒泡排序经典代码_Java干货分享:冒泡排序

    java冒泡排序经典代码_Java干货分享:冒泡排序不管学习什么编程语言,冒泡排序都是每一个走上IT路的小伙伴的必经之路。但是还有好多小伙伴对冒泡排序摸不着头脑,今天知了堂小编就来分享一下经典算法——冒泡排序。首先咱们举个金鱼吐泡泡的例子来理解冒泡排序的过程:金鱼吐出的一连串泡泡就是我们要排序的数据,数据就像泡泡浮上水面一样一个一个被排好序,吐出的泡泡越大就会越快浮出水面,相应的,数据里某一个数字越大,那么就能越快的被排好序,当然最大的数字也是第一…

    2022年7月7日
  • PyCharm切换Python版本

    PyCharm切换Python版本

    2021年10月22日
  • 关于矩阵的归一化

    关于矩阵的归一化最近在看Yang大牛稀疏表示论文的代码,发现里面很多的操作的用到了矩阵的列归一化,这里谈一谈列归一化的实现,以及其带来的好处。矩阵的列归一化,就是将矩阵每一列的值,除以每一列所有元素平方和的绝对值,这样做的结果就是,矩阵每一列元素的平方和为1了。举个例子,矩阵[1,2,3]’,将其归一化的结果就是[0.2673,0.5345,0.8018]。其平方和就为1了。Y

    2022年10月11日
  • django成品网站源码_alpha omega

    django成品网站源码_alpha omegaVuePress 1.0.0-alpha.39 发布,轻量级静态网站生成器

    2022年4月21日

发表回复

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

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