purebasic.info

PureBasic forum
Текущее время: Сб сен 23, 2017 3:49 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 70 ]  На страницу Пред.  1, 2, 3, 4, 5
Автор Сообщение
 Заголовок сообщения: Re: BitBox
СообщениеДобавлено: Вт апр 19, 2016 8:24 am 
Не в сети
профессор

Зарегистрирован: Вт мар 24, 2009 11:54 am
Сообщений: 354
Благодарил (а): 13 раз.
Поблагодарили: 18 раз.
Пункты репутации: 19
Окей...

Есть хост. Есть библитека(и) к этому хосту. Хост открывает окно, библиотека прорисовывает на нем гаджеты.

проблема в том, что если использовать такой код
Код:
1
2
3
4
5
6
7
Procedure open_Editor(Window)
 
    UseGadgetList(Window)
    ButtonGadget(1,0,0,30,20,""Test)
 
    ProcedureReturn #True
EndProcedure



то при закрытии хоста после CloseLibrary() вылетает ошибка

если использую такую конструкцию:
Код:
1
2
3
4
5
6
7
8
9
10
Procedure open_Editor(Window)
 
    UseGadgetList(Window)
    child=OpenWindow(#PB_Any,0,0,gRect\left+gRect\right,gRect\top+gRect\bottom,"",#PB_Window_BorderLess|#PB_Window_Invisible,SysWindow)
    SetParent_(WindowID(child), Window)
    ButtonGadget(1,0,0,30,20,""Test)
    HideWindow(child,#False)
 
    ProcedureReturn #True
EndProcedure


то выгружается все нормально без ошибок...
как можно реализовать вариант без SetParent_() ???


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: BitBox
СообщениеДобавлено: Вт апр 19, 2016 9:31 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11014
Благодарил (а): 4 раз.
Поблагодарили: 368 раз.
При закрытии DLL, удаляешь гаджеты функцией FreeGadget()?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: BitBox
СообщениеДобавлено: Вт апр 19, 2016 10:44 am 
Не в сети
профессор

Зарегистрирован: Вт мар 24, 2009 11:54 am
Сообщений: 354
Благодарил (а): 13 раз.
Поблагодарили: 18 раз.
Пункты репутации: 19
может я что то не так выгружаю :(
иходники ниже

AEffect_24.pbi - можно скачать в этой теме ранее


Вложения:
VSTGUI.pbi [1.1 KiB]
Скачиваний: 51
AudioEffect24.pbi [18.95 KiB]
Скачиваний: 56
PlugIn_VST(test).pb [7.01 KiB]
Скачиваний: 51
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: BitBox
СообщениеДобавлено: Вт апр 19, 2016 11:40 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11014
Благодарил (а): 4 раз.
Поблагодарили: 368 раз.
cherri123 писал(а):
может я что то не так выгружаю
Скорее не все. Смотри.
Код:
1
2
3
4
  Procedure GUIPlugin_FreeGadget()
    FreeGadget(#canvas)
    PrintN("FreeGadget [ok]")
  EndProcedure

Где здесь удаление этого гаждета?
Код:
1
ButtonGadget(1,0,0,30,20,"Test")

Дальше. В процедуре GUIPlugin_Init есть строка.
Код:
1
BindGadgetEvent(#canvas,@CanvasCallBack())

Где вызов UnBindGadgetEvent при выгрузке библиотеки? И зачем CloseGadgetList() в процедуре close_Editor()?

Это при завершении процесса можно не удалять что создали, т. к. система сама это сделает, но выгрузка DLL это не завершение процесса и нужно программно закрыть все, иначе оно останется открытым.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: BitBox
СообщениеДобавлено: Вт апр 19, 2016 11:55 am 
Не в сети
профессор

Зарегистрирован: Вт мар 24, 2009 11:54 am
Сообщений: 354
Благодарил (а): 13 раз.
Поблагодарили: 18 раз.
Пункты репутации: 19
Про UnBindGadgetEvent спс забыл 8)

Честно я немного запутался. Что именно нужно выгрузить.
1 FreeGadget() - чистим гаджеты
2 FreeMemory(*e) - чистим память от *e (структура)

этого будет достаточно или еще я что то забыл?

и к стати UseGadgetList(*ptr) возвращает 0


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: BitBox
СообщениеДобавлено: Вт апр 19, 2016 12:23 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11014
Благодарил (а): 4 раз.
Поблагодарили: 368 раз.
cherri123 писал(а):
Честно я немного запутался. Что именно нужно выгрузить.
Все что открыли/создали нужно закрыть. Это касается памяти, окон, гаджетов, картинок, файлов и т. д.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: BitBox
СообщениеДобавлено: Вт апр 19, 2016 4:25 pm 
В сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1532
Откуда: Алматы
Благодарил (а): 10 раз.
Поблагодарили: 35 раз.
Пункты репутации: 5
а если у меня была LoadImage - но я использую как временную картинку. без FreeImage можно в неё-же писать новую картинку LoadImage? причем первая скажем большой был размер, а потом я делаю LoadImage в тот-же указатель или хендл картинки картинку с маленьким размером.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: BitBox
СообщениеДобавлено: Ср апр 20, 2016 11:49 am 
Не в сети
профессор

Зарегистрирован: Вт мар 24, 2009 11:54 am
Сообщений: 354
Благодарил (а): 13 раз.
Поблагодарили: 18 раз.
Пункты репутации: 19
Все разобрался. 8)
Петр спасибо!
Косяк еще был в том что на стороне хоста (в котором я тестирую) должно стоять закрытие окна (в котором отображается плагин) после effEditClose.

хост:
Код:
1
2
3
4
5
6
Until event = #PB_Event_CloseWindow
 
effEditClose(*myAEffect)
CloseWindow(#PB_All)
effClose(*myAEffect)
CloseLibrary(#PB_All)



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: BitBox
СообщениеДобавлено: Сб авг 12, 2017 2:48 pm 
Не в сети
профессор

Зарегистрирован: Вт мар 24, 2009 11:54 am
Сообщений: 354
Благодарил (а): 13 раз.
Поблагодарили: 18 раз.
Пункты репутации: 19
Помогите что за дичь в 5.60. В предыдущей версии всеработало на ура, а тут в юникоде просто жесть.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
*mem.PBUnion = *sound
   
      *mem\l = 'FFIR'                : *mem+4      ; riff-chunk-ID "RIFF"  
      *mem\l = 32 + #T_WAVBUFSIZE    : *mem+4      ; normally filesize minus (these) 8 Bytes  
      *mem\l = 'EVAW'                : *mem+4      ; wave-chunk-ID "WAVE"  
      *mem\l = ' tmf'                : *mem+4      ; format-chunk-ID "FMT "  
      *mem\l = 16                    : *mem+4      ; chunk data size (+ Extra Format Bytes)  
      *mem\w = 1                     : *mem+2      ; compression code  
      *mem\w = #T_CHANNELS           : *mem+2      ; number of channels  
      *mem\l = #T_SAMPLERATE         : *mem+4      ; samplerate  
      *mem\l = #T_BYTESPERSEC        : *mem+4      ; average bytes per second, (channels)*(block align)*(samplerate)  
      *mem\w = #T_BLOCKALIGN         : *mem+2      ; Block Align ('bytes per sample')  
      *mem\w = #T_BITS               : *mem+2      ; Bits per sample  
      *mem\l = 'atad'                : *mem+4      ; data-chunk-ID "DATA"  
      *mem\l = #T_WAVBUFSIZE/#T_UPDATESPERSEC         : *mem+4      ; data chunk size in byes



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: BitBox
СообщениеДобавлено: Сб авг 12, 2017 3:01 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11014
Благодарил (а): 4 раз.
Поблагодарили: 368 раз.
В юникоде каждый символ занимает 2 байта.
Код:
1
2
x.q = 'FFIR'
ShowMemoryViewer(@x, 8)


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 70 ]  На страницу Пред.  1, 2, 3, 4, 5

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB