Вверх ↑
Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
#1: 2004-09-10 17:47:56 ЛС | профиль | цитата
У этого элемента есть данные Close, описание к которому оборвано на полуслове.

Имеет смысл сделать onClose, которое сработает, когда форму будут пытаться закрыть. Причем обработку события onClose нужно провести за один проход (во время обработки сообщения WM_CLOSE до возврата кода), чтобы выполнилась цепочка действий и далее WndProc сама бы обработала закрытие формы как обычно.

Аналогично можно сделать следующее.

1) Данные или свойство CloseWindows 0/1. Если 1, то оконная функция при получении WM_QUERYENDSESSION и WM_ENDSESSION должна вернуть FALSE. Тогда если юзер попытается выйти из системы или завершить винду, последняя разошлет всем WM_QUERYENDSESSION и если хоть одно приложение вернет FALSE, то выход отменяется.

2) Событие onCloseWindows. При получении WM_QUERYENDSESSION нужно обработать все, что повесили на событие и вернуть TRUE, чтобы не мешать винде завершаться.

Не знаю как там хиасм работает, но смысл в том, чтобы оба события, изначально приходящие из оконной функции, были обработаны до того, как функция вернет код на полученное сообщение. Иначе onCloseWindows потеряет всякий смысл - прога хоть и сделает что-то полезное, но тем самым нарушит процесс завершения винды.
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Администрация
Ответов: 15294
Рейтинг: 1518
#2: 2004-09-10 18:59:33 ЛС | профиль | цитата
Подсказку исправлю.

Событие OnClose добавил, однако контроль выхода из программы удобнее делать так
<table><tr><td class=quota>
Add(MainForm,3470,49,217)
{
Left=21
Top=105
Width=400
Height=300
Align=0
Color=-16777201
AlphaBlendValue=255
Caption="Form"
BorderStyle=2
WindowsState=0
Icon=[]
ShowType=0
TaskBar=0
DragForm=1
Visible=0
Picture=[]
SavePosition=0
SavePosName="MyProject"
Point(Close)
link(Close,45618GetData,[])
}
Add(EventFromData,45618,49,154)
{
link(onEvent,15452doMessage,[])
}
Add(Math,44808,161,154)
{
OpType=1
Op1=0
Op2=1
ResultType=0
link(onResult,45618doData,[(203,160)(203,144)(39,144)(39,160)])
}
Add(Message,15452,105,154)
{
Message=""
Caption=""
Type=1
Icon=0
link(onMessage,44808doOperation,[])
}
</td></tr></table>
(код для версии 3.14)

И все остальные события с подтвержлением удобнее представлять в таком виде.
карма: 26
0
Ответов: 235
Рейтинг: 0
#3: 2004-09-16 14:36:50 ЛС | профиль | цитата
А точка onShow работает? или я чтото не так делаю.
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#4: 2004-09-16 18:41:04 ЛС | профиль | цитата
Работает
<table><tr><td class=quotea>
Add(MainForm,41740,28,133)
{
Left=21
Top=105
Width=400
Height=300
Align=0
Color=-16777201
AlphaBlendValue=255
Caption="Form"
BorderStyle=2
WindowsState=0
Icon=[]
ShowType=0
TaskBar=0
DragForm=1
Visible=0
Picture=[]
SavePosition=0
SavePosName="MyProject"
Point(onShow)
link(onShow,5161doMessage,[])
}
Add(Message,5161,105,175)
{
Message=""
Caption=""
Type=0
Icon=0
}
</td></tr></table>

карма: 26
0
4
Сообщение
...
Прикрепленные файлы
(файлы не залиты)