Возникла такая проблема.
Был написан плигин к IE как Туулбар.
На него добавлается CToolbarCtrl с набором иконок.
После добавления XP Стилей через manifest и ресурсы возникла следующая проблеме.
Изменился размер тулбара.
Размер задаётся следующим образом.
class CCustomToolBarCtrl:
public CWindowImpl< CCustomToolBarCtrl, CToolBarCtrl >,
INT CCustomToolBarCtrl::GetPreferableHeight() const
{}
...
INT CCustomToolBarCtrl::GetPreferableHeight() const
{
CRect r;
GetItemRect( 0, &r );
return r.Height();
}
После чего отдаем этот размер в IE Через GetBandInfo.
После чего когда заргужаем туулбар без XP стиля размер нормальный. Включаем XP Стись размер остаётся прежним но CToolbarCtrl думает что он больше и не правильно отображается.
При убирании manifestа проблема исчезает. Но так же исчезает и прозрачность в иконках на контроле.
[]
H>После чего когда заргужаем туулбар без XP стиля размер нормальный. Включаем XP Стись размер остаётся прежним но CToolbarCtrl думает что он больше и не правильно отображается. H>При убирании manifestа проблема исчезает. Но так же исчезает и прозрачность в иконках на контроле.
Выскажу предположение, что на тулбаре есть кнопки со стилем BTNS_DROPDOWN. Была у меня такая-же бяка при наличии кнопок с таким стилем. Не поборол Пришлось на время забить. Хотя интерес к решению проблемы остался...
Здравствуйте, Flamer, Вы писали:
F>Выскажу предположение, что на тулбаре есть кнопки со стилем BTNS_DROPDOWN. Была у меня такая-же бяка при наличии кнопок с таким стилем.
Здравствуйте, Haiodo, Вы писали:
H>Здравствуйте, Flamer, Вы писали:
F>>Выскажу предположение, что на тулбаре есть кнопки со стилем BTNS_DROPDOWN. Была у меня такая-же бяка при наличии кнопок с таким стилем.
H>Именно такая кнопочка есть в наличии.
Я эту проблемму решил с помощью SetPadding для тулбара.
Т.е. определяешь, какая винда и если необходимо, ставишь паддинг нужный. Я его определил опытным путем.
Здравствуйте, Dzik, Вы писали:
D>Здравствуйте, Haiodo, Вы писали:
H>>Здравствуйте, Flamer, Вы писали:
F>>>Выскажу предположение, что на тулбаре есть кнопки со стилем BTNS_DROPDOWN. Была у меня такая-же бяка при наличии кнопок с таким стилем.
H>>Именно такая кнопочка есть в наличии.
D>Я эту проблемму решил с помощью SetPadding для тулбара. D>Т.е. определяешь, какая винда и если необходимо, ставишь паддинг нужный. Я его определил опытным путем.
Это не выход. Во-первых — "опытным путем", что уже есть плохо. Во-вторых, гуглевский тулбар не меняет своей высоты при включении/отключении тем. В-третьих, чуется мне, что SetPadding — черех ж.. гланды вырезать.
В общем, если это и решение, то, так сказать, уступчивое и половинчатое. Еще раз повторюсь — искал в сети полноценное решение — не нашел. Самому повторить функциональность поведения гугльбара при включении/отключении тем в свое время не удалось.
Может быть, если будет время и интерес, займусь снова. Пока — без надобности.
Здравствуйте, Flamer, Вы писали:
F>Это не выход. Во-первых — "опытным путем", что уже есть плохо. Во-вторых, гуглевский тулбар не меняет своей высоты при включении/отключении тем. В-третьих, чуется мне, что SetPadding — черех ж.. гланды вырезать.
F>В общем, если это и решение, то, так сказать, уступчивое и половинчатое. Еще раз повторюсь — искал в сети полноценное решение — не нашел. Самому повторить функциональность поведения гугльбара при включении/отключении тем в свое время не удалось.
F>Может быть, если будет время и интерес, займусь снова. Пока — без надобности.
гугл тулбар рисует тему черех Owner Draw. Поэтому у него таких проблем и нет.
Здравствуйте, Flamer, Вы писали:
D>>гугл тулбар рисует тему черех Owner Draw. Поэтому у него таких проблем и нет.
F>Да нет, не думаю, что все через Owner Draw . Причем Spy++ косвенно подтверждает, что Owner Draw там почти не при чем...
Хм, а как Вы определяете, Спаем, что гугл не .зает Оунер Дро?
Посмотрите гугловскую дллку. Она динамически загружает uxtheme.dll, которая как раз содержит функции по рисованию тем. К тому эе я не нашел в дллке манифеста.
Решать надежен паддинг или нет Вам, но у продуктом, в котором я использую паддинг пользуется немерянное кол-во юзеров и пока замечаний никаких.
Здравствуйте, Dzik, Вы писали:
D>Хм, а как Вы определяете, Спаем, что гугл не .зает Оунер Дро? D>Посмотрите гугловскую дллку. Она динамически загружает uxtheme.dll, которая как раз содержит функции по рисованию тем. К тому эе я не нашел в дллке манифеста.
Плохо искали. Манифест есть в dll. А по поводу owner draw — вполне допускаю, что таки да — был неправ и гугльбар сам отрисовывает кнопочки при использовании тем. Тогда зачем, собственно говоря, манифест в ресурсах? Я так мыслю, чтобы не мучиться с прорисовкой всего остального. Ну вот, с этим разобрались
D>Решать надежен паддинг или нет Вам, но у продуктом, в котором я использую паддинг пользуется немерянное кол-во юзеров и пока замечаний никаких.
Как обычно, существует несколько способов решения проблемы — мой и неправильный . Еще раз повторю: мне кажется, что менять высоту тулбара, да к тому-же основываясь на эмпирически вычисленной величине — неправильно. А то, что "пользуется немеренно юзеров" — извините, это ни о чем не говорит.
Лана, ни к чему этот спор не приведет.
Получается, что на данный момент есть 2 варианта решеие проблемы:
1)Owner Draw как гугл например
2)SetPadding как a9.com тулбар например.
Если кто придумает и опишет 3, более правильный способ, я буду просто счастлив, да и автор топика навенрное тоже.
F>Здравствуйте, Dzik, Вы писали:
D>>Хм, а как Вы определяете, Спаем, что гугл не .зает Оунер Дро? D>>Посмотрите гугловскую дллку. Она динамически загружает uxtheme.dll, которая как раз содержит функции по рисованию тем. К тому эе я не нашел в дллке манифеста.
F>Плохо искали. Манифест есть в dll. А по поводу owner draw — вполне допускаю, что таки да — был неправ и гугльбар сам отрисовывает кнопочки при использовании тем. Тогда зачем, собственно говоря, манифест в ресурсах? Я так мыслю, чтобы не мучиться с прорисовкой всего остального. Ну вот, с этим разобрались
D>>Решать надежен паддинг или нет Вам, но у продуктом, в котором я использую паддинг пользуется немерянное кол-во юзеров и пока замечаний никаких.
F>Как обычно, существует несколько способов решения проблемы — мой и неправильный . Еще раз повторю: мне кажется, что менять высоту тулбара, да к тому-же основываясь на эмпирически вычисленной величине — неправильно. А то, что "пользуется немеренно юзеров" — извините, это ни о чем не говорит.