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 ();
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 阿里云轻量应用型服务器防火墙端口开放了还是无法访问问题@林[通俗易懂]

    阿里云轻量应用型服务器防火墙端口开放了还是无法访问问题@林[通俗易懂]阿里云轻量应用型服务器防火墙端口开放了还是无法访问问题登录阿里云找到防火墙远程连接服务器,开启防火墙对应端口这里我用的是FinalShell,当然这个远程连接的软件可以不同,只要能远程连接上服务器就行;(1)查看防火墙状态(dead状态,防火墙未开启;active状态,即防火墙开启)systemctlstatusfirewalld(2)防火墙未开启,开启防火墙(防火墙开启后记得再查看防火墙状态)systemctlstartfirewalld(3)查看开放端口列表f

  • VirtualBox命令行接口VBoxManage配置「建议收藏」

    VirtualBox命令行接口VBoxManage配置「建议收藏」VBoxManage是VirtualBox的命令行接口,你可以在主机操作系统的命令行中完全地控制VirtualBox。VBoxManage支持GUI可访问的全部功能,而且更多。VBoxManage展示了虚拟化引擎的全部特征,包括GUI无法访问的。使用VBoxManage前需配置环境变量:1,在系统变量里面添加variable:VBoxManage        

  • 如何在Pycharm上安装PyQt5[通俗易懂]

    如何在Pycharm上安装PyQt5[通俗易懂]这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Mar

  • 数据库四种隔离级别

    首先用通俗的语言介绍以下事务的特性(ACID): 原子性(Atomicity):原子性是指一个事务中的操作,要么全部成功,要么全部失败,如果失败,就回滚到事务开始前的状态。 一致性(Consistency):一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。那转账举栗子,A账户和B账户之间相互转账,无论如何操作…

  • win7 boot设置_重装系统boot missing

    win7 boot设置_重装系统boot missing转自 http://blog.wsdd.org/安装linux,vista/win7双系统后,怎么引导是个问题理论上,可以从windows的bootloader引导linux,也可以linux的grub引导windows但windows更霸道,经常霸占MBR,所以最好是linux不放MBR,然后从windows的bootloader引导linux把linux装在自己的分区,不要

    2022年10月12日
  • 安装PHPMYADMIN IN UBUNTU

    安装PHPMYADMIN IN UBUNTU

发表回复

您的电子邮箱地址不会被公开。

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