Controlli Rebar e bande
Lo scopo principale di un controllo rebar è quello di fungere da contenitore per finestre figlio, controlli di dialogo comuni, menu, barre degli strumenti e così via. Questo contenimento è supportato dal concetto di "banda". Ogni banda della barra di ripetizione può contenere qualsiasi combinazione di una barra gripper, una bitmap, un'etichetta di testo e una finestra figlio.
La classe CReBarCtrl
include molte funzioni membro che è possibile usare per recuperare e modificare le informazioni per una banda di barre di riesecuzione specifica:
GetBandCount Recupera il numero di bande correnti nel controllo rebar.
GetBandInfo Inizializza una struttura REBARBANDINFO con informazioni della banda specificata. Esiste una funzione membro SetBandInfo corrispondente.
GetRect Recupera il rettangolo di delimitazione di una banda specificata.
GetRowCount Recupera il numero di righe di banda in un controllo rebar.
IDToIndex Recupera l'indice di una banda specificata.
GetBandBorders Recupera i bordi di una banda.
Oltre alla manipolazione, vengono fornite diverse funzioni membro che consentono di operare su bande di ribar specifiche.
InsertBand e DeleteBand aggiungono e rimuovono le bande rebar. MinimizeBand e MaximizeBand influiscono sulle dimensioni correnti di una banda della barra di riesezione specifica. MoveBand modifica l'indice di una specifica banda della barra di spostamento. ShowBand mostra o nasconde un gruppo di barre di ripetizione dall'utente.
Nell'esempio seguente viene illustrata l'aggiunta di una barra degli strumenti (m_wndToolBar) a un controllo rebar esistente (m_wndReBar). La banda viene descritta inizializzando la rbi
struttura e quindi chiamando la InsertBand
funzione membro:
//load bitmap for toolbar background
m_RebarBitmap.LoadBitmap(IDB_BITMAP1);
//create a toolbar band
m_Toolbar1.Create(this, TBSTYLE_TRANSPARENT | TBSTYLE_FLAT);
m_Toolbar1.LoadToolBar(IDR_MAINFRAME);
REBARBANDINFO rbi = { 0 };
rbi.cbSize = sizeof(REBARBANDINFO);
rbi.fMask = RBBIM_BACKGROUND | RBBIM_CHILD | RBBIM_CHILDSIZE |
RBBIM_STYLE | RBBIM_TEXT;
rbi.fStyle = RBBS_GRIPPERALWAYS;
rbi.cxMinChild = 300;
rbi.cyMinChild = 50;
rbi.lpText = _T("Band #1");
rbi.cch = 7;
rbi.cx = 300;
rbi.hbmBack = (HBITMAP)m_RebarBitmap;
rbi.hwndChild = (HWND)m_Toolbar1;
m_Rebar.GetReBarCtrl().InsertBand(0, &rbi);