-
Доброго времени суток.
Мудрые люди (по другому и быть не может!), подскажите ...
Как делается форма, прозрачная для кликов ?
-
Чего-нибудь типа такого, наверное:
with Form^ do begin
ExStyle := ExStyle or WS_EX_LAYERED;
SetLayeredWindowAttributes(handle, TransporentColor, 0, LWA_COLORKEY);
end;
-
-
А по-моему человек о другом спрашивает.
> Как делается форма, прозрачная для кликов ?
Т.е. как я понял, пользователь кликает на форме, а она передает событие клика лежащему под собой компоненту (не обязательно этого-же приложения)
зы. Кому надо хороший телепатор, могу сказать где свой взял :D
-
Galkov - точно не то, да и потом вот этот параметр LWA_COLORKEY у меня не сработает (специфика приложения), а то бы и с регионами не пришлось бы возиться (приходится дополнительно маску создавать)...
Ссылка ANTPro тоже не про то ...
Как создать прозрачненькую (силами винды) и не прямоугольную форму я в курсе, а вот как, как правильно говорит homm сделать такую форму, которая клик бы передавала лежащему под собой объекту не знаю ...
???
-
> [3] homm © (18.11.06 13:43)
> Кому надо хороший телепатор, могу сказать где свой взял :D
Колись ;)
-
WM_NCHITTEST, HTTRANSPARENT?
-
У меня на форме находится включенный ShockwaveFlash ... И как быть в этом случае с HTTRANSPARENT ?
-
Замысле такой - эта форма всегда сверху (или снизу), но она не мешает пользователю... Через нее можно кликать и т.п. Но на форме тем самым постоянно крутится флэш-анимация ...
-
Разобрался... :) Теперь все ок...
-
Так рассказал бы как...
Мне в голову ничего не приходит, кроме sub-classing-а через SetWindowLong с индексом GWL_WNDPROC :(
-
SKA1997 © [9]
Разобрался... :) Теперь все ок...
Сие есмь тайна или можно рассказать это не таким умным? :)
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
вот и я задумался как бы подобное сделать.
хочу по случаю зимы украсить приложение летающими снежинками.
на на форме накидано всяких там вкладок, движков, ползунков, короче много чего.
ну заметив свойство transparent+mouseTransparent я было подумал что достаточно бросить поверх всего растянутый на всю форму скажем паинтбокс и рисувать на нем каждый такт таймера эти снежинки.
Гм.
однако он не стал прозрачным! клики сквозь него как положено проходят, на изображение нет.
Как сделать правильно?
Не делать же каждую снежинку отдельным контролом в самом деле.
-
> [15] Barloggg (22.10.07 10:48)
> однако он не стал прозрачным! клики сквозь него как положено
> проходят, на изображение нет.
Нужно включить прозрачность для всех дочерних элементов.
-
эмм... дочерних или тех что под ним?
ибо у этого паинтбокса нет дочерних.
хмм...значит ли это что всем вообще надо включать прозрачность?
-
> [17] Barloggg (22.10.07 14:16)
> хмм...значит ли это что всем вообще надо включать прозрачность?
Вообще конечно не логично…
Временно определи OLD_TRANSPARENT м включи у всех контролов, даблбуфер.
Дома поколдую, что-бы и в новой версии так можно было сделать.
-
Влдаимир, пропачте, пожалуста мою любимую процедурку %)
Result := TRUE;
if Sender.fTransparent and (not Sender.fParentRequirePaint) then begin
became to Result := TRUE;
if (Sender.fTransparent or Sender.fDoubleBuffered) and (Sender.FParent <> nil)
and Sender.FParent.fDoubleBuffered and (not Sender.fParentRequirePaint) then begin
AND with C^ do begin
if (C <> nil) and fTransparent then begin
became to with C^ do begin
if (C <> nil) and (fTransparent or fDoubleBuffered) then begin
-
Удалено модератором
-
Удалено модератором