Subversion Repositories Kolibri OS

Rev

Rev 623 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
643 bw 1
 
2
{-$codepage cp866}
3
4
 
623 bw 5
{$smartlink on}
6
{$apptype console}
7
8
 
9
  т.е. директива console обязательна, поведение программы при отсутствии этой
643 bw 10
  директивы предопределить нельзя. Гарантированно нельзя использовать функции
623 bw 11
  Write, WriteLn, Read, ReadLn относительно стандартной консоли ввода/вывода.
12
}
13
14
 
15
16
 
17
  и реализованы только под KolibriOS. Их использование в любых программных
18
  приложениях категорически не рекомендовано, выносите все методы, использующие
19
  эти функции, в отдельные модули (и используйте необходимые абстракции).
20
}
21
22
 
23
{ Вывод содержимого окна приложения }
24
begin
25
  kos_begindraw();
26
  {определение параметров окна}
643 bw 27
  kos_definewindow(200, 200, 200, 50, $23AABBCC);
623 bw 28
  {kos_definewindow не имеет параметра для вывода заголовка,
29
   делаем это отдельной функцией kos_setcaption}
643 bw 30
  {отображение заголовка окна}
31
  kos_setcaption('ПРИМЕР ПРОГРАММЫ');
623 bw 32
  {вывод сообщения}
643 bw 33
  kos_drawtext(3, 8, 'Нажмите любую клавишу...');
623 bw 34
  kos_enddraw();
35
end;
36
37
 
38
{ Обработка события нажатия клавиши }
39
var
40
  Key: DWord;
41
  Notes: array[0..3] of Byte;
42
begin
43
  Key := kos_getkey();
44
  {настраиваем буфер для нот}
45
  Notes[0] := $90;
46
  Notes[1] := Key shr 8;
47
  Notes[2] := $00;
48
  {воспроизводим}
49
  kos_speaker(@Notes);
643 bw 50
end;
623 bw 51
52
 
53
 
54
{ Обработка события нажатия кнопки GUI }
55
var
56
 Button: DWord;
57
begin
58
  {получить код нажатой кливиши}
643 bw 59
  Button := kos_getbutton();
623 bw 60
  {если [x], то вернуть ложь, а значит спровоцировать закрытие приложения}
643 bw 61
  Result := Button <> 1;
62
end;
623 bw 63
64
 
65
 
66
{ Ожидание и обработка событий.
643 bw 67
68
 
69
  @rtype: True или False }
623 bw 70
var
71
  Event: DWord;
72
begin
73
  Result := True;
643 bw 74
  {ожидаем события от системы}
623 bw 75
  Event := kos_getevent();
76
  case Event of
77
    SE_PAINT   : DoPaint;  {перерисовка окна}
78
    SE_KEYBOARD: DoKey;    {событие от клавиатуры}
79
    SE_BUTTON  : Result := DoButton; {собыие от кнопки, может определить
80
                                      завершение приложения, если вернет False}
643 bw 81
  end;
623 bw 82
end;
83
84
 
85
 
86
{ Главный цикл приложения }
87
var
88
  ThreadSlot: TThreadSlot;
89
begin
90
  {настраиваем события, которые мы готовы обрабатывать}
91
  kos_maskevents(ME_PAINT or ME_KEYBOARD or ME_BUTTON);
92
  {обработка событий}
643 bw 93
  while ProcessMessage do;
94
end;
623 bw 95
96
 
97
 
98
  WriteLn('Look for a new window, I''m just a konsole ;-)');
643 bw 99
  MainLoop;
623 bw 100
end.
101