Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
Альберт ©   (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 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.05 c
2-1187077994
Krants
2007-08-14 11:53
2007.09.09
DBGrid фон активной ячейки


2-1187263551
r.o.o.t
2007-08-16 15:25
2007.09.09
SQL запрос


15-1186408895
Sonia
2007-08-06 18:01
2007.09.09
Начальник заставляет любить JavaScript.....


2-1187197809
olevacho_
2007-08-15 21:10
2007.09.09
Звонки с мобильника


15-1186513264
Cyrax
2007-08-07 23:01
2007.09.09
Объявления коммерческого характера на рекламных щитах от частных





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский