| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > свое поле ввода |
| Автор: RapMan 25.7.2009, 11:51 |
| Доброе время суток! У меня следующий вопрос: как можно сделать так чтобы использовать компоненты windows, но самому рисовать дизайн поля (например EDIT, RICHEDIT). Хочу сделать свое оформление для этих компонентов Заранее всем спасибо! |
| Автор: GoldFinch 25.7.2009, 12:06 |
| сабклассируй, и переопредели WM_DRAW |
| Автор: RapMan 25.7.2009, 12:18 |
| Можно пожалуйста поподробней, просто такое никогда не делал |
| Автор: RapMan 26.7.2009, 18:37 |
| разобрался с сабклассингом, но как узнать что рисовать? (например текст и скролбар) |
| Автор: GremlinProg 26.7.2009, 19:16 |
RapMan, конкретнее формулируй вопрос, либо подкрепи его картинкой какой-нибудь соответствующей, чтобы тебя поняли |
| Автор: RapMan 26.7.2009, 19:26 |
| вопрос в следующем: я хочу сделать свой стиль для richedit, то есть сделай другое оформление для scrollbar в нем Заранее спасибо! |
| Автор: GremlinProg 26.7.2009, 20:15 |
| RapMan, включаю третий глаз и начинаю сеанс телепатии! предполагаю, что тебе неизвестны координаты скроллбара и ты хотел бы их узнать, чтобы поверх системной раскраски компонента, навесить свою разом получить всю информацию не получится координаты скроллбара и состояния кнопок - с помошью GetScrollBarInfo размеры кнопок - GetSystemMetrics, дополнительные параметры(число линий прокрутки, скорость, сглаживание) - SystemParametersInfo стандартный вид кнопок - DrawFrameControl для XP-тем - координаты отдельных элементов - GetThemeBackgroundContentRect для определения, используется ли XP-темы - IsThemeActive |
| Автор: RapMan 26.7.2009, 20:27 |
| хм, сейчас попробую поподробней описать. я так понимаю мне нужно ловить WM_PAINT чтобы переписать дизайн прокрутки (или я ошибаюсь?) я хочу нарисовать свой скролбар и очень хорошо если бы разноцветный текст. не знаю какие сообщения отлавливать и как синхронизировать скролбар системы и свой |
| Автор: RapMan 27.7.2009, 00:59 | ||
| Спасибо, посмотрю... я имел ввиду второй вариант:
текст у RichEdit-а |
| Автор: RapMan 28.7.2009, 13:31 |
| сделал все следующим образом: написал я свой scrollbar и подключил к richedit-у используя функцию GetScrollBarInfo, но она корректно возвращает только если при создание richedit-а указать флаг WS_VSCROLL, но так как я рисую свой scrollbar , то мне не нужен он от венды, по этому как его можно выключить? Заранее всем спасибо! |
| Автор: GremlinProg 28.7.2009, 18:53 | ||
зачем выключать скроллбар? просто не используй его и все для этого достаточно просто не опираться на координаты GetScrollBarInfo, а резервировать свою область под свой сколлбар начинай смотреть вот эту тему, с 3 страницы: http://forum.vingrad.ru/index.php?showtopic=223828&view=findpost&p=1612530 когда начнет приходить понимание, что такое неклиентские координаты и как их использовать, перенеси этот опыт на скроллбар ps: может тогда заодно и свой RichEdit напишешь |
| Автор: RapMan 28.7.2009, 19:19 |
| да мне GetScrollBarInfo нужен только чтобы взять SIF_RANGE, то есть промежуток который нужно использовать для прокрутки. |
| Автор: GremlinProg 28.7.2009, 20:24 | ||
посчитай строки, в чем проблема? EM_GETLINECOUNT |
| Автор: RapMan 28.7.2009, 21:15 |
| Большое Человеческое Спасибо! Поставил бы + в репу, но пока нету такого права а еще вопросика 2 есть 1) как можно узнать текущую позицию скролбара? 2) как можно сделать фон richedit прозрачным? |
| Автор: GremlinProg 28.7.2009, 22:23 |
на выбор: GetScrollPos или GetScrollInfo все о скроллбарах: http://msdn.microsoft.com/en-us/library/bb787529(VS.85).aspx использовать EM_FORMATRANGE: http://msdn.microsoft.com/en-us/library/bb787875(VS.85).aspx |
| Автор: RapMan 28.7.2009, 22:41 |
| Большое Спасибо! |
| Автор: RapMan 30.7.2009, 11:10 |
| Доброе время суток! Как я только не извращался с Richedit он не делает то что нужно, решил написать свой с нуля, главная проблема Заранее всем откликнишимся спасибо!!!! |
| Автор: GremlinProg 30.7.2009, 19:59 |
| я вообще-то не всерьез делал это предложение: но с другой стороны, почему нет ) зайди в поиск и ищи слово rtf_printer, будут вопросы, пиши в той теме, т.к. переносам и словам она посвящена больше |