Создание элементов управления перебарами
Приложение создает элемент управления перебары, вызвав функцию CreateWindowEx, указав REBARCLASSNAME в качестве класса окна. Приложение должно сначала зарегистрировать класс окна, вызвав функцию InitCommonControlsEx, указав ICC_COOL_CLASSES бит в сопровождающей структуре INITCOMMONCONTROLSEX.
Это важно знать
Технологии
Необходимые компоненты
- C/C++
- Программирование пользовательского интерфейса Windows
Instructions
Создание элемента управления "Перерезка"
В следующем примере создается элемент управления перебора с двумя полосами— один из них содержит поле со списком, а другой — панель инструментов. (См. иллюстрацию в О элементах управления перебары.) Эти элементы управления создаются отдельно и передаются в пример функции в качестве параметров.
#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);
}
См. также