У этого элемента есть данные 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 потеряет всякий смысл - прога хоть и сделает что-то полезное, но тем самым нарушит процесс завершения винды.
Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
|
|||
карма: 0 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
Подсказку исправлю.
Событие 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) И все остальные события с подтвержлением удобнее представлять в таком виде. |
|||
карма: 27 |
|
Ответов: 235
Рейтинг: 0
|
|||
А точка onShow работает? или я чтото не так делаю.
|
|||
карма: 0 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
Работает
<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> |
|||
карма: 27 |
|
4