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 |