Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создание контролов в чужом окне

19K
25 августа 2007 года
Rainstorm
16 / / 29.03.2007
Возможно ли имея хэндл окна другого приложения создавать в них контролы? Эти контролы будут нормально работать и получать сообщения?
22K
25 августа 2007 года
Pastor
43 / / 16.05.2007
Возможно.... но этим контролам прийдется делать сабклассинг...
397
25 августа 2007 года
SergPas
527 / / 03.02.2007
Неужели без сабклассинга обойтись нельзя? И для чего конкретно проводить сабклассинг: для элемента управления или для оконной функции? И если провести сабклассинг для оконной функции приложения, то теряется функциональность приложения, разве не так?
19K
25 августа 2007 года
Rainstorm
16 / / 29.03.2007
Получается создать дочернее окно, но оно перекрывается другими контролами окна даже при WS_EX_TOPMOST, отрисовывается обрывками..

Может можно как-то на чужое окно наложить свое прозрачное, но чтобы контролы на моем прозрачном окне были непрозрачными и нормально работали поверх того? Это возможно? =)
355
25 августа 2007 года
<SCORP>
786 / / 21.10.2006
 
Код:
myWnd->BringWindowToTop();
30K
25 августа 2007 года
gerich_home
8 / / 25.08.2007
Здравствуй <SCORP>, заходи на форум VisualBasic -> Присоединяйтесь к совместному написанию программы!
Мне хочется организовать группу программистов. Нужна любая поддержка и идеи.
Язык программирования, на котором ты пишешь значения не имеет!
19K
25 августа 2007 года
Rainstorm
16 / / 29.03.2007
[QUOTE=<SCORP>;208240]
 
Код:
myWnd->BringWindowToTop();
[/QUOTE]

Не помогвет. К тому же WS_EX_TOPMOST и так на первое место в Z-order окно ставит.

Я что-то вообще никакой информации не смог нарыть про то, как свой контрол в чужое окно добавить.. Неужели так редко такие идеи возникают? ) То что это возможно как-то, знаю. А вот как... =)
397
26 августа 2007 года
SergPas
527 / / 03.02.2007
А что Вы хотите сделать, конкретней пожалуйста? Одним из вариантов могу предложить следующий. Открыть исполняемый файл в режиме редактирования ресурсов в одной из сред разработки- Microsoft Visual C++ или Borland C++ 5.02 (5.02-не выше). Поместить нужные контролы в окно и пересохранить файл. Если же нужно динамически создавать элементы управления, то проблемы возникают с их прорисовкой. В этом случае прийдётся создавать HOOK для того, чтобы отлавливать сообщение перемещения окна (и не только перемещения) и принудительно прорисовывать либо ту часть окна, в которой располагаются созданные Вами элементы управления, либо всё окно.
19K
26 августа 2007 года
Rainstorm
16 / / 29.03.2007
Цитата: SergPas
А что Вы хотите сделать, конкретней пожалуйста?


В окна покерных столов добавлять вывод некоторой статистики, вероятностей, кнопачки редактирования инфы об игроках.

Цитата:
Одним из вариантов могу предложить следующий. Открыть исполняемый файл в режиме редактирования ресурсов в одной из сред разработки- Microsoft Visual C++ или Borland C++ 5.02 (5.02-не выше). Поместить нужные контролы в окно и пересохранить файл.


Не, контролы должны добавляться динамически, и пользователь не должен это делать вручную =)

Цитата:
Если же нужно динамически создавать элементы управления, то проблемы возникают с их прорисовкой. В этом случае прийдётся создавать HOOK для того, чтобы отлавливать сообщение перемещения окна (и не только перемещения) и принудительно прорисовывать либо ту часть окна, в которой располагаются созданные Вами элементы управления, либо всё окно.


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

397
27 августа 2007 года
SergPas
527 / / 03.02.2007
Лично я бы применил в таком случае HOOK-функцию, в обработке которой и обновлял окно чужого приложения (UpdateWindow). Проверил... Работает... Элементы управления перерисовываются; побочные явления, связанные с перерисовкой, не наблюдаются. Здесь следует быть очень осторожным, так как могут возникать конфликты при накладке создаваемых программистом элементов управления на контролы чужого окна. И вместо дочернего окна класса "STATIC" применяй вывод текстовой информации в окно с помощью функции DrawText.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог