Page 2 of 5

Re: Создание приложений на классах

Posted: Thu Nov 13, 2014 4:20 pm
by Nikolai1
Assembler++
Это как? простой Assembler даже пробовал изучать, но как-то не пошло(( PHP например я быстро освоил, C++ тоже пока более менее даётся :wink:

Re: Создание приложений на классах

Posted: Thu Nov 13, 2014 4:21 pm
by Mario_r4
Nikolai1 wrote:
Assembler++
Это как? простой Assembler даже пробовал изучать, но как-то не пошло(( PHP например я быстро освоил, C++ тоже пока более менее даётся :wink:
Это макросы. Много макросов.

Re: Создание приложений на классах

Posted: Thu Nov 13, 2014 4:23 pm
by CleverMouse
Nikolai1 wrote:Например хотелось бы использовать контейнеры vector и map. Они есть под Kolibri?
В smalllibc - нет. В menuetlibc есть простой вариант vector, но никакого map. Serge залил полноценную libstdc++-v3, хотя я её не проверяла, но это очень тяжёлая зависимость, намертво завязанная на gcc. И menuetlibc, и libstdc++-v3 для возможности использования сейчас требуют настройки сильно тяжелее, чем "запустил exe-шник, нажал на кнопку, получил проект для msvc".

Re: Создание приложений на классах

Posted: Thu Nov 13, 2014 8:38 pm
by Nikolai1
MSVC++ не даёт использовать виртуальные функции при компиляции под Kolibri
даже такой код не работает:

Code: Select all

class Base {
public:
virtual void test() { // определение виртуальной функции

}
};
пишет:
1>core.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall Control::draw(void)" (?draw@Control@@UAEXXZ)"
1>core.obj : error LNK2001: неразрешенный внешний символ ""const type_info::`vftable'" (??_7type_info@@6B@)"
1>smalllibc.lib(kosSyst.obj) : error LNK2001: неразрешенный внешний символ ""void __cdecl kos_Main(void)" (?kos_Main@@YAXXZ)"
1>D:\kos\test\Release\test.exe : fatal error LNK1120: 3 неразрешенных внешних элементов

Re: Создание приложений на классах

Posted: Thu Nov 13, 2014 8:53 pm
by CleverMouse
Недоработка генератора. В проекте нужно отключить генерацию RTTI, в русскоязычной VS это называется Свойства -> C/C++ -> Язык -> Включить информацию о типах времени выполнения, опция должна быть "Нет (/GR-)". Свойства открываются либо по выбору последнего пункта из меню по щелчку правой кнопкой на проекте в окне обозревателя решений, либо через меню Проект -> Свойства.

Re: Создание приложений на классах

Posted: Thu Nov 13, 2014 9:52 pm
by Nikolai1
CleverMouse, спасибо большое) теперь работает! :wink:
Хранение всех элементов интерфейса в одном массиве сделал!

Re: Создание приложений на классах

Posted: Thu Nov 13, 2014 10:21 pm
by CleverMouse
Я обновила генератор.

Re: Создание приложений на классах

Posted: Thu Nov 13, 2014 10:59 pm
by Nikolai1
Box_lib подключить получилось, взял код подключения из программы Table.
Вывожу поле для редактирования текста edit_box таким кодом:

Code: Select all

	kol_struct_import *k = load_edit_box();

	dword_func* edit_box_draw = (dword_func*)kol_cofflib_procload(k, "edit_box");
	char edit_text[256];
	Dword mouse_dd;
	edit_box cell_box = {0,9*8-5,400 - 16-32,0xffffff,0x6a9480,0,0x808080,0,255,(Dword)&edit_text,(Dword)&mouse_dd,0};

	cell_box.width = 50;
	cell_box.left = 100;
	cell_box.top = 10;

	edit_box_draw((Dword)&cell_box);
Поле выводится нормально, только в нём почему-то нельзя редактировать текст. Не подскажете, в чём может быть причина?

Posted: Thu Nov 13, 2014 11:21 pm
by punk_joker
В обработчике событий надо вызывать edit_box_key

Posted: Thu Nov 13, 2014 11:26 pm
by punk_joker
И надо установливать фокус на поле ввода. Описане библиотеки http://wiki.kolibrios.org/wiki/Box_lib_editbox/ru

Re: Создание приложений на классах

Posted: Fri Nov 14, 2014 2:01 am
by pascualle
Nikolai1 wrote:Например хотелось бы использовать контейнеры vector и map
Могу предложить сишные самописные (потому что самому интереснее)
allocator_array -- что-то похожее на vector, использующее аллокатор
allocator_list -- что-то похожее на list, использующее аллокатор
(static_allocator.h находится на уровень выше)
pool_list -- что-то похожее на list, использующее указанный размер пула

скачать можно тут

Re: Создание приложений на классах

Posted: Tue Nov 18, 2014 2:52 pm
by Nikolai1
Можно. Лучший язык программирования в Колибри для новичков это Assembler++.
Я бы очень хотел, чтобы в Kolibri можно было программировать на C++ без всяких заморочек, чтобы можно было без проблем использовать существующие библиотеки.

Сделаю для этого всё, что в моих силах :wink:

Re: Создание приложений на классах

Posted: Tue Nov 18, 2014 5:50 pm
by pascualle
Nikolai1 wrote:Я бы очень хотел, чтобы в Kolibri можно было программировать на C++ без всяких заморочек
И как бы в подтверждение своих слов вы выбрали аватарку с надписью PHP :)

Re: Создание приложений на классах

Posted: Tue Nov 18, 2014 6:13 pm
by Nikolai1
И как бы в подтверждение своих слов вы выбрали аватарку с надписью PHP
Я просто на PHP уже несколько лет программирую, это мой "родной" язык :D

Re: Создание приложений на классах

Posted: Tue Nov 18, 2014 11:59 pm
by Mario_r4
Nikolai1 wrote:Я просто на PHP уже несколько лет программирую, это мой "родной" язык :D
От оно как! Мы то думали, что ваш родной язык - русский, а оказывается вы по слоновьи лучше понимаете. Будем это учитывать.