как добавить в IE тулбар картинки с разным размером?
От: Аноним  
Дата: 03.03.09 14:47
Оценка:
в CToolBarCtrl используеться CImageList, в который можно добавлять только битмапы с фиксированными размерами( например все 16x16 ).

В гугл тулбаре есть картинки с разными размерами( лого больше, чем остальные ), в Spy++ видно, что окно класса "ToolbarWindow32" — такой же класс присваивает окну и CToolBarCtrl, т.е. гугл скорее всего использует его.
Re: как добавить в IE тулбар картинки с разным размером?
От: Richie Украина  
Дата: 03.03.09 15:04
Оценка:
Здравствуйте, Аноним, Вы писали:

А>в 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 это класс реализующий интерфейсы с IE
        return 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 тулбар картинки с разным размером?
От: Константин Л. Франция  
Дата: 04.03.09 13:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>в CToolBarCtrl используеться CImageList, в который можно добавлять только битмапы с фиксированными размерами( например все 16x16 ).


А>В гугл тулбаре есть картинки с разными размерами( лого больше, чем остальные ), в Spy++ видно, что окно класса "ToolbarWindow32" — такой же класс присваивает окну и CToolBarCtrl, т.е. гугл скорее всего использует его.


я в своё время долго над этим бился и придумал только один простой workaround — делаешь текст кнопки, состоящий из пробелов. тогда кнопка сама подгоняется под размер. И еще, там надо бы вроде 2 imagelist'а цеплять, подробностей не помню
Re: как добавить в IE тулбар картинки с разным размером?
От: sraider http://dvinogradov.blogspot.com
Дата: 04.03.09 21:55
Оценка:
А>в CToolBarCtrl используеться CImageList, в который можно добавлять только битмапы с фиксированными размерами( например все 16x16 ).
А>В гугл тулбаре есть картинки с разными размерами( лого больше, чем остальные ), в Spy++ видно, что окно класса "ToolbarWindow32" — такой же класс присваивает окну и CToolBarCtrl, т.е. гугл скорее всего использует его.

Задай тулбару стиль custom draw и рисуй рам любые картинки.
Re: как добавить в IE тулбар картинки с разным размером?
От: jed  
Дата: 15.08.09 21:23
Оценка:
Если не заморачиваться с CustomDraw, то вроде бы самый правильный вариант — каждую кнопку нестандартного размера делать дочерним тулбаром.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.