Erstellen von Steuerelementen für die Leiste
Eine Anwendung erstellt ein Rebar-Steuerelement, indem sie die CreateWindowEx-Funktion aufruft und REBARCLASSNAME als Fensterklasse angibt. Die Anwendung muss zuerst die Fensterklasse registrieren, indem sie die InitCommonControlsEx-Funktion aufruft und das ICC_COOL_CLASSES Bit in der zugehörigen INITCOMMONCONTROLSEX-Struktur angibt.
Wichtige Informationen
Technologien
Voraussetzungen
- C/C++
- Programmierung der Windows-Benutzeroberfläche
Anweisungen
Erstellen eines Rebar-Steuerelements
Im folgenden Beispiel wird ein Beleistensteuerelement mit zwei Bändern erstellt– eines mit einem Kombinationsfeld und ein weiteres Steuerelement mit einer Symbolleiste. (Siehe Abbildung unter Informationen zu Rebar-Steuerelementen.) Diese Steuerelemente werden separat erstellt und als Parameter an die Beispielfunktion übergeben.
#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);
}
Zugehörige Themen