FreeBasic
Главная
Вход
Регистрация
Четверг, 05.12.2024, 18:25Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Баги или ошибки библиотеки
serg266Дата: Воскресенье, 21.04.2019, 21:21 | Сообщение # 46
Рядовой
Группа: Пользователи
Сообщений: 8
Репутация: 0
Статус: Offline
Огромное спасибо! Заработало.

Добавлено (18.05.2019, 11:57)
---------------------------------------------

Цитата
Здравствуйте! Спасибо за window9, очень помогает "чайнику" (писал обычно только расчётные модули), не владеющему английским. Но столкнулся с такой проблемой. Не могу заставить корректно работать стандартный ScrollBar. При движении бегунка вниз/вправо всё нормально, а обратно начинает искажать. Как бы не успевает перерисовывать, т.к. если двигать медленно, то нормально. Увеличение задержки в SetTimer в принципе помогает при больших величинах, но тогда и передвижение идёт с явно видимыми задержками. Протестировал на примере из window9. Перед кнопкой "Hello" вставил из своей программы. "Глюк" сразу проявился.

На этот вопрос вы посоветовали использовать invalidaterect.  В принципе помогло, спасибо. Но работает не очень красиво, передвижение идёт с мельканием. И всё таки, возможна ли доработка стандартного ScrollBar в window9, и собираетесь ли вы это сделать?
 
haavДата: Вторник, 21.05.2019, 17:49 | Сообщение # 47
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Цитата serg266 ()
Но работает не очень красиво, передвижение идёт с мельканием.


Если мелькания достают, следует пересмотреть принцип работы программы. Может стоит использовать ContainerGadget , в нем расположить все нужные гаджеты и изменять размеры\расположение только контейнера? 

Цитата
И всё таки, возможна ли доработка стандартного ScrollBar в window9, и собираетесь ли вы это сделать?


Нет , потому как считаю , что под каждый случай невозможно создать что-то универсальное.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
serg266Дата: Вторник, 21.05.2019, 22:32 | Сообщение # 48
Рядовой
Группа: Пользователи
Сообщений: 8
Репутация: 0
Статус: Offline
Большое спасибо за ответ. Использовать ContainerGadget я уже понял на основе вашего примера с 3000 гаджетов и гор. прокруткой.
Не хочу быть назойливым, но этот недостаток проявляется не только в моём случае (в моей прогр.). Я писал:


Цитата
Протестировал на примере из window9. Перед кнопкой "Hello" вставил из своей программы. "Глюк" сразу проявился.


Просто вставил ButtonGadget-ы и TextGadget-ы . См. картинку как искажает.
Не понятно, почему при движение бегунков вниз/вправо всё нормально, а в обратную сторону могут начать проявляться искажения (зависит от скорости). Какая разница?
Прикрепления: 3118037.jpg (42.0 Kb)
 
haavДата: Суббота, 25.05.2019, 12:45 | Сообщение # 49
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Прошу простить , что не ответил быстрее , не было возможности.

Цитата serg266 ()
Большое спасибо за ответ. Использовать ContainerGadget я уже понял на основе вашего примера с 3000 гаджетов и гор. прокруткой.
Не хочу быть назойливым, но этот недостаток проявляется не только в моём случае (в моей прогр.). Я писал:


Цитата
Протестировал на примере из window9. Перед кнопкой "Hello" вставил из своей программы. "Глюк" сразу проявился.

Просто вставил ButtonGadget-ы и TextGadget-ы . См. картинку как искажает.
Не понятно, почему при движение бегунков вниз/вправо всё нормально, а в обратную сторону могут начать проявляться искажения (зависит от скорости). Какая разница?


Я не могу так сказать , потому что пример приведенный выше у меня работает без нареканий (при использовании invalidaterect). Пока я не вижу ничего, что следовало бы исправлять. Будет пример , в котором я разгляжу глюк , возможно что-нибудь посоветую.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
DarkDemonДата: Воскресенье, 21.07.2019, 20:21 | Сообщение # 50
Полковник
Группа: Друзья
Сообщений: 200
Репутация: -1
Статус: Offline
Цитата serg266 ()
На этот вопрос вы посоветовали использовать invalidaterect.  В принципе помогло, спасибо. Но работает не очень красиво, передвижение идёт с мельканием. И всё таки, возможна ли доработка стандартного ScrollBar в window9, и собираетесь ли вы это сделать?


Такие штуки пишутся на кастомных GUI. У Стаса библа формата простых виндовых окон, требовать от неё двойной
буферизации во всех кейсах не стоит, на эти навороты она не рассчитана. Нужна буферизация - изучайте
WinAPI, OpenGL или пишите свой вывод через FBGfx. Это 100% даст управляемый результат. Формошлёпство же - не даст.
Нужно понимать где использовать window9, на что он годится и что с его помощью лучше всего делается.
И в основном это простейшие проги, окна с кнопками, чекбоксами и текстом, где ничего не скролится и не
отрисовывается многократно. Остальной кастом дописывается на WinAPI. Window9 просто упрощает рутину.
 
haavДата: Воскресенье, 21.07.2019, 20:55 | Сообщение # 51
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Цитата DarkDemon ()
Такие штуки пишутся на кастомных GUI. У Стаса библа формата простых виндовых окон, требовать от неё двойной
буферизации во всех кейсах не стоит, на эти навороты она не рассчитана. Нужна буферизация - изучайте
WinAPI, OpenGL или пишите свой вывод через FBGfx. Это 100% даст управляемый результат. Формошлёпство же - не даст.
Нужно понимать где использовать window9, на что он годится и что с его помощью лучше всего делается.
И в основном это простейшие проги, окна с кнопками, чекбоксами и текстом, где ничего не скролится и не
отрисовывается многократно. Остальной кастом дописывается на WinAPI. Window9 просто упрощает рутину.


Во-во , лучше и не скажешь.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
vizitДата: Понедельник, 29.07.2019, 21:23 | Сообщение # 52
Рядовой
Группа: Пользователи
Сообщений: 11
Репутация: 0
Статус: 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
Репутация: 50
Статус: Offline
Цитата vizit ()
Взял пример из helpWindow9.chm


Таких примеров нет в справке для последней версии библиотеки.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
VitaminДата: Пятница, 30.08.2019, 16:04 | Сообщение # 54
Лейтенант
Группа: Пользователи
Сообщений: 59
Репутация: 4
Статус: Offline
Поймал непонятный момент, а именно функция CreateCopyImageDesktop после 65 запусков возвращает 0. Может ресурсы какие не освобождаются?
 
haavДата: Пятница, 30.08.2019, 18:41 | Сообщение # 55
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Цитата Vitamin ()
Может ресурсы какие не освобождаются?


Покажи код, где возникает ошибка.
Какая ОС ?
Версия библиотеки последняя?


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
VitaminДата: Пятница, 30.08.2019, 20:17 | Сообщение # 56
Лейтенант
Группа: Пользователи
Сообщений: 59
Репутация: 4
Статус: 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
Репутация: 50
Статус: 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
Репутация: 4
Статус: 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
Репутация: 50
Статус: Offline
Цитата Vitamin ()
Версия библиотеки и компилятора последние. С копилятором v1.06 тоже не компилится. А вот с 1.05 всё идёт без ошибок. Может чего в последних версиях компилятора намудрили?


Попробуй пересобрать библиотеку с новым компилятором. На всякий случай спрошу: ты файлы (заголовки\библиотеки и пр.) старого и нового компилятора не смешивал?


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
VitaminДата: Четверг, 12.09.2019, 21:59 | Сообщение # 60
Лейтенант
Группа: Пользователи
Сообщений: 59
Репутация: 4
Статус: Offline
 
Цитата
старого и нового компилятора не смешивал?


Брал чистый компилятор 1.05 | 1.07 и накатывал поверх новый window9. Это не помогло.


Сообщение отредактировал Vitamin - Четверг, 12.09.2019, 22:03
 
Поиск: