1. 程式人生 > >BCGControlBar教程:視覺化管理器

BCGControlBar教程:視覺化管理器

BCGControlBar Pro for MFC最新試用版下載請猛戳>>>

BCGControlBar庫框架允許您建立各種應用程式“skins”並輕鬆更改使用者介面元素的外觀。雖然該產品具有超過25個預先構建的視覺主題,但您可以輕鬆實現自定義主題。 在下圖中,您可以看到從“BCGPMediaPlayer”和“BCGPMSMoneyDemo”示例中擷取的螢幕截圖:

BCGControlBar

該框架維護CBCGPVisualManager 類的全域性物件,預設情況下繪製以下GUI元素:

  • 條形邊框(OnDrawBarBorder)
  • 棒夾(OnDrawBarGripper)
  • 按鈕邊框(OnDrawButtonBorder)
  • 標題按鈕(OnDrawCaptionButton)
  • 選單邊框(OnDrawMenuBorder)
  • 分隔符(OnDrawSeparator)
  • 填充欄背景(OnFillBarBackground)
  • 填充按鈕內部(OnFillButtonInterior)
  • 突出顯示選單項(OnHighlightMenuItem)

每個元素由單獨的虛擬函式顯示。 要實現自己的面板,您應該執行以下步驟:

  1. 從CBCGPVisualManager 類派生自己的類。
  2. 對於要自定義其外觀的每個GUI元素,將覆蓋相關的繪圖功能。 
  3. CBCGPVisualManager物件是一個單例。如果要例項化視覺化管理器物件,則應刪除以前的例項。使用CBCGPVisualManager :: GetInstance 靜態函式來訪問當前例項。

以下示例顯示如何在預設和自定義可視管理器之間切換:

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