Баги или ошибки библиотеки
|
|
serg266 | Дата: Воскресенье, 21.04.2019, 21:21 | Сообщение # 46 |
Рядовой
Группа: Пользователи
Сообщений: 8
Статус: Offline
| Огромное спасибо! Заработало. Добавлено (18.05.2019, 11:57) ---------------------------------------------
Цитата Здравствуйте! Спасибо за window9, очень помогает "чайнику" (писал обычно только расчётные модули), не владеющему английским. Но столкнулся с такой проблемой. Не могу заставить корректно работать стандартный ScrollBar. При движении бегунка вниз/вправо всё нормально, а обратно начинает искажать. Как бы не успевает перерисовывать, т.к. если двигать медленно, то нормально. Увеличение задержки в SetTimer в принципе помогает при больших величинах, но тогда и передвижение идёт с явно видимыми задержками. Протестировал на примере из window9. Перед кнопкой "Hello" вставил из своей программы. "Глюк" сразу проявился. На этот вопрос вы посоветовали использовать invalidaterect. В принципе помогло, спасибо. Но работает не очень красиво, передвижение идёт с мельканием. И всё таки, возможна ли доработка стандартного ScrollBar в window9, и собираетесь ли вы это сделать?
|
|
| |
haav | Дата: Вторник, 21.05.2019, 17:49 | Сообщение # 47 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| Цитата serg266 ( ) Но работает не очень красиво, передвижение идёт с мельканием.
Если мелькания достают, следует пересмотреть принцип работы программы. Может стоит использовать ContainerGadget , в нем расположить все нужные гаджеты и изменять размеры\расположение только контейнера?
Цитата И всё таки, возможна ли доработка стандартного ScrollBar в window9, и собираетесь ли вы это сделать?
Нет , потому как считаю , что под каждый случай невозможно создать что-то универсальное.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
serg266 | Дата: Вторник, 21.05.2019, 22:32 | Сообщение # 48 |
Рядовой
Группа: Пользователи
Сообщений: 8
Статус: Offline
| Большое спасибо за ответ. Использовать ContainerGadget я уже понял на основе вашего примера с 3000 гаджетов и гор. прокруткой. Не хочу быть назойливым, но этот недостаток проявляется не только в моём случае (в моей прогр.). Я писал:
Цитата Протестировал на примере из window9. Перед кнопкой "Hello" вставил из своей программы. "Глюк" сразу проявился.
Просто вставил ButtonGadget-ы и TextGadget-ы . См. картинку как искажает. Не понятно, почему при движение бегунков вниз/вправо всё нормально, а в обратную сторону могут начать проявляться искажения (зависит от скорости). Какая разница?
|
|
| |
haav | Дата: Суббота, 25.05.2019, 12:45 | Сообщение # 49 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| Прошу простить , что не ответил быстрее , не было возможности.
Цитата serg266 ( ) Большое спасибо за ответ. Использовать ContainerGadget я уже понял на основе вашего примера с 3000 гаджетов и гор. прокруткой. Не хочу быть назойливым, но этот недостаток проявляется не только в моём случае (в моей прогр.). Я писал:
Цитата Протестировал на примере из window9. Перед кнопкой "Hello" вставил из своей программы. "Глюк" сразу проявился.
Просто вставил ButtonGadget-ы и TextGadget-ы . См. картинку как искажает. Не понятно, почему при движение бегунков вниз/вправо всё нормально, а в обратную сторону могут начать проявляться искажения (зависит от скорости). Какая разница?
Я не могу так сказать , потому что пример приведенный выше у меня работает без нареканий (при использовании invalidaterect). Пока я не вижу ничего, что следовало бы исправлять. Будет пример , в котором я разгляжу глюк , возможно что-нибудь посоветую.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
DarkDemon | Дата: Воскресенье, 21.07.2019, 20:21 | Сообщение # 50 |
Полковник
Группа: Друзья
Сообщений: 200
Статус: Offline
| Цитата serg266 ( ) На этот вопрос вы посоветовали использовать invalidaterect. В принципе помогло, спасибо. Но работает не очень красиво, передвижение идёт с мельканием. И всё таки, возможна ли доработка стандартного ScrollBar в window9, и собираетесь ли вы это сделать?
Такие штуки пишутся на кастомных GUI. У Стаса библа формата простых виндовых окон, требовать от неё двойной буферизации во всех кейсах не стоит, на эти навороты она не рассчитана. Нужна буферизация - изучайте WinAPI, OpenGL или пишите свой вывод через FBGfx. Это 100% даст управляемый результат. Формошлёпство же - не даст. Нужно понимать где использовать window9, на что он годится и что с его помощью лучше всего делается. И в основном это простейшие проги, окна с кнопками, чекбоксами и текстом, где ничего не скролится и не отрисовывается многократно. Остальной кастом дописывается на WinAPI. Window9 просто упрощает рутину.
|
|
| |
haav | Дата: Воскресенье, 21.07.2019, 20:55 | Сообщение # 51 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| Цитата DarkDemon ( ) Такие штуки пишутся на кастомных GUI. У Стаса библа формата простых виндовых окон, требовать от неё двойной буферизации во всех кейсах не стоит, на эти навороты она не рассчитана. Нужна буферизация - изучайте WinAPI, OpenGL или пишите свой вывод через FBGfx. Это 100% даст управляемый результат. Формошлёпство же - не даст. Нужно понимать где использовать window9, на что он годится и что с его помощью лучше всего делается. И в основном это простейшие проги, окна с кнопками, чекбоксами и текстом, где ничего не скролится и не отрисовывается многократно. Остальной кастом дописывается на WinAPI. Window9 просто упрощает рутину.
Во-во , лучше и не скажешь.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
vizit | Дата: Понедельник, 29.07.2019, 21:23 | Сообщение # 52 |
Рядовой
Группа: Пользователи
Сообщений: 11
Статус: Offline
| Добрый вечер.
Взял пример из helpWindow9.chm
Код #Include "window9.bi" Dim As MSG msg Dim As HWND hWnd Dim Shared As HMENU hMessages hwnd=OpenWindow("",10,10,300,300) hMessages=CreatePopMenu() MenuItem(1001,hMessages,"Свернуть окно") MenuItem(1002,hMessages,"Развернуть окно") AddSysTrayIcon(1,hwnd,LoadIcon(0,IDI_WINLOGO),"SYSTRAY приложение") Do Var ev=WaitEvent If ev=EventClose Then Deletesystrayicon(1) End EndIf If ev=eventRbDOWN Then If EventNumber = 1 Then DisplayPopupMenu(hMessages,GlobalMouseX,GlobalMouseY) EndIf EndIf If ev=EventMenu Then If EventNumber=1001 Then HideWindow(hwnd,1) ElseIf EventNumber=1002 Then HideWindow(hwnd,0) EndIf EndIf Loop
Во время запуска выдаёт ошибку компиляции:
1564424466.o:fake:(.text+0xf9): undefined reference to `MENUITEM(long, HMENU__*, FBSTRING, long)@24' 1564424466.o:fake:(.text+0x13f): undefined reference to `MENUITEM(long, HMENU__*, FBSTRING, long)@24'
|
|
| |
haav | Дата: Суббота, 03.08.2019, 09:10 | Сообщение # 53 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| Цитата vizit ( ) Взял пример из helpWindow9.chm
Таких примеров нет в справке для последней версии библиотеки.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
Vitamin | Дата: Пятница, 30.08.2019, 16:04 | Сообщение # 54 |
Лейтенант
Группа: Пользователи
Сообщений: 59
Статус: Offline
| Поймал непонятный момент, а именно функция CreateCopyImageDesktop после 65 запусков возвращает 0. Может ресурсы какие не освобождаются?
|
|
| |
haav | Дата: Пятница, 30.08.2019, 18:41 | Сообщение # 55 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| Цитата Vitamin ( ) Может ресурсы какие не освобождаются?
Покажи код, где возникает ошибка. Какая ОС ? Версия библиотеки последняя?
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
Vitamin | Дата: Пятница, 30.08.2019, 20:17 | Сообщение # 56 |
Лейтенант
Группа: Пользователи
Сообщений: 59
Статус: Offline
| Тестируемые компы: физические = 3 шт. с Windows Xp SP3 x86 на виртуалке = 1 с Windows Xp SP3 x86 на виртуалке = 1 с Windows 7 x86
Версия библиотеки Window9 и версии компилятора последние. Но программа, скомпилированная в 2016 году отрабатывает с таким же сбоем.
код для тестирования:Код #Include "window9.bi"
Dim As HWND hbitmap
For i As Integer = 1 To 1000 Sleep 10 hbitmap = CreateCopyImageDesktop() ? i, hbitmap If hbitmap = 0 Then For k As Integer=i+1 To i+5 hbitmap = CreateCopyImageDesktop() ? k, hbitmap Next Exit For EndIf Next
Sleep
Причем на слабых компах сбой происходит примерно после 65 запуска функции, а на более мощных где-то после 4XX-го.
|
|
| |
haav | Дата: Суббота, 31.08.2019, 06:13 | Сообщение # 57 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| Vitamin, принцип работы с битмапами должен быть таким:
Код #Include "window9.bi"
Dim As HBITMAP hbitmap
For i As Integer = 1 To 1000 ' ----------создаем битмап hbitmap = CreateCopyImageDesktop() ' ---------- ' ----------Что-то делаем с битмапом hbitmap (читаем\изменяем\сохраняем...) ? i, hbitmap ' ----------
' ----------Освобождаем битмап free_image(hbitmap) ' ---------- Next
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
Vitamin | Дата: Суббота, 31.08.2019, 09:45 | Сообщение # 58 |
Лейтенант
Группа: Пользователи
Сообщений: 59
Статус: Offline
| haav, Спасибо за ответ. Теперь всё как надо.
Добавлено (12.09.2019, 19:45) --------------------------------------------- Код из Справки window9:Код #Include "window9.bi"
Dim As HMENU menu,MenName,MenName1
OpenWindow("",10,10,400,400) menu=Create_Menu() MenName=MenuTitle(menu,"Файл") MenName1=MenuTitle(menu,"Помощь") MenuItem(1001,MenName,"1 меню") MenuBar(MenName) MenuItem(1002,MenName,"2 меню")
Do Var event=WaitEvent If event=EventMenu then Select case EventNumber Case 1001 MessBox("","1 меню") Case 1002 MessBox("","2 меню") End Select EndIf If event=EventClose Then End Loop
выдаёт ошибку:Код C:\Program Files\FreeBASIC\fbc -s console "FbTemp.bas" FbTemp.o:fake:(.text+0x175): undefined reference to `MENUITEM(long, HMENU__*, FBSTRING&, long)@16' FbTemp.o:fake:(.text+0x1c2): undefined reference to `MENUITEM(long, HMENU__*, FBSTRING&, long)@16'
Build error(s)
Версия библиотеки и компилятора последние. С копилятором v1.06 тоже не компилится. А вот с 1.05 всё идёт без ошибок. Может чего в последних версиях компилятора намудрили?
Сообщение отредактировал Vitamin - Четверг, 12.09.2019, 19:48 |
|
| |
haav | Дата: Четверг, 12.09.2019, 20:13 | Сообщение # 59 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| Цитата Vitamin ( ) Версия библиотеки и компилятора последние. С копилятором v1.06 тоже не компилится. А вот с 1.05 всё идёт без ошибок. Может чего в последних версиях компилятора намудрили?
Попробуй пересобрать библиотеку с новым компилятором. На всякий случай спрошу: ты файлы (заголовки\библиотеки и пр.) старого и нового компилятора не смешивал?
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
Vitamin | Дата: Четверг, 12.09.2019, 21:59 | Сообщение # 60 |
Лейтенант
Группа: Пользователи
Сообщений: 59
Статус: Offline
| Цитата старого и нового компилятора не смешивал?
Брал чистый компилятор 1.05 | 1.07 и накатывал поверх новый window9. Это не помогло.
Сообщение отредактировал Vitamin - Четверг, 12.09.2019, 22:03 |
|
| |
|