Форум: "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