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


相关推荐

  • javalist集合转换数组_集合对象转数组

    javalist集合转换数组_集合对象转数组问题描述:对于给定的如下数组,如何转换成List集合?String[]array={"a","b","c"};参考stackoverflow总结如下几种写法:1.使用原生方式,拆分数组,添加到ListList&lt;String&gt;resultList=newArrayList&lt;&gt;(array.length);for(Strings:ar…

    2022年8月23日
    4
  • fastjson object转jsonobject_jsonobject取值

    fastjson object转jsonobject_jsonobject取值众所周知,kafka中存储的数据是经过BASE64加密后的jsonObject,因此从kafka中读取的数据经过base64解码,得到的是json串,利用JSONObect的方法可以对json串进行解析,拿到对应的数据。那么要如何将scala对象或者java对象转换为JsonObject对象或JSONObject对象呢?(注意:JsonObject对象和JSONObject对象不同,调用的API也…

    2022年10月5日
    0
  • 谈磁盘列阵 raid0 raid1 raid3 raid5 raid10简介及区别

    谈磁盘列阵 raid0 raid1 raid3 raid5 raid10简介及区别转自:https://www.fengjunzi.com/blog-25108.htmlRAID简介随着服务器在企业的应用越来越广泛,数据安全,数据存储,数据恢复,存储速度等方面对企业用户来说越来越重要,而RAID卡在此过程中起着至关重要的作用,RAID卡本身的性能和特点往往会被一些用户忽视,而服务器厂商为节约成本也会搭配一些比较初级甚至一些小品牌的RAID卡产品,在使用过程中出现问题时用…

    2022年7月15日
    18
  • 获取activexobject对象失败_js获取对象

    获取activexobject对象失败_js获取对象js

    2022年10月14日
    0
  • jquery获取日期,对比日期大小

    jquery获取日期,对比日期大小

    2021年7月16日
    74
  • rapidxml操作XML

    rapidxml操作XML主要对上一篇文章做了修改,文章涉及创建、读取和修改XML文件,内容比较齐全,可以供大家学习。创建xml文件:基本步骤:给文件分配节点xmlDoc.allocate_node(node_element,”seqs”,NULL);把分配好的节点添加到文件中xmlDoc.append_node(seqsNode)。对于节点属性,先分配节点xml_node<>*seqsNode=xmlDoc

    2022年7月17日
    15

发表回复

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

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