Форум » GUI » APPEVENT в MiniGUI » Ответить

APPEVENT в MiniGUI

Петр: Предлагаю к включению в MiniGUI "нового" механизма обработки сообщений APPEVENT APPEVENT использует для работы сообщения из диапазона WM_APP..0xBFFF (WM_APP) Пример, м.б. не самый удачный [more][quote][pre2] /* * Harbour MiniGUI Accelerators Demo * (c) 2017 P.Ch. */ #include "minigui.ch" #include "i_appevents.ch" ////////////////////////////////////////////////////////////////////////////// #define WM_APP 0x8000 #define ev_Fire1 (WM_APP + 1) #define ev_Fire2 (WM_APP + 2) #define ev_Fire3 (WM_APP + 3) #define ev_FireOnce (WM_APP + 10) ////////////////////////////////////////////////////////////////////////////// FUNCTION Main() LOCAL lResult LOCAL bEvent1 := {|h,m| HB_SYMBOL_UNUSED(h), MsgInfo('ID:'+hb_NtoS(m), 'Event fired:[1]')} LOCAL bEvent2 := {|h,m| HB_SYMBOL_UNUSED(h), MsgInfo('ID:'+hb_NtoS(m), 'Event fired:[2]')} LOCAL bEvent3 := {|h,m| HB_SYMBOL_UNUSED(h), MsgInfo('ID:'+hb_NtoS(m), 'Event fired:[3]')} LOCAL bEvent4 := {|h,m| HB_SYMBOL_UNUSED(h), MsgInfo('ID:'+hb_NtoS(m), 'Event fired:[4]')} LOCAL bEvent0 := {|h,m| HB_SYMBOL_UNUSED(h), MsgInfo('ID:'+hb_NtoS(m), 'Event fired:[0]')} DEFINE WINDOW WinMain ; CLIENTAREA 600, 400 ; TITLE 'AppEvents Demo' ; MAIN ON APPEVENT ev_Fire1 ACTION bEvent1 OF ThisWindow.Handle ON APPEVENT ev_Fire2 ACTION bEvent2 OF ThisWindow.Handle ON APPEVENT ev_Fire3 ACTION bEvent3 OF ThisWindow.Handle UPDATE APPEVENT ev_Fire3 OF ThisWindow.Handle NOACTIVE UPDATE APPEVENT ev_Fire3 ACTION bEvent4 OF ThisWindow.Handle ON APPEVENT ev_FireOnce ACTION bEvent0 OF ThisWindow.Handle ONCE // REMOVE APPEVENT ALL OF ThisWindow.Handle ONCE DEFINE BUTTONEX FireButton1 ROW 290 COL 50 CAPTION "Fire 1" ACTION EMIT ev_Fire1 OF WinMain.Handle WIDTH 140 HEIGHT 40 END BUTTONEX DEFINE BUTTONEX FireButton2 ROW 340 COL 50 CAPTION "Fire 2" ACTION EMIT ev_Fire2 OF WinMain.Handle WIDTH 140 HEIGHT 40 END BUTTONEX DEFINE BUTTONEX FireButton3 ROW 290 COL 200 CAPTION "Fire 3" ACTION EMIT ev_Fire3 OF WinMain.Handle WIDTH 140 HEIGHT 40 END BUTTONEX DEFINE BUTTONEX FireButton4 ROW 340 COL 200 CAPTION "Fire Once" ACTION EMIT ev_FireOnce OF WinMain.Handle WIDTH 140 HEIGHT 40 END BUTTONEX END WINDOW WinMain.Center WinMain.Activate RETURN 0 [/pre2][/quote][/more] Работа над реализацией механизма APPEVENT в основном закончена Удачи в тестировании. Если кто-то сочтет APPEVENT небесполезной игрушкой - просите Григория о включении в состав MiniGUI, если нет, то нет

Ответов - 23, стр: 1 2 All

Петр: SergKis пишет: #define MAX_EVENTS 64 т.е. если у меня 64 окна, я их спокойненько пронумеровал +1...+64 и чудненько имею по 1 APPEVENT у каждого. Вы имеете 64 события ON (повторяющиеся) на одно окно или 4096 событий на 64 окна. при этом они должны лежать в диапазоне WM_APP..WM_APP + MAX_EVENTS Все сказанное справедливо по отношению и к событиям ONCE (однократные события). Для WINEVENT (там MAX_EVENTS тоже используется) вы имеете еще 64 события ON/ONCE на одно окно, при этом события лежат в диапазоне 0..WM_APP + MAX_EVENTS + практически неограниченное к-во событий вы можете обрабатывать в оконной функции (events func) Если кому-то этого буде мало - можно спокойно переопределить MAX_EVENTS и перекомпилировать библиотеку.

SergKis: Петр пишет Если кому-то этого буде мало В связи с MESSAGEONLY myWnd EVENTS myWndEvents TO hwnd и этого много, т.к. пока, применения, кроме присвоения номера окну (регистрация) для доступа к конфигурации и др. ресурсам программы не вижу. MESSAGEONLY myWnd EVENTS myWndEvents TO hwnd покрывает мои потребности, особенно, если Set\GetProp могут сохранять\возвращать ссылку на объект, hash. Если еще убрать во внутрь базу WM_USER, WM_APP (+ и - делать там), то и исп. проще, без доп. обвесов своими ф-ями. По MESSAGEONLY только один вопрос, как перевести в версию hmg 2.07, для совместимости.

Петр: SergKis пишет: По MESSAGEONLY только один вопрос, как перевести в версию hmg 2.07, для совместимости В чем уникальность этой версии, чтобы уделять ей какое-то внимание?




полная версия страницы