FreeBasic
Главная
Вход
Регистрация
Четверг, 18.04.2024, 15:58Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Библиотеки для FreeBasic » Библиотека Window9 для Freebasic » Как ускорить загрузку окна? (если много гаджетов, то заметная задержка)
Как ускорить загрузку окна?
VitaminДата: Четверг, 12.01.2023, 12:36 | Сообщение # 1
Лейтенант
Группа: Пользователи
Сообщений: 55
Репутация: 4
Статус: Offline
Если в окне находится большое количество гаджетов (больше 100), то загрузка такого окна начинает тормозить (долго отображается окно без элементов) на одноядерном процессоре до 4 сек. Что можно сделать для ускорения загрузки таких окон?
 
haavДата: Четверг, 12.01.2023, 14:29 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Подробнее пожалуйста:
1) какая система
2) минимально-возможный рабочий код


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
VitaminДата: Четверг, 12.01.2023, 18:43 | Сообщение # 3
Лейтенант
Группа: Пользователи
Сообщений: 55
Репутация: 4
Статус: Offline
На Win10x64 с 4-мя ядрами задержка незаметна, а вот на Win7x32 с 1-м ядром бросается в глаза.
из кода убрал все лишнее, вот что осталось
Код
#Include "window9.bi"
#Define SetDisp GetCurrentSettingsDisplay
#Define stilOkna WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU _
 Or WS_MINIMIZEBOX Or WS_VISIBLE Or WS_TABSTOPENABLE
Var hwnd = OpenWindow("",GetWidthDesktop(SetDisp)/2-328,GetHeightDesktop(SetDisp)/2-292,656,584,stilOkna)
WindowBounds(hwnd,656,584,656,584)
CheckBoxGadget(1,10,6,100,18,"Автозапуск")
SetGadgetFont(1,CInt(LoadFont("arial",9)))
CheckBoxGadget(2,240,6,220,18,"Не показывать значок в трее")
SetGadgetFont(2,CInt(LoadFont("arial",9)))
GroupGadget(6,6,24,552,160,"Список заданий")
SetGadgetFont(6,CInt(LoadFont("arial",8)))
ListBoxGadget(7,10,40,542,138,WS_VSCROLL Or WS_HSCROLL Or WS_BORDER)
SetGadgetFont(7,CInt(LoadFont("arial",9)))
CheckBoxGadget(11,564,198,82,18,"Включено")
SetGadgetFont(11,CInt(LoadFont("arial",8)))
GadgetToolTip(11,"Активация задания",211)
SetGadgetFont(211,CInt(LoadFont("arial",8)))
ButtonGadget(12,564,34,80,26,"Добавить")
SetGadgetFont(12,CInt(LoadFont("arial",9)))
GadgetToolTip(12,"Добавить новое задание",212)
SetGadgetFont(212,CInt(LoadFont("arial",8)))
ButtonGadget(13,564,64,80,26,"Удалить")
SetGadgetFont(13,CInt(LoadFont("arial",9)))
GadgetToolTip(13,"Удалить текущее задание",213)
SetGadgetFont(213,CInt(LoadFont("arial",8)))
ButtonGadget(15,564,94,80,26,"Вверх")
SetGadgetFont(15,CInt(LoadFont("arial",9)))
GadgetToolTip(15,"Переместить вверх по списку",215)
SetGadgetFont(215,CInt(LoadFont("arial",8)))
ButtonGadget(16,564,124,80,26,"Вниз")
SetGadgetFont(16,CInt(LoadFont("arial",9)))
GadgetToolTip(16,"Переместить вниз по списку",216)
SetGadgetFont(216,CInt(LoadFont("arial",8)))
ButtonGadget(17,564,154,80,26,"Выход")
SetGadgetFont(17,CInt(LoadFont("arial",9)))
GadgetToolTip(17,"Сохранить и выйти из настроек",217)
SetGadgetFont(217,CInt(LoadFont("arial",8)))
GroupGadget(19,6,184,552,42,"Название задания")
SetGadgetFont(19,CInt(LoadFont("arial",8)))
StringGadget(20,10,200,542,20,"",ES_AUTOHSCROLL,WS_EX_STATICEDGE)
SetGadgetFont(20,CInt(LoadFont("arial",10)))
GroupGadget(21,6,226,552,46,"Запускаемый файл")
SetGadgetFont(21,CInt(LoadFont("arial",8)))
StringGadget(22,10,244,542,20,"",ES_AUTOHSCROLL,WS_EX_STATICEDGE)
SetGadgetFont(22,CInt(LoadFont("arial",9)))
GadgetToolTip(22,"Командная строка, например: %Windir%\notepad или cmd",222)
SetGadgetFont(222,CInt(LoadFont("arial",8)))
ButtonGadget(23,564,238,36,26,"...")
SetGadgetFont(23,CInt(LoadFont("arial",12)))
GadgetToolTip(23,"Выбрать файл",223)
SetGadgetFont(223,CInt(LoadFont("arial",8)))
ButtonGadget(24,608,238,36,26,"Выкл")
SetGadgetFont(24,CInt(LoadFont("arial",8)))
GadgetToolTip(24,"Добавить команду выключения компьютера",224)
SetGadgetFont(224,CInt(LoadFont("arial",8)))
GroupGadget(26,6,272,638,64,"Параметры командной строки")
SetGadgetFont(26,CInt(LoadFont("arial",8)))
StringGadget(27,10,288,628,42,"текст",ES_MULTILINE Or ES_AUTOVSCROLL,WS_EX_STATICEDGE)
SetGadgetFont(27,CInt(LoadFont("arial",10)))
GadgetToolTip(27,"Для программ и скриптов, если с побелами - окавычиваем",227)
SetGadgetFont(227,CInt(LoadFont("arial",8)))
GroupGadget(31,6,336,280,38,"Тип запуска")
SetGadgetFont(31,CInt(LoadFont("arial",8)))
OptionGadget(32,12,350,62,20,"Время")
SetGadgetFont(32,CInt(LoadFont("arial",8)))
OptionGadget(33,82,350,64,20,"Таймер")
SetGadgetFont(33,CInt(LoadFont("arial",8)))
OptionGadget(34,152,350,56,20,"Цикл")
SetGadgetFont(34,CInt(LoadFont("arial",8)))
StringGadget(35,214,350,64,18,"00:00:00",ES_READONLY Or ES_CENTER,WS_EX_STATICEDGE)
SetGadgetFont(35,LoadFont("Arial",9))
GadgetToolTip(35,"Установка времени",235)
SetGadgetFont(235,CInt(LoadFont("arial",8)))
GroupGadget(40,292,336,352,38,"Параметры окна")
SetGadgetFont(40,CInt(LoadFont("arial",8)))
OptionGadget(41,286+12,350,74,20,"Обычное")
SetGadgetFont(41,CInt(LoadFont("arial",8)))
OptionGadget(42,286+94,350,68,20,"Скрыто")
SetGadgetFont(42,CInt(LoadFont("arial",8)))
OptionGadget(43,286+176,350,78,20,"Свёрнуто")
SetGadgetFont(43,CInt(LoadFont("arial",8)))
OptionGadget(44,286+260,350,88,20,"Весь экран")
SetGadgetFont(44,CInt(LoadFont("arial",8)))
GroupGadget(60,6,374,396,40,"Дни недели")
SetGadgetFont(60,CInt(LoadFont("arial",8)))
CheckBoxGadget(61,14,390,46,16,"Вкл.")
SetGadgetFont(61,CInt(LoadFont("arial",8)))
GadgetToolTip(61,"С учётом/без дней недели",261)
SetGadgetFont(261,CInt(LoadFont("arial",8)))
CheckBoxGadget(62,70,390,38,16,"Пн")
SetGadgetFont(62,CInt(LoadFont("arial",8)))
GadgetToolTip(62,"Понедельник",262)
SetGadgetFont(262,CInt(LoadFont("arial",8)))
CheckBoxGadget(63,118,390,38,16,"Вт")
SetGadgetFont(63,CInt(LoadFont("arial",8)))
GadgetToolTip(63,"Вторник",263)
SetGadgetFont(263,CInt(LoadFont("arial",8)))
CheckBoxGadget(64,166,390,38,16,"Ср")
SetGadgetFont(64,CInt(LoadFont("arial",8)))
GadgetToolTip(64,"Среда",264)
SetGadgetFont(264,CInt(LoadFont("arial",8)))
CheckBoxGadget(65,214,390,38,16,"Чт")
SetGadgetFont(65,CInt(LoadFont("arial",8)))
GadgetToolTip(65,"Четверг",265)
SetGadgetFont(265,CInt(LoadFont("arial",8)))
CheckBoxGadget(66,262,390,38,16,"Пт")
SetGadgetFont(66,CInt(LoadFont("arial",8)))
GadgetToolTip(66,"Пятница",266)
SetGadgetFont(266,CInt(LoadFont("arial",8)))
CheckBoxGadget(67,310,390,38,16,"Сб")
SetGadgetFont(67,CInt(LoadFont("arial",8)))
GadgetToolTip(67,"Суббота",267)
SetGadgetFont(267,CInt(LoadFont("arial",8)))
CheckBoxGadget(68,356,390,38,16,"Вс")
SetGadgetFont(68,CInt(LoadFont("arial",8)))
GadgetToolTip(68,"Воскресенье",268)
SetGadgetFont(268,CInt(LoadFont("arial",8)))
GroupGadget(50,408,374,236,40,"Период действия")
SetGadgetFont(50,CInt(LoadFont("arial",8)))
CheckBoxGadget(51,416,390,46,16,"Вкл.")
SetGadgetFont(51,CInt(LoadFont("arial",8)))
GadgetToolTip(51,"Временной диапазон срабатывания",251)
SetGadgetFont(251,CInt(LoadFont("arial",8)))
StringGadget(52,482,390,64,18,"00:00:00",ES_READONLY Or ES_CENTER,WS_EX_STATICEDGE)
SetGadgetFont(52,LoadFont("Arial",9))
GadgetToolTip(52,"Установка времени",252)
SetGadgetFont(252,CInt(LoadFont("arial",8)))
StringGadget(53,570,390,64,18,"00:00:00",ES_READONLY Or ES_CENTER,WS_EX_STATICEDGE)
SetGadgetFont(53,LoadFont("Arial",9))
GadgetToolTip(53,"Установка времени",253)
SetGadgetFont(253,CInt(LoadFont("arial",8)))
TextGadget(54,555,388,14,14,"-")
SetGadgetFont(54,LoadFont("Arial",12))
GroupGadget(105,6,414,638,56,"Число")
SetGadgetFont(105,CInt(LoadFont("arial",8)))
CheckBoxGadget(70,14,430,38,16,"Вкл.")
SetGadgetFont(70,CInt(LoadFont("arial",8)))
GadgetToolTip(70,"С учётом/без чисел мясяца",270)
SetGadgetFont(270,CInt(LoadFont("arial",8)))
CheckBoxGadget(71,60,430,34,16,"1")
SetGadgetFont(71,CInt(LoadFont("arial",7)))
CheckBoxGadget(72,100,430,34,16,"2")
SetGadgetFont(72,CInt(LoadFont("arial",7)))
CheckBoxGadget(73,136,430,34,16,"3")
SetGadgetFont(73,CInt(LoadFont("arial",7)))
CheckBoxGadget(74,172,430,34,16,"4")
SetGadgetFont(74,CInt(LoadFont("arial",7)))
CheckBoxGadget(75,208,430,34,16,"5")
SetGadgetFont(75,CInt(LoadFont("arial",7)))
CheckBoxGadget(76,244,430,34,16,"6")
SetGadgetFont(76,CInt(LoadFont("arial",7)))
CheckBoxGadget(77,280,430,34,16,"7")
SetGadgetFont(77,CInt(LoadFont("arial",7)))
CheckBoxGadget(78,316,430,34,16,"8")
SetGadgetFont(78,CInt(LoadFont("arial",7)))
CheckBoxGadget(79,352,430,34,16,"9")
SetGadgetFont(79,CInt(LoadFont("arial",7)))
CheckBoxGadget(80,388,430,34,16,"10")
SetGadgetFont(80,CInt(LoadFont("arial",7)))
CheckBoxGadget(81,424,430,34,16,"11")
SetGadgetFont(81,CInt(LoadFont("arial",7)))
CheckBoxGadget(82,460,430,34,16,"12")
SetGadgetFont(82,CInt(LoadFont("arial",7)))
CheckBoxGadget(83,496,430,34,16,"13")
SetGadgetFont(83,CInt(LoadFont("arial",7)))
CheckBoxGadget(84,532,430,34,16,"14")
SetGadgetFont(84,CInt(LoadFont("arial",7)))
CheckBoxGadget(85,568,430,34,16,"15")
SetGadgetFont(85,CInt(LoadFont("arial",7)))
CheckBoxGadget(86,60,448,34,16,"16")
SetGadgetFont(86,CInt(LoadFont("arial",7)))
CheckBoxGadget(87,100,448,34,16,"17")
SetGadgetFont(87,CInt(LoadFont("arial",7)))
CheckBoxGadget(88,136,448,34,16,"18")
SetGadgetFont(88,CInt(LoadFont("arial",7)))
CheckBoxGadget(89,172,448,34,16,"19")
SetGadgetFont(89,CInt(LoadFont("arial",7)))
CheckBoxGadget(90,208,448,34,16,"20")
SetGadgetFont(90,CInt(LoadFont("arial",7)))
CheckBoxGadget(91,244,448,34,16,"21")
SetGadgetFont(91,CInt(LoadFont("arial",7)))
CheckBoxGadget(92,280,448,34,16,"22")
SetGadgetFont(92,CInt(LoadFont("arial",7)))
CheckBoxGadget(93,316,448,34,16,"23")
SetGadgetFont(93,CInt(LoadFont("arial",7)))
CheckBoxGadget(94,352,448,34,16,"24")
SetGadgetFont(94,CInt(LoadFont("arial",7)))
CheckBoxGadget(95,388,448,34,16,"25")
SetGadgetFont(95,CInt(LoadFont("arial",7)))
CheckBoxGadget(96,424,448,34,16,"26")
SetGadgetFont(96,CInt(LoadFont("arial",7)))
CheckBoxGadget(97,460,448,34,16,"27")
SetGadgetFont(97,CInt(LoadFont("arial",7)))
CheckBoxGadget(98,496,448,34,16,"28")
SetGadgetFont(98,CInt(LoadFont("arial",7)))
CheckBoxGadget(99,532,448,34,16,"29")
SetGadgetFont(99,CInt(LoadFont("arial",7)))
CheckBoxGadget(100,568,448,34,16,"30")
SetGadgetFont(100,CInt(LoadFont("arial",7)))
CheckBoxGadget(101,604,448,34,16,"31")
SetGadgetFont(101,CInt(LoadFont("arial",7)))
ButtonGadget(102,618,429,15,15,"^")
SetGadgetFont(102,CInt(LoadFont("arial",8)))
GadgetToolTip(102,"вкл/выкл все",302)
SetGadgetFont(302,CInt(LoadFont("arial",8)))
GroupGadget(110,6,470,638,40,"Месяц")
SetGadgetFont(110,CInt(LoadFont("arial",8)))
CheckBoxGadget(111,14,486,46,16,"Вкл.")
SetGadgetFont(111,CInt(LoadFont("arial",8)))
GadgetToolTip(111,"С учётом/без месяцев",311)
SetGadgetFont(311,CInt(LoadFont("arial",8)))
ButtonGadget(112,618,486,15,15,"^")
SetGadgetFont(112,CInt(LoadFont("arial",8)))
GadgetToolTip(112,"вкл/выкл все",312)
SetGadgetFont(312,CInt(LoadFont("arial",8)))
CheckBoxGadget(113,80,486,34,16,"1")
SetGadgetFont(113,CInt(LoadFont("arial",8)))
GadgetToolTip(113,"Январь",313)
SetGadgetFont(313,CInt(LoadFont("arial",8)))
CheckBoxGadget(114,124,486,34,16,"2")
SetGadgetFont(114,CInt(LoadFont("arial",8)))
GadgetToolTip(114,"Февраль",314)
SetGadgetFont(314,CInt(LoadFont("arial",8)))
CheckBoxGadget(115,168,486,34,16,"3")
SetGadgetFont(115,CInt(LoadFont("arial",8)))
GadgetToolTip(115,"Март",315)
SetGadgetFont(315,CInt(LoadFont("arial",8)))
CheckBoxGadget(116,212,486,34,16,"4")
SetGadgetFont(116,CInt(LoadFont("arial",8)))
GadgetToolTip(116,"Апрель",316)
SetGadgetFont(316,CInt(LoadFont("arial",8)))
CheckBoxGadget(117,256,486,34,16,"5")
SetGadgetFont(117,CInt(LoadFont("arial",8)))
GadgetToolTip(117,"Май",317)
SetGadgetFont(317,CInt(LoadFont("arial",8)))
CheckBoxGadget(118,300,486,34,16,"6")
SetGadgetFont(118,CInt(LoadFont("arial",8)))
GadgetToolTip(118,"Июнь",318)
SetGadgetFont(318,CInt(LoadFont("arial",8)))
CheckBoxGadget(119,344,486,34,16,"7")
SetGadgetFont(119,CInt(LoadFont("arial",8)))
GadgetToolTip(119,"Июль",319)
SetGadgetFont(319,CInt(LoadFont("arial",8)))
CheckBoxGadget(120,388,486,34,16,"8")
SetGadgetFont(120,CInt(LoadFont("arial",8)))
GadgetToolTip(120,"Август",320)
SetGadgetFont(320,CInt(LoadFont("arial",8)))
CheckBoxGadget(121,432,486,34,16,"9")
SetGadgetFont(121,CInt(LoadFont("arial",8)))
GadgetToolTip(121,"Сентябрь",321)
SetGadgetFont(321,CInt(LoadFont("arial",8)))
CheckBoxGadget(122,476,486,34,16,"10")
SetGadgetFont(122,CInt(LoadFont("arial",8)))
GadgetToolTip(122,"Октябрь",322)
SetGadgetFont(322,CInt(LoadFont("arial",8)))
CheckBoxGadget(123,520,486,34,16,"11")
SetGadgetFont(123,CInt(LoadFont("arial",8)))
GadgetToolTip(123,"Ноябрь",323)
SetGadgetFont(323,CInt(LoadFont("arial",8)))
CheckBoxGadget(124,564,486,34,16,"12")
SetGadgetFont(124,CInt(LoadFont("arial",8)))
GadgetToolTip(124,"Декабрь",324)
SetGadgetFont(324,CInt(LoadFont("arial",8)))
GroupGadget(130,6,510,638,40,"Год")
SetGadgetFont(130,CInt(LoadFont("arial",8)))
CheckBoxGadget(131,14,526,46,16,"Вкл.")
SetGadgetFont(131,CInt(LoadFont("arial",8)))
GadgetToolTip(131,"С учётом/без годов",331)
SetGadgetFont(331,CInt(LoadFont("arial",8)))
StringGadget(132,70,523,528,20,"",ES_AUTOHSCROLL,WS_EX_STATICEDGE)
SetGadgetFont(132,CInt(LoadFont("arial",10)))
GadgetToolTip(132,"например: 2000, 2002-2005",332)
SetGadgetFont(332,CInt(LoadFont("arial",8)))
ButtonGadget(133,610,522,22,22,"+")
SetGadgetFont(133,CInt(LoadFont("arial",10)))
GadgetToolTip(133,"Добавить очередной год",333)
SetGadgetFont(333,CInt(LoadFont("arial",8)))

Do
   Var event = WaitEvent()
   Select Case event
      Case EventClose : End
   End Select
Loop
Вот как это выглядит: анимашка
 
haavДата: Четверг, 12.01.2023, 20:32 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Я даже не знаю , что посоветовать. Я загрузил программу на виртуалке под XP с одним ядром. Предел загрузки 30% , а это от моего процессора примерно 1000мгц , даже меньше. Памяти выставил 2гб.
При таких данных хрюша загружается с тормозами и проводник подтупливает немного. Но твоя программа запускается в клик (никакой задержки не увидел). Я уже не знаю как еще тестировать.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
VitaminДата: Четверг, 12.01.2023, 20:53 | Сообщение # 5
Лейтенант
Группа: Пользователи
Сообщений: 55
Репутация: 4
Статус: Offline
Я тоже на виртуалке тестировал, видать ещё от проца многое зависит.
У меня была мысль часть гаджетов (подсказки) подгружать отдельным потоком, после активации основных, однако так не получилось. Вообще такое возможно?


Сообщение отредактировал Vitamin - Четверг, 12.01.2023, 20:55
 
haavДата: Четверг, 12.01.2023, 22:16 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Цитата Vitamin ()
У меня была мысль часть гаджетов (подсказки) подгружать отдельным потоком, после активации основных, однако так не получилось. Вообще такое возможно?


Я как-то очень давно пробовал использовать библиотеку (а именно GUI) из разных потоков , ничего хорошего из этого не вышло. Смутно помню , что какие-то сообщения приходили , а какие-то нет. В общем не рекомендую.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
ntvgjhfnjДата: Пятница, 13.01.2023, 16:50 | Сообщение # 7
Лейтенант
Группа: Проверенные
Сообщений: 59
Репутация: 1
Статус: Offline
А зачем так много подгрузок шрифтов ? Что нельзя один раз загрузить так или кэшировать как, чисто непонятка.

polopok
 
haavДата: Пятница, 13.01.2023, 17:04 | Сообщение # 8
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Цитата ntvgjhfnj ()
А зачем так много подгрузок шрифтов ? Что нельзя один раз загрузить так или кэшировать как, чисто непонятка.


Кстати да , молодец , что заметил. Я это просмотрел.

@Vitamin
Загрузи шрифт один раз и потом только передавай в SetGadgetFont его хендл. Или сколько их там у тебя (штук 5 наверное). Просто вначале программы загрузи их и потом только передавай.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
VitaminДата: Пятница, 13.01.2023, 18:31 | Сообщение # 9
Лейтенант
Группа: Пользователи
Сообщений: 55
Репутация: 4
Статус: Offline

Цитата
А зачем так много подгрузок шрифтов ? Что нельзя ...

Цитата
Загрузи шрифт один раз и потом только передавай в SetGadgetFont его хендл.
Спасибо за подсказку, а то я копипастил бездумно
 
zamabuvaraeuДата: Суббота, 14.01.2023, 11:00 | Сообщение # 10
Подполковник
Группа: Друзья
Сообщений: 147
Репутация: 4
Статус: Offline
Код
CheckBoxGadget(11,564,198,82,18,"Включено")
SetGadgetFont(11,CInt(LoadFont("arial",8)))
GadgetToolTip(11,"Активация задания",211)
SetGadgetFont(211,CInt(LoadFont("arial",8)))
Сначала идёт создание Gadget № 11, а шрифт устанавливается для какого‐то другого Gadget, под номером 211.
Если это ошибка — исправляйте.
Такого в коде полно.
 
VitaminДата: Суббота, 14.01.2023, 18:09 | Сообщение # 11
Лейтенант
Группа: Пользователи
Сообщений: 55
Репутация: 4
Статус: Offline
zamabuvaraeu, 
Цитата
шрифт устанавливается для какого‐то другого Gadget, под номером 211
там всё правильно: создаётся гаджет-подсказка GadgetToolTip(,,211), у него идентификатор находится вконце, ну а затем для этой подсказки устанавливается шрифт
 
Форум » Библиотеки для FreeBasic » Библиотека Window9 для Freebasic » Как ускорить загрузку окна? (если много гаджетов, то заметная задержка)
  • Страница 1 из 1
  • 1
Поиск: