Page 5 of 77

Re: Помогите новичку

Posted: Wed Feb 20, 2008 11:04 pm
by Gluk
именно это я и должен получить.. // окно со скином (не фикс. размеров), остальное не имеет насколько вижу значения

Re: Помогите новичку

Posted: Thu Feb 21, 2008 12:14 am
by Gluk
Все, проблема решена, за что огромное спасибо Велианту =)

Re: Помогите новичку

Posted: Thu Feb 21, 2008 5:56 pm
by Dronchik
А есть ли какое либо руководство, туториал по программированию на С++ под КолибриОС?

Re: Помогите новичку

Posted: Thu Feb 21, 2008 7:09 pm
by Gluk
нет

Re: Помогите новичку

Posted: Fri Feb 22, 2008 10:32 am
by Dronchik
Gluk, а как тогда научиться программировать по КоОС на С++, если нет обучающей статьи или чего то ещё?

Re: Помогите новичку

Posted: Fri Feb 22, 2008 10:53 am
by Heavyiron
Dronchik, hello world на различных языках есть вот тут: http://diamondz.land.ru/hll/hll.htm

Re: Помогите новичку

Posted: Fri Feb 22, 2008 12:28 pm
by Leency
Dronchik wrote:Gluk, а как тогда научиться программировать по КоОС на С++, если нет обучающей статьи или чего то ещё?
На примерах. Вначале хелло_ворлда, как показал Heavyiron, а потом можно исходники Косилки или Эолайта поизучать. Будут вопросы - задавай сдесь.
А учебник, если очень хочешь, сдесь:
http://ru.wikibooks.org/wiki/%D0%A1%D0% ... 1%8E%D1%81
или сдесь
http://www.intuit.ru/department/pl/plintro/7/

Re: Помогите новичку

Posted: Fri Feb 22, 2008 1:10 pm
by Dronchik
Leency, на самом С++ я программировать умею на должном уровне. Мне нужна хоть какая та документация по программированию под КоОС на С++. Потому что я asm вообще не знаю((( Сейчас изучаю примеры, проги, игры и либы на С++ под КоОС.

Re: Помогите новичку

Posted: Fri Feb 22, 2008 8:02 pm
by SHREDER
При программировании на С++ есть ряд сложностей (если это не С с классами [и то проблемы]).
STL и libstdc++ юзать нельзя, они обращаются к malloc и free из либ компилятора твоей системы.
Что бы написать нечто на плюсах надо подсунуть компилятору инородный STL (например от силикон графикс) и new.h delete.h (и cpp соответсвенно minuetlibc/libcpp) возможно и еще целый ряд файлов например ansidecl.h и т.д и с этим уже билдить kolibc ибо minuetlibc ИМХО но - анус.

Короче все крайне не тривиально, пока что API колибри крайне низкоуровневый.

P.S. все вышеперечисленное относится по большей степени к GCC компилятору. Под майкрософт и ватком другие заморочки.

P.P.S. Если писать просто на С можно совсем не использовать чужие либы, а воспользоваться внутренним ассемблером с помощью вставок. Информация по системным вызовам лежит на главном сайте http://www.kolibrios.org/?p=Documentati ... mFunctions

Например пишеш такую функцию (на примере майкрософта):

Code: Select all

int GetEvent() {
  int result = 0;
  const int fnum = 0x10;
  __asm {
     mov eax,fnum
     int 40h
     mov result,eax
  }
   return result;
}
И будет тебе функция схожая с GetMessage из Win32 API.
Общий принцип такой в eax регистре - номер функции, параметры в других регистрах как указанно в документации к данной функции, вызов int 40h активирует системный вызов и возвращаемые значения (если таковые есть) в регистрах как указано в документации к функции. Часто прийдется использовать операции >> << | ! и &.
mov перемещает из регистров в память(переменные) и обратно (а так-же из регистра в регистр).
Регистр - нечто вроде переменной типа unsigned int. Всего регистров общего назначения 8 (см документацию по процессору Intel) они 4-х байтные (или 6 если процессор 64 - разрядный) обратится можно как ко всему регистру так и к его части например eax - весе 4 байта, ex - 2 младших байта и ah, al всего один байт h-старший l-младший.
В общем особо серьезных знаний ассемблера не требуется для банального вызова системных функций колибри.

Re: Помогите новичку

Posted: Tue Mar 04, 2008 6:34 pm
by Leency
Два вопроса:
1. Клавиши 1,2,3,4...0 дублируют функциональные клавиши F1,F2,F3...F12 по функциям :) Тоесть нажатие клавиши 3 и F2 в моей проге равнозначные, как F5 и 6. Что делать? :)
2. Как реализовать нажатие клавиши с удерживаемым шифтом? На Си.
Вот нажатие клавиши V имеет определённый код, нажатие Ctrl+V тоже. Но код нажатия Shift+V = V. Что в таком случае делать?
3. Можно ли програмно включать\выключать нам лок на асме?

Re: Помогите новичку

Posted: Tue Mar 04, 2008 7:19 pm
by paladinrus
А если самому сначала детектить нажатие шифта?)

Re: Помогите новичку

Posted: Tue Mar 04, 2008 7:27 pm
by Leency
А какой код шифта?)

Re: Помогите новичку

Posted: Tue Mar 04, 2008 9:12 pm
by Gluk
неужели в документации не сказано про шифт?

Re: Помогите новичку

Posted: Wed Mar 05, 2008 12:24 am
by Leency
От диамонда получил соответствующие ответы.

Re: Помогите новичку

Posted: Tue Mar 11, 2008 10:53 pm
by Albom
Пишу программу на Си. Не получается получить путь к файлу. Хотя в эмуляторе работает. По-моему проблемы с распределением адресов в заголовке. У меня:
Start - 0x0024
End - 0x0808
Memory - 0x1a80
Stack - 0x1880
Param - 0x1980
Path - 0x1880
Кто-нибудь знает, здесь ли ошибка? Заранее спасибо.