|
Граница Combobox при включенных стилях. Толщина и цвет.
|
|||
---|---|---|---|
#18+
Заметно только если Combo прозрачный. Не могу понять как бороться с жирной белой границей. Особенно заметно на "Вистах" -где кнопка в обычном состоянии белая и сливается с границей. Прозрачность делается (придаточный Listbox не рассматриваем) в основном за счет: WM_CTLCOLOREDIT при сабклассинге Combo. (TextBox в котором Combo отображает текст). Но, что интересно, на классике, если сабклассить контейнер в кот. сидит Combobox, то можно отработать еще один WM_CTLCOLOREDIT (4-я сверху картинка для классики выгодно отличается от3-ей). Т.е. получается, что кроме внутреннего TextBox есть еще и внешний? Или это "сам Combo"? Но при этом на "Вистах" и XP стиле эта вторая "доводка" (WM_CTLCOLOREDIT от сабклассинга контейнера) не срабатывает. Я хочу уменьшить толщину беложирной линии и м.б. поменять ее цвет. Есть идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2013, 01:52 |
|
Граница Combobox при включенных стилях. Толщина и цвет.
|
|||
---|---|---|---|
#18+
>Но, что интересно, на классике, если сабклассить контейнер в кот. сидит Combobox, то можно отработать еще один WM_CTLCOLOREDIT (4-я сверху картинка для классики выгодно отличается от3-ей). Т.е. получается, что кроме внутреннего TextBox есть еще и внешний? Или это "сам Combo"? hwnd того кто посылает этот WM_CTLCOLOREDIT = hwnd Combo, т.е. это он и есть Единственный видимый вариант - отрабатывать WM_PAINT в Combobox Тупо вырезать прямоугольник (ValidateRect), оставляя по 1 пикселю белого с каждой стороны, ну а прямоугольник заливать куском картинки. А текстбокс сквозь него "прорвется". Ну или врезать в этот вырезанный прямоугольник другой -под размер текстбокса (через InValidateRect). Как то так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Т.е. я вырезаю внутренность, оставляя внешнюю часть родной границы и родную кнопку. Предварит. результат для XP стиля виден на картинке (издеваюсь над верхним Combobox). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2013, 05:35 |
|
Граница Combobox при включенных стилях. Толщина и цвет.
|
|||
---|---|---|---|
#18+
Не, ну вроде все осилилось по методу как предположил. То что мне не нравится это из области рисования. К счастью код для XP и Виста темы совпадает по пикселям. Надо вырезать в WM_PAINT прямоугольник, в нем вырезать еще один. То что между ними - рисуем сами (кладем туда рамку из картинки) -ValidateRect. А то что по обе стороны - рисуется штатно - InValidateRect. Визуально - уменьшаем толщину белой рамки на 1px, а на "вистах" -справа где кнопка на 2px. И это смотрится уже совсем по другому. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
Ну и отрисовка рамки из картинки. Лишнего лучше не рисовать, поэтому рисуем только рамку из 4-х PatBlt: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2013, 14:00 |
|
Граница Combobox при включенных стилях. Толщина и цвет.
|
|||
---|---|---|---|
#18+
Ну и вот так выглядит: ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2013, 14:02 |
|
Граница Combobox при включенных стилях. Толщина и цвет.
|
|||
---|---|---|---|
#18+
Дмитрий77, по моему скромному мнению то чем Вы занимаетесь должно было уладиться так: кто-то ещё в бытность VB1 заметил эти проблемы с недостаточностью настроек и уже в VB2 это устранилось, а тут уже ВБ6 имеет, а воз и ныне там... и сто % в ВБ7 никто не собирается это улаживать - нужно же на форумах воздух гонять... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2013, 23:01 |
|
Граница Combobox при включенных стилях. Толщина и цвет.
|
|||
---|---|---|---|
#18+
катастрофа, А VB7 и не будет никогда. Есть VB.NET (2003,2005,2008,2010,2012) но там (вроде как) свои контролы (кстати с теми же проблемами и возможно с большими). VB6 по крайней мере позволяет в целом нормально и с ходу нарисовать штатные виндовые контролы в конструкторе и без API (допиливается то ведь далеко не все). Чего нельзя сказать про WinForms. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2013, 15:42 |
|
|
start [/forum/topic.php?fid=60&msg=38286102&tid=2156923]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 274ms |
total: | 422ms |
0 / 0 |