как добавить в IE тулбар картинки с разным размером?
От:
Аноним
Дата:
03.03.09 14:47
Оценка:
в CToolBarCtrl используеться CImageList, в который можно добавлять только битмапы с фиксированными размерами( например все 16x16 ).
В гугл тулбаре есть картинки с разными размерами( лого больше, чем остальные ), в Spy++ видно, что окно класса "ToolbarWindow32" — такой же класс присваивает окну и CToolBarCtrl, т.е. гугл скорее всего использует его.
Re: как добавить в IE тулбар картинки с разным размером?
Здравствуйте, Аноним, Вы писали:
А>в CToolBarCtrl используеться CImageList, в который можно добавлять только битмапы с фиксированными размерами( например все 16x16 ).
А>В гугл тулбаре есть картинки с разными размерами( лого больше, чем остальные ), в Spy++ видно, что окно класса "ToolbarWindow32" — такой же класс присваивает окну и CToolBarCtrl, т.е. гугл скорее всего использует его.
2 тулбара в ребар, по другому не знаю как, если кто знает — делитесь
Re[2]: как добавить в IE тулбар картинки с разным размером?
От:
Аноним
Дата:
03.03.09 15:31
Оценка:
Здравствуйте, Richie, Вы писали:
R>Здравствуйте, Аноним, Вы писали:
А>>в CToolBarCtrl используеться CImageList, в который можно добавлять только битмапы с фиксированными размерами( например все 16x16 ).
А>>В гугл тулбаре есть картинки с разными размерами( лого больше, чем остальные ), в Spy++ видно, что окно класса "ToolbarWindow32" — такой же класс присваивает окну и CToolBarCtrl, т.е. гугл скорее всего использует его.
R>2 тулбара в ребар, по другому не знаю как, если кто знает — делитесь
1. У гугла одно окно — интересно, как они сделали.
2. А как с двумя? т.е. я создаю 2 класса от CToolbarCtrl, и добавляю их примерно так:
CRect rcClientParent;
CWnd* pWndParent = CWnd::FromHandle(m_hWndParent);//окно IE
pWndParent->GetClientRect(&rcClientParent);
if (!m_wndReflectionWnd.Create(NULL, NULL, WS_CHILD, rcClientParent, pWndParent, 0))
return false;
if (!m_wndToolBar.Create(rcClientParent, &m_wndReflectionWnd, this) )//this это класс реализующий интерфейсы с IEreturn false;
CRect rc;
m_wndToolBar.GetClientRect( &rc );
rcClientParent.left += rc.Width();
if (!m_wndToolBar2.Create(rcClientParent, &m_wndReflectionWnd, this) )
return false;
?
Re[2]: как добавить в IE тулбар картинки с разным размером?
От:
Аноним
Дата:
04.03.09 10:22
Оценка:
Здравствуйте, Richie, Вы писали:
R>Здравствуйте, Аноним, Вы писали:
А>>в CToolBarCtrl используеться CImageList, в который можно добавлять только битмапы с фиксированными размерами( например все 16x16 ).
А>>В гугл тулбаре есть картинки с разными размерами( лого больше, чем остальные ), в Spy++ видно, что окно класса "ToolbarWindow32" — такой же класс присваивает окну и CToolBarCtrl, т.е. гугл скорее всего использует его.
R>2 тулбара в ребар, по другому не знаю как, если кто знает — делитесь
если дабавлять 2 тулбара, надо один делать родителем другого, т.к. отображаеться только тот, окно которого возвращаеться в
STDMETHODIMP CBarBand::GetWindow(HWND *phWnd), и видимым он не становится, даже если вызывать ShowWindow( SW_SHOW ) в
STDMETHODIMP CBarBand::ShowDW(BOOL fShow)
Если один делать родителем другого, то при прорисовке почему-то невидимые области ( все, кроме комбобоксов и картинок на тулбаре ) прорисовываются черным, почему это может быть? Второй тулбар располагается в конце кнопок первого.
Re[2]: как добавить в IE тулбар картинки с разным размером?
От:
Аноним
Дата:
04.03.09 12:48
Оценка:
Здравствуйте, Richie, Вы писали:
R>Здравствуйте, Аноним, Вы писали:
А>>в CToolBarCtrl используеться CImageList, в который можно добавлять только битмапы с фиксированными размерами( например все 16x16 ).
А>>В гугл тулбаре есть картинки с разными размерами( лого больше, чем остальные ), в Spy++ видно, что окно класса "ToolbarWindow32" — такой же класс присваивает окну и CToolBarCtrl, т.е. гугл скорее всего использует его.
R>2 тулбара в ребар, по другому не знаю как, если кто знает — делитесь
Найдено было такое решение:
Создать ImageList с размером картинок равным размеру самой большой картинки, на маленьких картинках сделать лишнее пространство одним цветом,
который передать в качестве маски CImageList::Add. т.о. лишнее пространство будет прозрачным.
Re: как добавить в IE тулбар картинки с разным размером?
Здравствуйте, Аноним, Вы писали:
А>в CToolBarCtrl используеться CImageList, в который можно добавлять только битмапы с фиксированными размерами( например все 16x16 ).
А>В гугл тулбаре есть картинки с разными размерами( лого больше, чем остальные ), в Spy++ видно, что окно класса "ToolbarWindow32" — такой же класс присваивает окну и CToolBarCtrl, т.е. гугл скорее всего использует его.
я в своё время долго над этим бился и придумал только один простой workaround — делаешь текст кнопки, состоящий из пробелов. тогда кнопка сама подгоняется под размер. И еще, там надо бы вроде 2 imagelist'а цеплять, подробностей не помню
Re: как добавить в IE тулбар картинки с разным размером?
А>в CToolBarCtrl используеться CImageList, в который можно добавлять только битмапы с фиксированными размерами( например все 16x16 ). А>В гугл тулбаре есть картинки с разными размерами( лого больше, чем остальные ), в Spy++ видно, что окно класса "ToolbarWindow32" — такой же класс присваивает окну и CToolBarCtrl, т.е. гугл скорее всего использует его.
Задай тулбару стиль custom draw и рисуй рам любые картинки.
Re: как добавить в IE тулбар картинки с разным размером?