• <menu id="w2i4a"></menu>
  • logo BCGControlBar使用教程

    文檔首頁>>BCGControlBar使用教程>>BCGControlBar教程:可視化管理器

    BCGControlBar教程:可視化管理器


    BCGControlBar庫框架允許您創(chuàng)建各種應(yīng)用程序“skins”并輕松更改用戶界面元素的外觀。雖然該產(chǎn)品具有超過25個(gè)預(yù)先構(gòu)建的視覺主題,但您可以輕松實(shí)現(xiàn)自定義主題。 在下圖中,您可以看到從“BCGPMediaPlayer”和“BCGPMSMoneyDemo”示例中截取的屏幕截圖:

    BCGControlBar

    該框架維護(hù)CBCGPVisualManager 類的全局對象,默認(rèn)情況下繪制以下GUI元素:

    • 條形邊框(OnDrawBarBorder)
    • 棒夾(OnDrawBarGripper)
    • 按鈕邊框(OnDrawButtonBorder)
    • 標(biāo)題按鈕(OnDrawCaptionButton)
    • 菜單邊框(OnDrawMenuBorder)
    • 分隔符(OnDrawSeparator)
    • 填充欄背景(OnFillBarBackground)
    • 填充按鈕內(nèi)部(OnFillButtonInterior)
    • 突出顯示菜單項(xiàng)(OnHighlightMenuItem)

    每個(gè)元素由單獨(dú)的虛函數(shù)顯示。 要實(shí)現(xiàn)自己的皮膚,您應(yīng)該執(zhí)行以下步驟:

    1. 從CBCGPVisualManager 類派生自己的類。
    2. 對于要自定義其外觀的每個(gè)GUI元素,將覆蓋相關(guān)的繪圖功能。 
    3. CBCGPVisualManager對象是一個(gè)單例。如果要實(shí)例化可視化管理器對象,則應(yīng)刪除以前的實(shí)例。使用CBCGPVisualManager :: GetInstance 靜態(tài)函數(shù)來訪問當(dāng)前實(shí)例。

    以下示例顯示如何在默認(rèn)和自定義可視管理器之間切換:

    void CMyApp::SetCustomTheme(int iThemeIndex)
    {
        switch (iThemeIndex)
        {
        case OFFICE_2016_CUSTOM_THEME:
            // CMyOffice2016Theme is derived from CBCGPVisualManager2016 class
            SetVisualTheme(BCGP_VISUAL_THEME_OFFICE_2016_COLORFUL, 
                RUNTIME_CLASS(CMyOffice2016Theme);
            break; 
    
        case VS_2017_CUSTOM_STYLE:
            // CMyVS2017Theme is derived from CBCGPVisualManagerVS2013 class
            SetVisualTheme(BCGP_VISUAL_THEME_VS_2013_BLUE, 
                RUNTIME_CLASS(CMyVS2017Theme);
            break; 
        }
    }

     

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();