Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2006-11-09 14:35:36 ЛС | профиль | цитата
Да, блинннн...
У SVN крейсерская скорость 3К/сек.

Chesh, ну, скажем, про знаменитый TMenu
  1. Все менюхи объединены в связанный список, который начинается в TControl.fMenuObj. Для того чтобы можно было пролистать их ВСЕ, и найти в оконной ф-ии к какому же меню относится пришедший WM_COMMAND (по иденту)
  2. И, за каким-то лядом, деструктор одного стартового TMenu уничтожает ВЕСЬ хвост списка.
  3. Главное меню можно создать только один раз (признак - TControl.fMenuObj=nil), далее - только редактировать его. Без создания главного - PopUp не сделаешь. Никакими манипуляциями невозможно сделать TControl.fMenuObj=nil. Нарушено основное в KOL правило: грохнул TObj - обнули PObj.
  4. Если есть активное MainMenu у контролла, то его Free уничтожает все меню через fMenuObj.free, а там пытаются отстегнуть меню через SetMenu(FControl.fHandle, 0). Это, естественно вызывает отрисовку, а контролл уже покоцанный... Далее - алес капут
Есть нормальные мысли, как это более или менее компактно довести до ума.
А как это же сделать в виде патча - не представляю

карма: 9

0