![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| ZC1989 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: 1 Всего: 1 |
поискал по форуму и интернету но не нашёл нигде упоминания о том как можно поменять цвет рамки этого контрола со стилями Static Edge = true и Border = false
да вообще нигде не нашёл про то как менять цвет рамок, только текста и фона... это вообще возможно? по мсдн лажу но ничего найти не могу...может не так ищу... -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: нет Всего: 23 |
ZC1989, вроде нельзя. Если только свой контрол писать.
|
|||
|
||||
| Emura |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: 1 Всего: 1 |
это визуал студия? рамку вроде как рисует тема. можно например рисовать свою поверх, просабклассив эдит. а можно реализовать эдит самостоятельно. но эта задача не на один день и даже не на одну неделю, тем более если эдит мультилайн. к тому же надо знать винапи на зубок. сложно для новичка. Это сообщение отредактировал(а) Emura - 1.5.2010, 00:30 |
|||
|
||||
| ZC1989 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: 1 Всего: 1 |
Emura, у меня были мысли переписать контрол,я так и понял что пока не асилю.
а можно же убрать тогда в студии у этого контрола рамку вовсе,а как тогда нарисовать на нём её? сразу после отрисовки его же? и ещё,пробовал отлавливать сообщения для перерисовки, WM_COLOREDIT,в нём менял цвет текста SetTextColor, SetBkColor. и почему то фон менялся не под всем контролом, а только под набранным текстом 0.о п.с.: с кодом попробовать сейчас никак,с телефона сижу -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
| Emura |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: 1 Всего: 1 |
возможно есть какое-нибудь сообщение отвечающее за отрисовку рамки, но не припомню. если самому рисовать, то можно попробовать такой вариант.
сабклассим контрол отлавливаем WM_PAINT, в нем передаем WM_PAINT в процедуру по умолчанию и после что-то вроде:
возвращаем из процедуры 0
ИМХО не стоит заморачиваться с нестандартными контролами, окнами. 99% пользователей не оценит того огромного времени, которое потратиться на все эти дела! а если делать, то делать свои контролы полностью, и нужны будут обертки для всех стандартых операций, во внешнем виде которых не будет и намека на винапи. это сильно упростит разработку! ООП - обязательно Это сообщение отредактировал(а) Emura - 1.5.2010, 13:20 |
||||
|
|||||
| ZC1989 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: 1 Всего: 1 |
Emura, вот я сейчас попробовал сделать такую штуку, но не сабклассил едит
вот эта функция у меня напрямую вызывается в функции окна
и получает касяк, изза перерисовки фона мерцает слишком сильно весь контрол... а без перерисовки не получается очищать фон...в чём ошибка??? Добавлено через 1 минуту и 21 секунду на счёт того что бы сабклассить, я это не делал никогда...смутно понимаю что к чему...есть вариант без эксперементов сейчас сделать мне? Добавлено через 4 минуты и 21 секунду
я тут стремлюсь больше не для масс, программа узко специализирована...(для управления движком для сайта) поэтому видеть её будут люди связанные с этим...а они оценят я думаю) -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
||||
|
|||||
| Emura |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: 1 Всего: 1 |
ZC1989,
WM_CTLCOLOREDIT - никогда не использовал подобных сообщений, поэтому не могу сказать что к чему. если мне нужен какой-то контрол, то он делается "с чистого листа".
это эксперимент не сложный. наверное знаешь что любое окно использует свою оконную процедуру. сабклассинг ни что иное как замена этой процедуры на другую.
ок, хозяин-барин Это сообщение отредактировал(а) Emura - 1.5.2010, 14:57 |
||||||
|
|||||||
| ZC1989 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: 1 Всего: 1 |
Emura, WM_CTLCOLOREDIT посылается когда оконная процедура перерисовывает один из edit text, я из под такого сообщения для Static (WM_CTLCOLORSTATIC) меняю цвет и прозрачность фона, с ним приходят HWND и HDC контрола который нужно отрисовать, посути. этот же WM_PAINT как был бы если бы я сделал сабклассинг, насколько я понимаю...
я точно так же из него же сделал отрисовку рамок... хатя может серьёзно есть большая разница.. вопрос ещё такой (чтоб уж не перерывать щас кучу мануалок) если я сделаю для контрола свою оконную процедуру, то мне полностью придётся обрабатывать всё да? тоесть от цвета вывода до самого написания текста на экране? -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
ZC1989, рамка рисуется на WM_NCPAINT - если рамка в принципе есть. Достаточно перехватить это сообщение.
Но есть некоторая опасность, что в некоторых ситуациях будет проскакивать стандартная рамка (старые контролы Виндоус не всегда соблюдают собственные соглашения). Насчет эдита не знаю, нужно проверять. Еще вариант - сдалать контрол без рамки (без стилей WS_BORDER и прочая), но обработать WM_NCCALSIZE, чтобы таки сдвинуть клиентскую область вглубь контрола (на 1-2 пиксела, чтобы было где рамку рисовать). Рисовать, опять же, на WM_NCPAINT. -------------------- ... |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |