Rebar и Toolbar внутри VCL-ного TPanel
От: siphiuel1234  
Дата: 23.02.06 10:45
Оценка:
Привет всем.

Есть небольшая проблема — нужно создать Rebar c toolbar'ом внутри VCL-ного TPanel. Всё вроде бы создается, но никак не могу создать dragger'ы, которыми можно эти toolbar'ы таскать. Вот код, очень стандартный:

HWND WINAPI CreateRebar(HWND hwndOwner, int iButtonId)
{
REBARINFO rbi;
REBARBANDINFO rbBand;
RECT rc;
HWND hwndCB, hwndTB, hwndRB;
DWORD dwBtnSize;
INITCOMMONCONTROLSEX icex;

icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_COOL_CLASSES|ICC_BAR_CLASSES;
InitCommonControlsEx(&icex);
hwndRB = CreateWindowEx(WS_EX_TOOLWINDOW,
REBARCLASSNAME,
NULL,
WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|
WS_CLIPCHILDREN|RBS_VARHEIGHT|RBS_BANDBORDERS|
CCS_NODIVIDER|WS_BORDER,
0,0,0,0,
hwndOwner,
NULL,
NULL,
NULL);
if(!hwndRB)
return NULL;
// Initialize and send the REBARINFO structure.
ZeroMemory(&rbi, sizeof(rbi));

rbi.cbSize = sizeof(REBARINFO); // Required when using this
// structure.
rbi.fMask = 0;
rbi.himl = (HIMAGELIST)NULL;
if(!SendMessage(hwndRB, RB_SETBARINFO, 0, (LPARAM)&rbi))
return NULL;
// Initialize structure members that both bands will share.
rbBand.cbSize = sizeof(REBARBANDINFO); // Required
rbBand.fMask = RBBIM_COLORS | RBBIM_TEXT | RBBIM_BACKGROUND |
RBBIM_STYLE | RBBIM_CHILD | RBBIM_CHILDSIZE |
RBBIM_SIZE;
rbBand.fStyle = RBBS_CHILDEDGE | RBBS_FIXEDBMP |
RBBS_GRIPPERALWAYS;
rbBand.hbmBack = NULL;
rbBand.clrBack = GetSysColor(COLOR_BTNFACE);
//rbBand.cxHeader = 10;
// Create the toolbar control to be added.
hwndTB = CreateAToolBar(hwndRB, iButtonId);

// Get the height of the toolbar.
dwBtnSize = SendMessage(hwndTB, TB_GETBUTTONSIZE, 0,0);

// Set values unique to the band with the toolbar.
rbBand.lpText = "Tool Bar";
rbBand.hwndChild = hwndTB;
rbBand.cxMinChild = 0;
RECT rect;
GetClientRect(hwndTB, &rect);
rbBand.cyMinChild = rect.bottom — rect.top;
rbBand.cx = 250;

// Add the band that has the toolbar.
SendMessage(hwndRB, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand);

hwndTB = CreateAToolBar(hwndRB, iButtonId);

rbBand.hwndChild = hwndTB;
SendMessage(hwndRB, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand);
return (hwndRB);
}

Что можно сделать? Вообще, корректно ли передавать Handle VCL-ного обьекта в качестве parent'а? Заранее благодарен
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.