Cómo crear controles de barra de rebar
Una aplicación crea un control de barra de rebar llamando a la función CreateWindowEx , especificando REBARCLASSNAME como la clase de ventana. La aplicación debe registrar primero la clase de ventana llamando a la función InitCommonControlsEx , especificando el bit ICC_COOL_CLASSES en la estructura INITCOMMONCONTROLSEX correspondiente.
Lo que necesita saber
Tecnologías
Requisitos previos
- C/C++
- Programación de la interfaz de usuario de Windows
Instrucciones
Crear un control rebar
En el ejemplo siguiente se crea un control de barra de rebar con dos bandas: una que contiene un cuadro combinado y otra que contiene una barra de herramientas. (Vea la ilustración en Acerca de los controles de barra de rebar). Estos controles se crean por separado y se pasan a la función de ejemplo como parámetros.
#define NUMBUTTONS 3
HWND CreateRebar(HWND hwndOwner, HWND hwndToolbar, HWND hwndCombo)
{
// Check parameters.
if ((hwndToolbar == NULL) || (hwndCombo == NULL))
{
return NULL;
}
// Initialize common controls.
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_COOL_CLASSES | ICC_BAR_CLASSES;
InitCommonControlsEx(&icex);
// Create the rebar.
HWND hwndRebar = CreateWindowEx(WS_EX_TOOLWINDOW,
REBARCLASSNAME,
NULL,
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
WS_CLIPCHILDREN | RBS_VARHEIGHT |
CCS_NODIVIDER | RBS_BANDBORDERS,
0,0,0,0,
hwndOwner,
NULL,
g_hInst, // global instance handle
NULL);
if(!hwndRebar)
{
return NULL;
}
// Initialize band info used by both bands.
REBARBANDINFO rbBand = { sizeof(REBARBANDINFO) };
rbBand.fMask =
RBBIM_STYLE // fStyle is valid.
| RBBIM_TEXT // lpText is valid.
| RBBIM_CHILD // hwndChild is valid.
| RBBIM_CHILDSIZE // child size members are valid.
| RBBIM_SIZE; // cx is valid
rbBand.fStyle = RBBS_CHILDEDGE | RBBS_GRIPPERALWAYS;
// Get the height of the toolbar.
DWORD dwBtnSize = (DWORD)SendMessage(hwndToolbar, TB_GETBUTTONSIZE, 0,0);
// Set values unique to the band with the toolbar.
rbBand.lpText = TEXT("");
rbBand.hwndChild = hwndToolbar;
rbBand.cyChild = LOWORD(dwBtnSize);
rbBand.cxMinChild = NUMBUTTONS * HIWORD(dwBtnSize);
rbBand.cyMinChild = LOWORD(dwBtnSize);
// The default width is the width of the buttons.
rbBand.cx = 0;
// Add the band that has the toolbar.
SendMessage(hwndRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand);
// Set values unique to the band with the combo box.
RECT rc;
GetWindowRect(hwndCombo, &rc);
rbBand.lpText = TEXT("Font");
rbBand.hwndChild = hwndCombo;
rbBand.cxMinChild = 0;
rbBand.cyMinChild = rc.bottom - rc.top;
// The default width should be set to some value wider than the text. The combo
// box itself will expand to fill the band.
rbBand.cx = 100;
// Add the band that has the combo box.
SendMessage(hwndRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand);
return (hwndRebar);
}
Temas relacionados