![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменение цвета фона чужого окна [D6, D7, Win2k, WinXP]
Teenager © (2006-09-13 23:15:00)Здравствуйте, знающие добрые люди :)
у мя возник очередной вопрос, который скорее всего неразрешим... как изменить цвет фона у чужого окна? по-идее - никак. Но мало ли :) Так же мне хотелось бы изменить имя класса чужого окна... но это должно быть еще нереальнее.
Заранее спасибо.
Ketmar (2006-09-22 00:30:00) [41]>[20] Teenager(c) 22-Sep-XLI A.S., 00:27
>ясно. жаль без объянений.
подумай сам. пойми, что движение мыши отлавливается постфактум. и что постоянно корёжить регион -- операция накладная.
Teenager (2006-09-22 00:27:00) [42]ясно. жаль без объянений. что ж, будем искать других путёв :)
Ketmar (2006-09-22 00:22:00) [43]>[18] Teenager(c) 21-Sep-XLI A.S., 23:58
>пиксел - куда указывает мышь в данный момент-
>делать "прозрачным" - и мышь всегда будет
>пробивать окно.....
фиговато нам.
Teenager (2006-09-21 23:58:00) [44]доступное объяснение... если смогу все-таки что-то сделать - напишу :)
может, сделаю частичную реализацию - т.е. буду ловить клики-мувы.. и посылать их форме внизу. мож че-то и выйдет.
Есть как бы еще один супербешеный вариант - для особых извращенцев - пришел только что в голову... посредством регионов ))) т.е. один пиксел - куда указывает мышь в данный момент- делать "прозрачным" - и мышь всегда будет пробивать окно.....
как вам, а? :)
Ketmar (2006-09-21 23:49:00) [45]тогда всё руками.
Teenager (2006-09-21 23:46:00) [46]эээ... а без дочернего никак! я ж компонентом хочу..
Ketmar (2006-09-21 23:37:00) [47]>[14] Teenager(c) 21-Sep-XLI A.S., 23:31
>Кетмар - блин, отот стиль, что ты мне
>посоветовал, не пропускает события :(((
пропускает. только не надо окно делать дочерним.
Teenager (2006-09-21 23:31:00) [48]Привет... а я думал, тут ничего больше не напишут :)
Кетмар - блин, отот стиль, что ты мне посоветовал, не пропускает события :(((
а насчет гугля и других поисковиков ты совершенно прав :)
Мне нужна комбинация стилей - чтобы пропускало...
WS_EX_LAYERED вроде подходит, но не для child windows. А я-то панельку юзаю...
короче говоря, есть уже прозрачная панелька, но через нее события не проходят... люди, найдите мне нужный стиииль :)
попиксельная прорисовка - тоже вариант конечно классный... но не думаю, что он пойдет.. надо ведь будет хукать пэйнт-мессаги нижележащего окна, и реагировать на это прорисовкой всей области.. и снова-таки.. может другой вариант- как-то рэндэрить чужое окно на свой битмап,[далее быстро его изменять в цветах] а потом уже его кидать на свою панель...
ваши предложения?
NickCoder (2006-09-21 20:53:00) [49]Я могу предложить только поменять системную политру, но в этом случае все окна будут иметь такой цвет!
Eraser (2006-09-21 15:06:00) [50]> [11] DVM © (21.09.06 15:02)
точно, так оптимальнее будет.
DVM (2006-09-21 15:02:00) [51]
> рисовать надо на WM_PAINT, но перед тем, как это сделает
> приложение.
Если речь об изменении фона, то может все таки на WM_ERASEBKGND ?
Eraser (2006-09-18 13:13:00) [52]> [9] Galiaf © (18.09.06 13:12)
рисовать надо на WM_PAINT, но перед тем, как это сделает приложение.
Galiaf (2006-09-18 13:12:00) [53]Звиняйте, долго меня небыло хотя говорил что ща прооверю =)... так уж вышло. Вот я глянул, если рисовать прямоугольник на окне то выходит что кнопки не перерисовываются но перерисовываются всякие label'ы больше не проверял т.к. перерисовка лабелов это недопустимо, вот на счет взятия цвета пикселя, идея подходит имхо только для не старых машин но вот если делать список всяких программ с готовыми параметрами(имею в виду что ты знаешь в какой програме где что нарисовано и не рисуешь на этом месте), т.е. ты указываешь какая это программа и твоя открывает соответствующий файл и ресует по параметрами взятыми от туда, кстати файл можно писать после первого запуска незнакомой программы и брать цвета пикселов тем самым записывая в файл где можно рисовать а где нельзя. В любом случае я могу сильно ошибаться, просто высказал свои мысли на эту тему.
Ketmar (2006-09-15 19:29:00) [54]могу. но севершенно не хочу. ибо есть гугль и ещё куча других поисковиков.
Teenager (2006-09-15 19:28:00) [55]если не сложно (!) , можете привести :) как это делать на ВинАпи - создавать окно, делать его прозрачным... выставить его поверх чужого окна - думаю, сумею ) надеюсь )
Ketmar (2006-09-14 22:40:00) [56]> [5] Teenager © (14.09.06 21:45)
нет. стиль задаётся при создании. иначе -- будет грустно. %-)
Teenager (2006-09-14 21:45:00) [57]спасибо! :) а что, идея норм? насчет верхнего окна? + а можно контрол (панель) сделать ПОЛУпрозрачной средствами ВинАпи и уже после создания прикрепить ей отэтот мегастиль? оч хотелось бы именно такой вариант (тонкости моей проги )
Ketmar (2006-09-14 19:52:00) [58]> [3] Teenager © (14.09.06 19:40)
клади поверх окно со стилем WS_EX_TRANSPARENT. оно, afair, пропускает мышиные события "насквозь".
Teenager (2006-09-14 19:40:00) [59]Eraser, да, скорее всего ты прав :( я такого делать не буду. уж слишком много версий чужого приложения мне прийдется поддерживать.
Galiaf, и ты прав... только то, что ты написал - делать совершенно низя... а жаль.
я вот подумал следующее...
а что если брать каждый пиксел чужого окна... переводить его в градацию серого - а оттуда - скажем в градации красного... таким образом чужое окно можно будет "перекрасить" полностью... также по идее можно будет регулировать параметры изменения цвета - чтобы частично цвет чужого окна оставался (для многоцветия)... только по идее такой процесс будет ресурсоемким и достаточно сложным :(
есть еще один вариант - поверх чужого окна рисовать свое - полупрозрачное и (например) красное - это тоже окрасит чужое окно в красный цвет... только при попытке кликанья на кнопки на чужом окне - события будут передаваться не ему, а поверхлежащему нашему полупрозрачному окну. как это изменить? как передавать события нижележащему окну - или дочерним окнам нежележащего окна - кнопкам например...?
как Вам мои варианты?
заранее спасибо, люди - за поддержку :)
Galiaf (2006-09-14 12:42:00) [60]можно взять хэндл окна и порсто нарисовать на нем прямоугольник нужного цвета, но на сколько я помню таким образом могут пострадать кнопки или текст этого окна, кажется будет рисоваться поверх всего, ща я гляну правда ли это...