Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб окт 20, 2018 8:24 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 378 сообщений ]  На страницу Пред. 1 2 3 4 526 След.
Автор Сообщение
СообщениеДобавлено: Вс мар 08, 2009 7:38 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 777
немного просветили, по поводу вопросов скажу еще:
Цитата:
Я не совсем понял как возникла твоя ситуация.

я имел ввиду следующее, когда задан стиль окна в 0-й функции :
Цитата:
Функция 0 - определить и нарисовать окно
.........
Параметры:
* edx = 0xXYRRGGBB, где:
* X = DCBA (биты)
.........
* B = 1 - координаты всех графических примитивов задаются
относительно клиентской области окна

то перерисовка меню под окном (после закрытия меню) не работает правильно. Есть 2 варианта программки 1-я в которой B = 1 и перерисовка сдвинута ровно на размеры скина, а во 2-й стиль B = 0 и все нормально.
Цитата:
Если у тебя в процессе работы приограммы поменялся системный скин

пока скин при работе не меняю


Последний раз редактировалось IgorA Пн мар 09, 2009 2:18 pm, всего редактировалось 1 раз.

Вернуться к началу
СообщениеДобавлено: Пн мар 09, 2009 1:21 am 
IgorA
Дело в том что функция 36 работает исключительно с координатами экрана. Надо подумать как учесть в компоненте еще и эту фичу с оносительными координатами графических примитивов.
Было бы хорошо получить исходник который у тебя восстанавливает сдвинутое изображение. Это могло бы ускорить решение вопроса, мыло мое mario79[dog]bk[dot]ru или можешь здесь прикрепить к своему посту.


17.00 MCK После беседы с Mike.dld (автор B=1) сделал пару поправок в MenuBar - ревизия 1049. Попробуй, должно помочь. Есно библиотеку надо откомпилить и закинуть куда надо (в записимости откуда ты ее загружаешь).

З.Ы. Выложенный пример проверил, глюка нет. Кстати визуально наблюдается несоответсвие параметров которые предоставляются скроллбару. Если уж рабоатешь с количеством строк текста, то надо все три параметра:
Код:
.max_area   dd 0  ;+16
.cur_area    dd 0  ;+20
.position     dd 0  ;+24

указывать в еденицах строк.


Вернуться к началу
   
СообщениеДобавлено: Пн апр 13, 2009 10:18 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Пт июн 30, 2006 9:01 am
Сообщения: 1238
A little enlightnment about SVN revision #1060:

The changes made export two extra functions, wich should be implemented in all KolibriOS library's IMHO.

The problem I had before was the lib-init function was not exported.
So when using the standard dll macro's for kolibrios (http://new.kolibrios.org/browser/progra ... st/dll.inc),
the program crashed because lib-init was not found. (wich also means there is an error/bug in the macro's...)

Besides this little futility, I think box-lib is a good initiative and it works great.

_________________
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein


Вернуться к началу
СообщениеДобавлено: Ср апр 15, 2009 4:24 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Изменения в 1064 ревизи. Добавлен макрос load_lib.mac. Этот макрос служит для загрузки различных библиотек. Макрос имеет 2 модуля для загрузки это:
- test_load_library. Основная задача модуля - это проверка, если загружаемая либа в текущей дирректории, а если ее нет, проверка системной дирректории. Далее происходит импорт. Если либа так и не была найдена, создается окно с ошибкой. Если при импорте ошибка, то создается окно и выводиться в него код ошибки.

- load_library. Основная задача модуля - это проверка если загружаемая либа в системной дирректории, а если ее нет, проверка текущей дирректории, от куда была запущена программа. Далее происходит импорт. Если либа так и не была найдена, создается окно с ошибкой. Если при импорте ошибка, то создается окно и выводиться в него код ошибки.


Вернуться к началу
СообщениеДобавлено: Чт апр 23, 2009 6:25 am 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
IgorA писал(а):
Немного улутшил программу:
Читал что вроди макрос новый сделали для загрузки библиотек ?

Да, новый макрос сейчас находитсья в опытной эксплуатации и доработке.
Макрос позволяет загружать библиотеку/библиотеки. Существует 2 разновидности макросов, отличия только в логике работы.
В первом макросе: В начале проверяется системная папка, затем текущая.
Во втором макросе: В начале проверяется текущая папка, затем системная.
+++
Если по указанному пути не найдена либа - формируется окно с сообщением о том что либа не найдена.
Далее, при импорте, если возникает ошибка, так же формируется окно с сообщением об ошибке.
Сейчас алгоритм линейный. Т.е. пока не закроете текущее сформированное окно об ошибке программа не будет дальше выполняться.
Допустим, вам хочеться проверить есть ли либа, но отсутствие ее для программы не критично. После отрабоки макроса загрузки, в eax - код возврата.
Альфа версия макроса доступна на SVN. ...\develop\libraries\box_lib\trunk\load_lib.mac.
Пример использования - приложение editbox_ex.asm.


Вернуться к началу
СообщениеДобавлено: Пн май 04, 2009 1:53 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Альфа версия, доработан макрос load_lib.mac Пример испльзования в editbox_ex.asm.
Полноценная загрузка библиотеки /библиотек.
Тестирование привествуется )

Сейчас, если нужно подключить более 1 либы, нужно использовать другие макросы.
Доступно 4 макроса:
a) Загрузить только 1 либу
1. Обычный - load_library
2. Системный - sys_load_library
б) Зазгрузить от 2-х либ и более.
1.Обычный - load_libraries
2.Системный - sys_load_libraries
=============
Существенная разница в том, что макросы группы а), требуют следующей структуры:
load_library library_name, cur_dir_path, library_path, system_path, \
err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
Структура однатипна для группы макросов а).

Для группы макросов б) нужна другая структура, она чем-то похожа на editbox'овскую.
Начнем с того, что любой макрос из группы б) требует всего 2 параметра на вход.

load_libraries l_libs_start, end_l_libs
- т.е. начало и конец блока из структур аналогичных для первого макроса структур.
Вот эта структура - в самом низу макроса load_lib.mac

struc l_libs library_name, cur_dir_path, library_path, system_path, err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
; struct for loading libraries
{
library_name dd library_name
cur_dir_path dd cur_dir_path
library_path dd library_path
err_message_found_lib dd err_message_found_lib
head_f_l dd head_f_l
myimport dd myimport
err_message_import dd err_message_import
head_f_i dd head_f_i
status_lib dd 0x0 ;status of load library
}
- Смысл в том, что после обработки группы макросов можно самостоятельно проверить на сколько успешны загрузились либы. В каждой структуре есть поле status_lib, при успешной загрузе - поле содержит 0х0
1-я ошибка если путь не найден - выставляется значение 0х1
2-я ошибка если импорт косячный - выставляется значение 0х2
Это сделано для того, что бы можно было запускать прогу, даже если нет либ, допустим которые нужны только для расширения, т.е. желаемые либы.
Итак, для инициализации загрузки нескольких либ нужно сделать следующее:
1) В коде своей программы создаешь массив из структур загружаемых либ.(Смотри ниже)
2) Обрати внимание, что не нужно инициализировать status_lib!
Она инициализируется автоматически.
3) После отработки макроса, возможно будет желание узнать какая либа не загрузилась, понадобиться еще одно значение
- ll_struc_size - это размер структуры в байтах.
Т.е. как проверить какая либа с ошибкой загрузилась
-
после макроса делаем следующее
mov ebp,l_libs_start
mov ecx,((end_l_libs-l_libs_start)/ll_struc_size) ;ecx содержит кол-во библиотек всего в твоей структуре.
i_loop:
cmp [ebp+ll_struc_size-4],0
jnz exit
add ebp,ll_struc_size
loop i_loop
;данный цикл позволяет проверить удачно ли загрузились либа, если нет - выходит из цикла, дальше можно завершить программу передав упрление на
or eax,-1
int 0x40
;(ll_struc_size-4) - смещение до status_lib - т.е. до состояния
Можно выборочно проверить код загрузки конкретной или критичной для работы программы либы так:
mov ebp,library02
cmp [ebp+ll_struc_size-4],0
jnz exit
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
l_libs_start:
library01 library_name, cur_dir_path, library_path, system_path, err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
library02 library_name, cur_dir_path, library_path, system_path, err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
end_l_libs:


Вложения:
Комментарий к файлу: ALFA version
new_load_lib_alfa.7z [47.08 КБ]
90 скачиваний
Вернуться к началу
СообщениеДобавлено: Вт май 05, 2009 1:49 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Обновление


Вложения:
alfa_box_lib.7z [47.98 КБ]
103 скачивания
Вернуться к началу
СообщениеДобавлено: Вс май 10, 2009 8:23 am 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Поддержит ли сообщество переписывание программ, использующих макросы editbox, checkbox,radiobutton на то, что бы программы использовали системную библиотеку box_lib.obj ? Переписывание даст экономию ~ 1 кб для каждой программы. Я могу переписать программы RDSAVE, RUN, SCRNSHOOT и другие.


Вернуться к началу
СообщениеДобавлено: Вс май 10, 2009 9:37 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Переделал для примера RUN программу. Лучше всего оценивать упакованную kpack программу. Старая версия с макросами упакованная занимает 2175 байт, а новая версия, в которой подключается библиотека занимает 1248 байт. Т.е. экономия составляет 927 байт. Однако, при работе новая версия в ОЗУ занимает значительно больше места.
Программа RUN залита на SVN - огромная просьба провести тестирование программы.


Вернуться к началу
СообщениеДобавлено: Вс май 10, 2009 9:48 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
to ALL
Если найдуться желающие действительно писать на MSVC++, специально для них, я напишу обертки на C++ для макроса load_lib.mac и сделаю несколько примеров на MSVC++, как можно быстро разрабатывать код используя системную библиотеку.


Вернуться к началу
СообщениеДобавлено: Пн май 11, 2009 12:09 am 
<Lrz>
Алексей, блин, у мну такое очучение последнее время, что ты прям вчера родился... Ну, нах оно им нужно?! Они же сюда оттянуться ходют - не больше не меньше...

Возможно будут пользоваться 2-3 человека от силы, но не сейчас и не для того к чему ты призываешь.


Вернуться к началу
   
СообщениеДобавлено: Пн май 11, 2009 4:44 am 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Я не теряю надежды, сейчас мало людей будут писать на асме для Колибри, разработчиков знающий С++ больше, есть вероятность, что кто-то захочет писать/портировать программу, и вот для этого случая можно будет использовать системную библиотеку.
В общем, если кому нужны будут обертки и примеры использования на MSVC++ пишем мне в PM.


Вернуться к началу
СообщениеДобавлено: Пн май 11, 2009 3:25 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн ноя 05, 2007 12:09 am
Сообщения: 32
<Lrz> писал(а):
Программа RUN залита на SVN - огромная просьба провести тестирование программы.

Ядро 1067, образ 0.7.5.0, qemu 0.10.1, fasm (linux) version 1.67.38
Размер программы на диске: было 2097, стало 1247 (разница в 850 байт)
Размер программы в памяти: было 8000, стало 20480 (разница в 12480 байт)
Программа работает нормально.


Вернуться к началу
СообщениеДобавлено: Чт май 14, 2009 6:12 am 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Сделал описание, как можно использовать макрос load_lib.mac.
Выкладываю демо
Замечания, предложения, и т.д. прошу в личку.


Вложения:
prog_guide.7z [18.11 КБ]
100 скачиваний
Вернуться к началу
СообщениеДобавлено: Ср июн 03, 2009 8:49 am 
Не в сети
Аватара пользователя

Зарегистрирован: Чт мар 01, 2007 7:57 pm
Сообщения: 835
<Lrz> писал(а):
Программа RUN залита на SVN - огромная просьба провести тестирование программы.

Пытался запустить ac97snd с файлом mp3, содержащим пробелы в имени. Run пишет, что программа успешно запущена, но на самом деле ничего не запустилось, хотя я заключил имя файла в кавычки.

_________________
Всех выше те, кто доброе творят,
И за дела добра не ждут наград,
Всем жертвуют для страждущих людей,
Не думая о выгоде своей.


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

Часовой пояс: UTC+03:00


Кто сейчас на конференции

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


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB