Уже 2 месяца как перевел свою большую прогу на версию МиниГуи 25.11 Update 1 (PRO)
Прога устойчиво работает, меньше стала падать и меньше стало подвисаний в программе, т.е.
потеря фокуса с окна перестало мучить пользователей (есть такое в МиниГуи)
Правда для этого пришлось переделать вызовы окон MODAL на события и правильно это делать !
Спасибо ОГРОМНОЕ Сергею !!!
У меня в большой проге ранее была большая проблема с вызовом окон MODAL,
схема примерно такая MAIN + STANDART + Modal(1) + Modal(2) + Modal(3)
После возврата из Modal(3) можно было переключиться на MAIN или STANDART окна и всё,
окна Modal прятались под MAIN окно.
После переделки на события и добавки кода - этого эффекта теперь нет (СПАСИБО Сергею !)
Вот код как правильно нужно вызывать окна:
o:Event(11, {|ow,ky,cn| // pressing buttons
Local lIsModal := _HMG_IsModalActive
Local obt := This.&(cn).Cargo
Local cBuf := ow:Cargo:cFocus
_HMG_IsModalActive := .T.
Modal_1(oWnd, ky, cn, obt:cObj, obt:aBClr, obt:nBtn, obt:cIcon)
_HMG_IsModalActive := lIsModal
AEval(HMG_GetForms(,.T.), {|oo| EnableWindow(oo:Handle) })
ow:Enabler(cn, .T.)
ow:Setfocus('Buff')
ow:Setfocus(cBuf)
Return Nil
} ) 
Вот этот проект полностью -
https://cloud.mail.ru/public/Kn2j/u4BX5e8hs Вообще за последние года два я полностью перешёл на события.
Удобней и понятней стало в коде - нажатие кнопок, ввода в GetBox, событий по окнам и т.д.
Конечно это требует перестройки в мозгах, но это того стоит !
В качестве примера как это делается смотрите в МиниГуи 26.01 (Standard)
проект C:\MiniGUI_2601\SAMPLES\Advanced\mg_zip
Пример создания/копирования архивов по сценарию:
1) темная тема в МиниГуи
2) фильтры по ТСБ по массиву
3) архивация и копирование файлов
4) меню на кнопках + контекстное меню и т.д.
Вот так примерно строяться окна:
DEFINE WINDOW ... MAIN ...
...
This.Cargo := oHmgData() ; o := This.Object ; owc := o:Cargo
oMenu := MenuMainBtn() // считать меню (кнопки, цвета, иконки, события и т.д.)
TopMenuButtons(owc,oMenu,nY,nX,,,nG,,nW,nH) // нарисовать меню на форме - menu_topButtons.prg
// события на форме
o:Event( 0, {|ow,ky| // ON INIT
....
o:Event({11,"_Help"}, {|ow,ky,cn| //
....
o:Event({12,"_Config"}, {|ow,ky,cn| //
....
o:Event(99, {|ow| ow:Release() })
END WINDOW
ACTIVATE WINDOW &cForm
Код короче, понятней, все действия в событиях и стабильней работает программа !
