Начал делать поддержку файловых функций.
Сейчас поддерживаются только указатели на имя файла.
Имена непосредственно в структурах не поддерживаются.
Также не поддерживаются относительные пути.
Но обычно программы используют как раз относительные пути.
Однако тестовые примеры(с указателями) работали.
Добавил загрузку библиотек.
Некоторый код был взят из
KlbrInWin.
Валидации
COFF сейчас нет, но можно взять нужный код из проекта
CoffDump http://board.kolibrios.org/viewtopic.php?f=9&t=3577
Работает программа
h2d2b, использующая
EditBox из
box_lib.
Можно вводить числа и по нажатию клавиши
Enter получать результат.
Также работает
RUN(она тоже использует
EditBox из
box_lib).
Можно ввести имя программы(например,
/sys/calc) и запустить её клавишей
Enter.
Большинство других программ помимо библиотек используют неподдерживаемые возможности файловых функций, поэтому такие программы вылетают.
Для сборки сейчас есть три варианта:
- make.bat — обычное исполнение программы
- make(debug).bat — с выводом информации о регистрах и параметрах системных функций в консоль.
- make(debug_by_step).bat — выполнение останавливается на каждой системной функции, информация также выводится в консоль, чтобы продолжить выполнение нужно в консоли нажать Enter.
Сейчас можно задать соответствие файловых путей
Windows и
KolibriOS.
При запуске создаётся такой ключ реестра(если он ещё не был создан):
HKEY_LOCAL_MACHINE\Software\KEm(KolibriOS API Emulator)\Partitions
В качестве параметров — пути
KolibriOS, в качестве значений — пути
Windows.
Чтобы сопоставить пути нужно задать нужные значения для соответствующих параметров.
У меня вот так:
Spoiler:
-
registry.PNG (8.41 KiB)
Viewed 10527 times
0CodErr wrote:Kopa wrote:P.S. При перемещении демо-сердца заметил, что текстовая информация исчезла.
Да, было при изменении размеров
Проявляется обычно так: засунуть окно под другое окно, взять за заголовок и не отпуская вытащить из-под другого окна.
Но если просто активировать окно кликом мыши, то оно перерисовывается.
Скорее всего в этот момент
WM_PAINT отправляется напрямую в оконную процедуру, минуя очередь сообщений.
Соответственно, это сообщение не отлавливается в
GetMessage\
PeekMessage.
Надо, вероятно, добавить обработку
WM_PAINT в оконной процедуре(делать
UpdateWindow).
При запуске программы если необходимо, то копируются переданные параметры командной строки и путь к программе.
Но только если этот путь имеет соответствие(
KolibriOS <->
Windows) в реестре. Иначе не копируется.
GetThreadInfo теперь пишет в
MemAddress адрес загрузки.
Теперь работает
SetWindowPos, например, в
cubeline по клавише
F, в
heliothryx в
settings(
x1,
x2,
x3).
Теперь, кстати, можно поиграть в
2048