|
Цвет текста панелей в StatusBar
|
|||
---|---|---|---|
#18+
С чем только не ковырялся, но этого никогда не делал. Отображаю в StatusBar к примеру состояние сервиса. Хочу для наглядности: Запущен - синий Остановлен - красный Запускается - зеленый и т.п. (желание нормальное) Слово OwnerDraw я не люблю, это обычно в противоречии со стилями системы. Куда копать грамотно? Custom_draw? GDI на hdc? Или сообщение какое отловить? С Listview - Custom_draw - делал(в .Net кстати есть реализация этого, но кривоватая). C кнопками кажется через GDI цветной текст рисовал. Неохота конечно этим заниматься. Думал, есть готовые "свойства". ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2017, 15:20 |
|
Цвет текста панелей в StatusBar
|
|||
---|---|---|---|
#18+
Ну, вопрос в принципе решаем как раз через OwnerDraw панелей. И "системные стили" в данном случае не страдают (я не заметил). Событие StatusBar.DrawItem Код: 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.
Буквы скачут немного если форму дергать, а так нормально. По хорошему это конечно не через OwnerDraw бы сделать. Правильный метод SetTextColor для родного текста в нужном месте или чето еще, но не понятно куда это можно вставить для StatusBar. WM_CTLCOLOR<...> для него вроде нет, Custom Draw также так понял отдыхает. Да и .handle только у самого StatusBar, у панелей вроде как не наблюдается. Наверно на этом варианте остановлюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2017, 00:20 |
|
Цвет текста панелей в StatusBar
|
|||
---|---|---|---|
#18+
Дмитрий77Буквы скачут немного если форму дергать, А, понял почему. Они скакать начинают, когда места начинает не хватать. Текст в этом случае нормально должен обрезаться, а не пытаться уместиться. Т.е. надо ставить заведомо большую горизонтальную ширину. Не надо привязываться к sbdevent.Bounds.Width, Me.Width в самый раз (ширина формы). Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2017, 00:32 |
|
Цвет текста панелей в StatusBar
|
|||
---|---|---|---|
#18+
Да не, похоже это единственный грамотный способ. SB_SETTEXT message If wParam is SBT_OWNERDRAW, ... The parent window must interpret the data and draw the text when it receives the WM_DRAWITEM message. И .Net в данном случае избавляет от гимора c API-структурами. Типа пример на C: Display colored text on Status Bar Тоже самое делает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2017, 01:01 |
|
Цвет текста панелей в StatusBar
|
|||
---|---|---|---|
#18+
Дмитрий77, Ночью надо спать, а статусбары раскрашивать! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2017, 09:50 |
|
Цвет текста панелей в StatusBar
|
|||
---|---|---|---|
#18+
Дмитрий77, походу, всё на WinAPI делает, нафига ему тогда WinForms не понятно :) помню он и на WPF с WinAPI пытался делать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2017, 19:01 |
|
Цвет текста панелей в StatusBar
|
|||
---|---|---|---|
#18+
Roman Mejtesпомню он и на WPF с WinAPI пытался делать :) Чужих заслуг мне не приписывай и чуши не пиши. WPF я никогда даже не пытался - оно с API ничего общего не имееет. Roman MejtesДмитрий77, походу, всё на WinAPI делает, нафига ему тогда WinForms не понятно :) Что непонятно? WinForms реализует Common Controls в большинстве случаев (Listview, Treview, StatusBar...), обертка над теми же API. Так же как и устаревшая VB6. Что с одной стороны упрощает жизнь во многих случаях (не надо писать API-простыни), с другой стороны работаешь с "родными" системными контролами и можно если что "подрихтовать" через API. Это очень удобно и менее трудозатратно чем ваять все на чистом API с нуля. Жаль VB6 задвинули, там был именно Native (+ те удобства о которых говорю), без "управляемого кода", что по сути своего рода дурдом, а какие другие варианты. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2017, 22:09 |
|
Цвет текста панелей в StatusBar
|
|||
---|---|---|---|
#18+
Дмитрий77а какие другие варианты c/c++ ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2017, 00:58 |
|
Цвет текста панелей в StatusBar
|
|||
---|---|---|---|
#18+
ИзопропилДмитрий77а какие другие варианты c/c++ Где там Дмитрий77+ те удобства о которых говорю??? 20248619 Application.StartupPath IO.Path.GetDirectoryName(FilePath) IO.Path.Combine(Directory, "Proga.exe") В C без всего этого молча вешаешься. Мож хватит уже из пустого в порожнее переливать. Моя позиция предельно ясна и аргументирована. P.S. Но лучше VB6 ничего не было. К сожалению он считай сдох (как минимум сидеть в VB6 студии 98г. выпуска крайне некомфортно). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2017, 01:35 |
|
Цвет текста панелей в StatusBar
|
|||
---|---|---|---|
#18+
Дмитрий77Моя позиция предельно ясна и аргументирована. и безнадёжна, говоря шахматным языком ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2017, 01:57 |
|
Цвет текста панелей в StatusBar
|
|||
---|---|---|---|
#18+
Дмитрий77...WinForms реализует Common Controls в большинстве случаев (Listview, Treview, StatusBar...), обертка над теми же API. Так же как и устаревшая VB6. Что с одной стороны упрощает жизнь во многих случаях (не надо писать API-простыни), с другой стороны работаешь с "родными" системными контролами и можно если что "подрихтовать" через API. Это очень удобно и менее трудозатратно чем ваять все на чистом API с нуля. Жаль VB6 задвинули, там был именно Native (+ те удобства о которых говорю), без "управляемого кода", что по сути своего рода дурдом, а какие другие варианты. Ну так и используй дНет + ВинФормс. Им пока конец жизни (EOL) не обещали. VB6 ровно такой же нативный как и дНет. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2017, 02:37 |
|
Цвет текста панелей в StatusBar
|
|||
---|---|---|---|
#18+
SiemarglНу так и используй дНет + ВинФормс. Ну дык и использую. По существу вопроса есть что сказать? Хотя чего говорить. Решен вопрос во втором посте. Уже имплементировал решение куда надо. К чему этот базар? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2017, 02:50 |
|
Цвет текста панелей в StatusBar
|
|||
---|---|---|---|
#18+
SiemarglVB6 ровно такой же нативный как и дНет. Здесь не согласен. В VB6 что пишешь, то и получаешь (как и в C). А здесь надо быть начеку из-за того же "мусорщика". В .Net часты случаи, когда применяешь API, а они не применяются, потому что некий внутренний (не-"найтивный" так сказать) механизм придуманный разработчиками .Net этому мешает (пример тому .Net-овские Tooltip-ы в Listview и Treview, которые мешают воспользоваться найтивными стилями). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2017, 03:02 |
|
|
start [/forum/topic.php?fid=20&fpage=47&tid=1400020]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 271ms |
total: | 390ms |
0 / 0 |