Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 13.08.2007, 04:53   #1
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Обработка WM_CLOSE

На сколько я понимаю, современная концепиця обработки событий от пользователя заключается в периодическом получении сообщений от внешних устройств, которые локализуются приложенеим в сообщения от гуёвых гаджетов и устройств, и заносятся в некий стек уникальный для каждого процесса на момент его выполнения.
В процессе своей работы процесс периодически черпает сообщения из стека и выполняет проассоциированную с ними функцию (карта сообщений в MFC [которая, насколько мне известно, являетя макро-командой и разворачиывается в соответсвтующий код]), или обновляет состояние внутренних переменных, наткнувшись на соответствующий запрос ( MouseHitи подобные в Blitz). После чего сообщение удаляется. Причём, входе обработки могут быть порождены новые сообщения (WM_CLOSE вызывает WM_DESTROY и WM_NCDESTROY [они провоцируются ф-цией DestroyWindow( ), которая была взывана ф-цией OnClose() - обработчиком для WM_CLOSE]).
Если Windows в ходе выполнения процесса обнаруживает "застой" в обработке сообщений (пользователь судорожно колошматит по зависшей форточке - а та выполняет громоздкий цикл, и, соответвенно, сейчас не происходит анализ сообщений - стек продолжает увеличиваться) - то она предлагает пользователю принудительно завершить работу приложения, обозначив её как "не отвечает".

Теперь вопрос:
В каких дебрях спрятана обработка события WM_CLOSE в прогах, скомпиленных Blitz3D. Ведь программа закрывается штатно, даже если она была прервана на выполнении цикла! Значит обработка сообщения происходит не при вызове соответствующих функий опроса (как было предположено выше), а отдельно - причём не понятно где: ну не через команду же прога это делает?
И ещё вопрос - как эффиктивнее всего реализовать перехват закрытия через WM_CLOSE на б3д?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 13.08.2007, 11:13   #2
jimon
 
Сообщений: n/a
Re: Обработка WM_CLOSE

impersonalis
про мультипоточность не думал ?
в bmax к примеру system hook висит отдельным потоком
тоесть и в blitz3d тоже все mousehit\keyhit обновляются отдельно

в общем есть либа которая перехватывает сообщение WM_CLOSE
для тебя специально потратил 40 секунд копаясь в архивах
в общем смотри атач, ето не особо то что тебе надо
но я думаю поймеш в какую сторону копать надо
 
Ответить с цитированием
Старый 13.08.2007, 11:45   #3
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Обработка WM_CLOSE

Сообщение от impersonalis
И ещё вопрос - как эффиктивнее всего реализовать перехват закрытия через WM_CLOSE на б3д?
Да просто callback установи на блицевское окно (SetWindowLong) и отлавливай какие нужно массаги.
(Offline)
 
Ответить с цитированием
Старый 13.08.2007, 14:37   #4
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Обработка WM_CLOSE

2jimon
хочешь сказать что программа выполняется как два коррелирующих процесса, т.е. две эдаких квази-проги?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 13.08.2007, 16:09   #5
jimon
 
Сообщений: n/a
Re: Обработка WM_CLOSE

impersonalis
тип того
 
Ответить с цитированием
Старый 13.08.2007, 19:54   #6
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Обработка WM_CLOSE

ГЫ, в этом BlitzClose тоже оконная функция-перехватчик ставится. А исходник-то какой ужасный.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка клавиатуры. GRAY_WOLF BugTracker 1 11.10.2009 22:00
Обработка массива. Abiron Алгоритмика 5 20.06.2009 01:02
Обработка нажатий клавиш Phantom Программирование 4 24.08.2008 23:02
Обработка клика Trilliput BlitzMax 13 28.11.2007 14:35
Обработка введёных данных Антон Борисович Основной форум 4 08.11.2006 20:57


Часовой пояс GMT +4, время: 05:15.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com