MFC BCGControlBar 庫 使用方法

安裝 BCGControlBar 庫到你的計算機:

  • 解壓縮?BCGControlBar.zip?(比如,到?c:\bcg?目錄中)
  • 把?c:\bcg\bin?增加到你的 path 環境變量中,
  • 運行?Visual C++?并且打開?Tools | Options?對話框,切換到Directories?頁并且把?c:\bcg\bcgcontrolbar?加入到 include 目錄 中,把?c:\bcg\bin?加入 library 和 executable 目錄中;
  • 打開Bcgcontrolbar?和/或?BcgcontrolbarStatic?項目(路徑是?c:\bcg\bcgcontrolbar)?并且選擇需要的選項;
  • 如果要安裝 BCGControlBar 應用程序向導,只需要打開BCGBAppWizard?項目并編譯鏈接。你將在項目列表中看到一個新的條目。

你必須編譯鏈接所有的 BCGControlBar 庫的 DLL 文件;

打開 BCGControlBar 項目并編譯鏈接。下面是一個你將得到的 DLLs 和 庫文件列表:

BCGCB***D.dll, BCGCB***D.libDLL debug version
BCGCB***.dll, BCGCB***.libDLL release version
BCGCB***UD.dll, BCGCB***UD.libDLL debug version, UNICODE
BCGCB***U.dll, BCGCB***U.libDLL release version UNICODE
BCGCB***StaticD.libstatic library debug version
BCGCB***StaticDS.libstatic library debug version, MFC shared DLL*
BCGCB***Static.libstatic library release version
BCGCB***StaticS.libstatic library release version, MFC shared DLL*
BCGCB***StaticUD.libstatic library debug version, UNICODE
BCGCB***StaticUDS.libstatic library debug version, UNICODE, MFC shared DLL*
BCGCB***U.libstatic library release version, UNICODE
BCGCB***US.libstatic library release version, UNICODE, MFC shared DLL*

*** 表示版本號。比如,如果你使用的庫版本為 5.00 發行版, DLL 的相應的發行版本為 BCGCB500.dll
* static library version with MFC shared DLL 適用于 4.7?? 或更高版本。

所有這些文件將定位在你的 <BCGLibrary Directory>\Bin?目錄中。 記得要把這些目錄加入你的系統目錄中。


請按如下內容改變你的源代碼:

  • 添加 BCGControlBar 路徑到 INCLUDE 路徑
  • 確定你在你的應用程序中調用 了?AfxOleInit()?InitInstance()
  • 添加下列語句到 stdafx.h 文件:
#include "BCGCB.h"
  • 添加?CBCGWorkspace-派生到你的應用程序類:
class?CMyApp?:?public?CWinApp,
?????????????????????????public?CBCGWorkspace
  • 首先,你必須定義在注冊表中存放你自定義數據的位置和你 需要什么樣的自定義(鼠標、鍵盤、上下文菜單),為了做這些工作,在CMyApp::InitInstance?中設置注冊表入口并初始化自定義管理器:
SetRegistryBase?(_T("Settings"));

// 初始化自定義管理器:
InitMouseManager();
InitContextMenuManager();
InitKeyboardManager();
  • 如果你已經決定使用鼠標或上下文菜單的自定義功能,你必 須在鼠標自定義管理器中附加一個視圖,或初始化上下文菜單。重載CBCGWorkspace::PreLoadState?行為:
class?CMyApp ....
{
...
virtual void?PreLoadState();
...
};

void?CMyApp::PreLoadState()
{
????// 把鼠 標事件連接到特定 的視圖 :
???? GetMouseManager()->AddView (iIdTestView, _T("Test view"), IDR_VIEW);

????// 初始化上下文菜單:
???? GetContextMenuManager()->AddMenu (_T("Test menu"), idMenu);?
}
  • 同時在 mainfrm.h 和 mainfrm.cpp 文件中 把?CMDIFrameWnd?變成?CBCGMDIFrameWnd?,(在 SDI 應用程序的情況下, 把?CFrameWnd?變成?CBCGFrameWnd)
  • 把?CMDIChildWnd?變成??CBCGMDIChildWnd
  • 把?CToolbar?變成?CBCGToolBar?并且添加一個內嵌菜單欄對象到你的 CMainFrame 類中:
CBCGMenuBar???? m_wndMenuBar;????// 新的菜單欄
CBCGToolBar?????? m_wndToolBar;??????// 應用程序工具欄
  • 在?CMainFrame::OnCreate()?行為中添加如下的行,以便使能菜單欄功能:
// 創建菜單欄(替換標準菜單):
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?對象被使用。

為了使能 工具欄/菜單 的自定義,請作出如下改變:

  • 添加 工具欄/菜單 自定義命令(比如,View | Customize...
  • 實現?OnViewCustomize?行為。代碼看起來如下:
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 菜單:

  • 定義你自己的基本命令集合(通常在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);

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);

為了使能用戶自定義工具:

  • 添加一個新的菜單條目:ID_TOOLS_ENTRY。該條目將 自動被實際存在的工具列表取代。
  • 添加如下的條目到 STRING 資源:
    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"
  • 在應用程序的InitInstance()?中調用:
    EnableUserTools?(ID_TOOLS_ENTRY, ID_TOOL1,???? ID_TOOLx);
  • 一個?"Tools"?新頁面將加入到自定義對話框中

為了使能動態可裁剪菜單:

  • 在 STRING 資源表中保留部分條目。這些標識符將被當作控制欄標識符使用。
    1. ID_TEAR_OFF1???? "<dummy>"
    2. ID_TEAR_OFF2???? "<dummy>"
    3. .......
    4. ID_TEAR_OFFx???? "<dummy>"
  • 對于每一個可裁剪彈出式菜單,把 "Break" 屬性改位 "Bar" (MF_MENUBARBREAK)
  • 在應用程序的?InitInstance()?中調用:
    EnableTearOffMenus?(_T("RegBase",?ID_TEAR_OFF1,?ID_TEAR_OFFx);

為了使能靜態可裁剪菜單

  • 在 STRING 資源表中保留一個條目。這個標識符將區別于動態 可裁剪 標識符(如上所述)。

    ID_TEAR_OFF_BAR???? "<dummy>"
  • 在主框架的 OnShowPopupMenu,為特定的菜單按鈕使能可裁剪:
    pMenuButton->SetTearOff?(D_TEAR_OFF_BAR);

?

BCGControlBar9.0的注冊密碼:6CA746D4-8A7B-4373-B550-18F56C26D785

轉載于:https://www.cnblogs.com/vipwtl/p/6146359.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255797.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255797.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255797.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

四則運算2開發簡介

四則運算2在四則運算1的基礎之上&#xff0c;又添加了新的功能&#xff0c;但是我覺得四則運算2的難度比四則運算1增大了很多&#xff0c;我在編程的過程中&#xff0c;遇到的最大難度就是不知該如何更好的融合各個功能之間的關系。 寫到現在&#xff0c;四則運算2主要實現了以…

ABB機器人的 備份與恢復

保存內容 備份功能可保存上下文中的所有系統參數、系統模塊和程序模塊。 備份內容 數據保存于用戶指定的目錄中。 默認路徑可加以設置。 目錄分為四個子目錄&#xff1a;Backinfo、Home、Rapid 和 Syspar。 System.xml 也保存于包含用戶設置的 ../backup &#xff08;根…

flask項目開發中,遇到http 413錯誤

在flask項目中&#xff0c;上傳文件時后臺報http 413 Request Entity Too Large 請求體太大錯誤&#xff01; 解決的2種方法&#xff1a; 1.在flask配置中設置 MAX_CONTENT_LENGTH的值; 如設置為20M ( MAX_CONTENT_LENGTH20*1024*1024) 這時小于20M的文件都可以上傳 相關連接&…

【機器視覺】——畸變與矯正

目錄 一、什么是畸變?畸變的原因是什么? 1、徑向畸變(桶形畸變和枕形畸變)

ApplicationContextAware 接口

一、這個接口有什么用&#xff1f; 當一個類實現了這個接口&#xff08;ApplicationContextAware&#xff09;之后&#xff0c;這個類就可以方便獲得ApplicationContext中的所有bean。換句話說&#xff0c;就是這個類可以直接獲取spring配置文件中&#xff0c;所有有引用到的be…

Java之泛型練習

package cn.itcast.generics;import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet;/** 方法一&#xff1a;實現Comparable接口*/ //class Person implements Comparable<Person> {//實現Comparable接口&#xff0c;使得集合元素具備可比較…

ABB 配置文件

配置文件 配置文件是列出系統參數值的文本文件。 注意&#xff1a; 如果該參數指定默認值&#xff0c;那么就不會被列在 配置文件。 控制器中有六個配置區域&#xff0c;配置文件保存為后綴 .CFG文件。 配置文件默認保存在系統文件夾SYSPAR&#xff0c;例如.. \ MySystem\ …

巨杉db

巨杉數據庫 and mongo db ,分布式數據庫&#xff0c; 轉載于:https://www.cnblogs.com/feiyun8616/p/8178116.html

【深度學習】——物體檢測細節處理(NMS、樣本不均衡、遮擋物體)

目錄 一、候選框大量重疊問題 1、NMS核心思想 2、 步驟&#xff1a; 3、缺陷 4、改進 1&#xff09;soft NMS——衰減的方式來減小預測框的分類得分 2&#xff09;softer nms——增加了位置置信度 二、樣本不平衡問題 1、不平滑的來源&#xff08;3方面&#xff09; 1&a…

忙著,快樂著

無比充實的周末&#xff0c;好久沒有這樣忙過了&#xff0c;周六早上七點多起床去上考研課&#xff0c;上了整整一天&#xff0c;晚上回到寢室用吃飯的時間讓自己放松一下&#xff0c;看了一會兒綜藝節目&#xff0c;吃晚飯就開始寫這次的代碼&#xff0c;寫累了就去洗洗睡了&a…

ABB Fronius TPS 4000/5000 IRC5 接口

在RobotStudio生成機器人系統時&#xff0c;選擇&#xff1a; Power Source option 650-9 Fronius TPS 4000/5000。Fronius的設備類別和設置被激活。此選項支持福尼斯TPS 4000/5000弧焊電機&#xff0c;包括支持三種焊接模式&#xff1a; 1 Job模式 2 修正的Job模式 …

ASP.NET 實現Base64文件流下載PDF

因為業務需要調用接口獲取的是 Base64文件流 需要提供給客戶下載PDF文檔 源碼部分借鑒網上&#xff0c;具體地址忘記了。 //Base64文件流 byte[] buffer Convert.FromBase64String(decodedString); System.IO.Stream iStream new System.IO.MemoryStream(buffer);try{int len…

Viewpager無限循環(首頁與尾頁平滑過渡)

#Viewpager無限循環(首頁與尾頁平滑過渡) ##double kill 在網上找了不少的viewpager無限輪播的例子&#xff0c;大部分都是Interger.MAX_VALUES。 滑到最后一頁的時候setCurrentItem(0),這樣雖然實現了無限輪播&#xff0c;但是當從最后一頁跳轉到第一頁的時候不夠優雅。。通過…

【深度學習】——物體檢測的難點

目錄 一、小物體檢測 1、降采樣率減小 空洞卷積 2、anchor設計 1&#xff09;統計方法 2&#xff09;anchor邊框聚類 3、多尺度訓練&#xff08;multi scale training——MST&#xff09; 4、 特征融合 一、小物體檢測 在分類任務中&#xff0c;一般物體的大小都差不多&a…

ABB 機器人 通信指令(人機對話):

&#xff08;1&#xff09;清屏指令&#xff1a;TPErase &#xff08;2&#xff09;寫屏指令&#xff1a;PWrite String   tring&#xff1a;顯示的字符串。(string)在示教器顯示屏上顯示字符串數據&#xff0c;也可以用“……”形式直接定義字符串&#xff0c;每一個寫屏…

hadoop streaming編程小demo(python版)

大數據團隊搞數據質量評測。自動化質檢和監控平臺是用django&#xff0c;MR也是通過python實現的。(后來發現有orc壓縮問題&#xff0c;python不知道怎么解決&#xff0c;正在改成java版本) 這里展示一個python編寫MR的例子吧。 抄一句話&#xff1a;Hadoop Streaming是Hadoop提…

Asp.net在IE10、IE11下事件丟失經驗總結

asp.net4.0出生得比IE10早&#xff0c;所以asp.net4.0以前版本不認識IE10 的 User-Agent 標頭&#xff0c;導致的后果就是ASP.NET 特定功能失效&#xff0c;例如&#xff1a;頁面報錯__doPostBack找不到&#xff0c;不支援 Cookies 功能等等。這屬于.net的Bug&#xff0c;微軟也…

第6章 循環結構

循環語句: 可以讓一部分代碼,反復執行 1.1 循環語句while while循環: 編寫格式:while(條件){ 循環體 } 條件: 當條件是true,就執行循環體,執行完循環體后 程序再次執行while中的條件,如果條件還是true,繼續執行循環體 直到條件是false的時候,循環就結束 public class WhileDem…

【深度學習】——pytorch搭建模型及相關模型

目錄 1、搭建模型的流程 1&#xff09;步驟 2&#xff09;完整代碼——手寫minist數據集為例&#xff08;這里使用的數據集是自帶的&#xff09; 2、搭建模型的四種方法 1&#xff09;方法一——利用nn.Sequential&#xff08;&#xff09; 2&#xff09;方法二——利用co…