Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.09;
Скачать: CL | DM;

Вниз

поймать событие перерисовки РЕГИОНА ПОД конкретным окном   Найти похожие ветки 

 
Альберт ©   (2007-03-10 17:18) [0]

привет. есть окошечко)) каким способом можно узнать что под ним что-то изменилось?))


 
GrayFace ©   (2007-03-13 12:57) [1]

Никак))


 
Альберт ©   (2007-03-16 01:07) [2]

вау прикольно)) а может быть ловить события для окошечек под ним?)) а потом перерисовывать


 
GrayFace ©   (2007-03-16 16:28) [3]

Дак они же под ним. С чего им вообще перерисовываться?


 
clickmaker ©   (2007-03-16 16:52) [4]


> каким способом можно узнать что под ним что-то изменилось?))

если этого не видно, то считай, что ничего не изменилось))


 
Альберт ©   (2007-03-17 22:57) [5]

я имею ввиду получить события перерисовки окон, которые находятся под моим. я ручками реализовываю переменную прозрачность окошка и его компонентов.


 
homm ©   (2007-03-17 23:39) [6]

> я ручками реализовываю переменную прозрачность окошка и
> его компонентов.

Еще не научился получать содержимого окна, а цже реализовываешь? :)
ИМХО, ничего у тебя не выйдет. ВинАПИ на это не способен, я говорю как человек хоршо знакомый с природой виндовой реализации событий и действий по перерисовки :) Копй в сторону DirectX и Layout окон (последнее только для win2k+)


 
Альберт ©   (2007-03-17 23:56) [7]


> Еще не научился получать содержимого окна, а цже реализовываешь?
>  :)


я что там заморачиваться?)) getdc(0) и проблем нет никаких. смешиваешь по маске прозрачности со своим окном. проблема-то в другом. как часто мне нужно обновлять окошечко, чтобы все было на высоте?)


>  Копай в сторону DirectX и Layout окон (последнее только
> для win2k+)


не пойдет. раскопал уже. не пошло.


 
homm ©   (2007-03-18 05:47) [8]

> я что там заморачиваться?)) getdc(0) и проблем нет никаких.

Весьма смутное понимание у Вас о вопросе. Проблемы в том, что поверх Ваше окно лежит, которое тоже в этой же DC и отображается.


 
Альберт ©   (2007-03-18 17:57) [9]

ну что вы говорите! а вот так пробовали делать со своим окном?

WINDOWS.SetWindowLong(W, GWL_EXSTYLE, GetWindowLong(W, GWL_EXSTYLE) or WS_EX_LAYERED);

WINDOWS.SetLayeredWindowAttributes(W, 0, 255, LWA_ALPHA);

и не видно его вообще для getdc


 
homm ©   (2007-03-18 19:02) [10]

> ну что вы говорите!

Клиника не здесь.

Вы же в [7] сказали что Layered окна Вам не подходят (я правда с написанием ошибся).

И зачем тогда ручками? Layered окна вполне понимают "переменную прозрачность" (если я правильно понял, о чем Вы). Поищите пример. Могу выслать ели нужно.


 
Альберт ©   (2007-03-18 19:12) [11]

моя задача заключается в:

Работаю с чужим окном. В нем есть 2 объекта:
- Internet Explorer_Server
- Adobe Flash

как мы знаем/не знаем Flash в IE рисуется 3мя способами:
1. Window - создается окно на ie
2. Opaque Windowless - окно не создается, а сразу рисуется Flash Movie
3. Transparent Windowless - тоже самое, что и 2), но рисуется как картинка с прозрачностью для ie.

У меня есть цель нарисовать то, что находится под чужим окном (getdc(0)) на объекте Internet Explorer_Server, но при условии, что на него наложится полупрозрачный ролик  Adobe Flash (3 способ рисования)


 
Альберт ©   (2007-03-18 19:16) [12]

применяю к чужому окну

WINDOWS.SetWindowLong(W, GWL_EXSTYLE, GetWindowLong(W, GWL_EXSTYLE) or WS_EX_LAYERED);
WINDOWS.SetLayeredWindowAttributes(W, 0, 255, LWA_ALPHA);

теперь его не видит getdc(0).

рисую в бэкграунде getdc(0), а на нем Flash и прочее содержимое.
вопрос только в частоте обновления этой картинки в ie


 
Альберт ©   (2007-03-18 19:24) [13]

мне не нужно каждый промежуток создавать файл с картинкой,нужно тогда, когда в это есть необходимость.


 
Альберт ©   (2007-03-18 19:53) [14]

не обращайте внимания, что я написал выше))) сабж тот же))


 
homm ©   (2007-03-18 20:17) [15]

Задачка действительно нетривиальна, и при первом рассмотрении похоже не имеет других решений...

> я имею ввиду получить события перерисовки окон, которые находятся под моим.

События других окон получаются хуками (SetWindowsHookEx), но черт знает насколько это эффективно в данной ситуации. Придется еще появление новых окон мониторить все время, на них ставить хуки тоже. Сплошная излишняя нагрузка на систему.


 
Альберт ©   (2007-03-18 23:28) [16]

по ходу придется создавать массив из хэндлов окон, которые находятся под ним. ловить события смены положения окна и обновлять массив.. да еще WM_PAINT ловить.. а насчет альтернативы может стоит подумать.

а говоря о загрузке системы, ну я сделал ловлю кликов, ничего не видно по загрузке системы.. и все-таки придется выборочно ставить хуки на приложения. wm_paint - частое событие. в этом недостаток..

вот еще хотелось уточнить  по поводу рисования самой картинки в ie. есть там вроде ipicture. может с этим повозиться? просто в чем проблема - окно чужое. нужен доступ к интерфейсу, а пока доступ к нему думается только через встраивание своего актив икса. но опять же надо связать глобальные данные дллки с ним. гемор. какие мысли, посоветуйте.


 
Альберт ©   (2007-03-20 00:12) [17]

ну хоть что-нибудь напишите)) анекдот например))


 
homm ©   (2007-03-20 00:34) [18]

> ну хоть что-нибудь напишите)) анекдот например))

Ну хорошо :)


> по ходу придется создавать массив из хэндлов окон, которые
> находятся под ним.
Как Вы определите, под ним ли сейчас это окно. а если нет, то не станет ли оно под ним позже? Никак. Отсюда - хранить нужно все окна, периодически сканирую систему, получая текущие окна, сравнивая их с сохраненным списком, и устанавливая хуки на "вновь прибывшие"... Ну не выход это, имхо. Задача у Вас странная, почему окно эксплорера не вашего приложения? Почему приходится лезть в чужое?


 
Альберт ©   (2007-03-20 11:09) [19]


> Как Вы определите, под ним ли сейчас это окно

По координатам


> станет ли оно под ним позже


ловим событие  ресайза и смены положения окон


> Задача у Вас странная, почему окно эксплорера не вашего
> приложения? Почему приходится лезть в чужое


Это точно, что странная.. реализация данного приложения предполагает его использование во всех сферах применения дизайна. смешно наверное, поясню.

принципы:
 маленький размер
 отделение UI от сервиса. нагрузка вычислений никак не отражается на пользовательском интерфейсе.
 гибкость. изменение оформления программы без внесения изменений в код. это реализуется использованием движка ie. в чем фишка. мы знаем, что проблемой основной при использовании браузера является запрет небезопасных актив икс, гемор с настройками по умолчанию (неотображение рисунков и тд), что неприемлимо для меня, невозможность обращения содержимого одного фрейма к содержимому другого с разными доменами.. и так далее.. решение заключается в использовании mshta. создаются окошки с разметкой html и они связываются с программой. можно, конечно, использовать альтернативы, созданные на базе WebBrowser, но они много весят



Страницы: 1 вся ветка

Текущий архив: 2007.09.09;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.023 c
15-1187190128
WhiteRaven
2007-08-15 19:02
2007.09.09
Подскажите какие нужны драйвера на видео карту


15-1187018389
лолкин
2007-08-13 19:19
2007.09.09
Может кто-то на пальцах объяснить механизм работы LoadLibrary?


15-1186674765
@!!ex
2007-08-09 19:52
2007.09.09
Как убрать звук?


15-1187156432
zdm77
2007-08-15 09:40
2007.09.09
Архивирование


15-1186354511
lookin
2007-08-06 02:55
2007.09.09
За что уважаю ДДТ...