- PVSM.RU - https://www.pvsm.ru -
Многие люди задаются вопросом: «Можно ли написать программу на Си под KolibriOS?»
Ответ: «Да, можно!», и ниже я расскажу, как это сделать.
Для написания программы, нам понадобятся:
В KolibriOS существует два вида программ: оконные и консольные. Консольная программа пишется с использованием библиотеки console.obj [5]. Сегодня мы напишем оконное приложение.
Оконное приложение состоит из функции main(), в которой есть специальный обработчик сообщений:
while(!0){
switch(_ksys_wait_for_event(10)){
case 2: return 0;
case 3:
if(_ksys_get_button_id() == 1)return 0;
break;
default:
//Здесь задаются команды, с помощью которых можно нарисовать окно.
break;
}
}
}
Сообщения бывают от клавиатуры, кнопок. Для удобства разработки, мы вынесем команды, которые отвечают за внешний вид окна, в отдельную функцию draw_window().
Теперь пришло время разобраться, как же нарисовать окно.
Рисование окна начинается с функции _ksys_window_redraw(1), и заканчивается _ksys_window_redraw(2). Для рисования окна, нужно воспользоваться функцией _ksys_draw_window (координата окна по х, координата окна по у, ширина, высота, цвет, тип окна и т.д.);
Типы окон:
0 — прозрачное;
1 — без скина, можно изменить размер;
2 — без скина, размер изменить нельзя;
3 — со скином, размер изменить можно;
4 — без скина, размер изменить нельзя.
И наконец, чтобы нарисовать текст, нужно воспользоваться: _ksys_write_text (координата х, координата у, тип шрифта, строка, длина строки);
Писать программу можно прямо в КолибриОС. Открываем Tinypad, и пишем такой код:
#include <stdio.h>
#include <string.h>
#include <kolibrisys.h>
#define FONT0 0
#define FONT1 0x10000000
char header[]={"Hello World!"};
#define BT_NORMAL 0
#define BT_DEL 0x80000000
#define BT_HIDE 0x40000000
#define BT_NOFRAME 0x20000000
void draw_window(){
_ksys_window_redraw(1);
_ksys_draw_window(100, 100, 300, 120, 0xaabbcc, 4, 0x5080d0, 0, 0x5080d0);
_ksys_write_text(50,30,FONT0, header, strlen(header));
_ksys_window_redraw(2);
}
int main(int argc, char **argv){
while(!0){
switch(_ksys_wait_for_event(10)){
case 2:return 0;
case 3:
if(_ksys_get_button_id() == 1)return 0;
break;
default:
draw_window();
break;
}
}
}
Если вы писали код не в Колибри, сбросьте его на флешку вместе с компилятором [3]. Например, я сохраню файл под именем hello.c.
Для людей, которые не могут установить Колибри, можно подключить флешку к виртуальной машине:
Для компиляции, откроем в консоли (Shell) директорию, где лежит компилятор, и введём такую команду
ktcc.kex <имя_исходного_файла> libck.a –o <имя_готовой_программы>
Если всё сделано правильно, мы увидим нашу программу в той же директории. Теперь её можно запустить.
И получим следующую картину:
Повторюсь, что обсудить ktcc (и программы для него) можно на нашем форуме [4].
Автор: Sasha_Pitenin
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/operatsionny-e-sistemy/55591
Ссылки в тексте:
[1] нашего сайта: http://kolibrios.org/ru/download
[2] TCC: http://bellard.org/tcc/
[3] скачать на нашем форуме: http://board.kolibrios.org/download/file.php?id=3696
[4] board.kolibrios.org/viewtopic.php?f=45&t=565: http://board.kolibrios.org/viewtopic.php?f=45&t=565
[5] console.obj: http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fprograms%2Fdevelop%2Flibraries%2Fconsole%2Fconsole.asm
[6] Источник: http://habrahabr.ru/post/212169/
Нажмите здесь для печати.