Rev 2599 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6699 | clevermous | 1 | console.dll экспортирует следующие функции: |
836 | diamond | 2 | |
3 | typedef unsigned long dword; /* 32-битное беззнаковое целое */ |
||
4 | typedef unsigned short word; /* 16-битное беззнаковое целое */ |
||
5 | |||
6 | void __stdcall con_init(dword wnd_width, dword wnd_height, |
||
7 | dword scr_width, dword scr_height, const char* title); |
||
8 | Инициализация консоли. Вызывается один раз в начале программы. |
||
9 | wnd_width, wnd_height - высота и ширина (в символах) видимой в окне консоли |
||
10 | области; |
||
11 | scr_width, scr_height - высота и ширина (в символах) всей консоли; |
||
12 | любые из первых 4 параметров могут быть установлены в -1 (=0xFFFFFFFF) |
||
13 | - использовать значения по умолчанию; |
||
14 | title - заголовок окна консоли. |
||
15 | |||
16 | void __stdcall con_exit(bool bCloseWindow); |
||
17 | Вызывается при завершении программы. Если (байтовый) параметр bCloseWindow |
||
18 | нулевой, то окно консоли остаётся на экране до того момента, как пользователь |
||
19 | пожелает закрыть его, при этом к заголовку добавляется строка " [Finished]". |
||
20 | |||
21 | void __stdcall con_set_title(const char* title); |
||
22 | Устанавливает новый заголовок окна консоли. |
||
23 | |||
24 | void __stdcall con_write_asciiz(const char* string); |
||
25 | Выводит ASCIIZ-строку в консоль в текущую позицию, продвигает текущую позицию. |
||
26 | |||
27 | void __stdcall con_write_string(const char* string, dword length); |
||
28 | Аналогично con_write_asciiz, но выводит ровно length символов. |
||
29 | |||
30 | int __cdecl con_printf(const char* format, ...) |
||
31 | Стандартная printf из ANSI C. |
||
32 | |||
33 | dword __stdcall con_get_flags(void); |
||
34 | Получает значение флагов вывода. |
||
35 | dword __stdcall con_set_flags(dword new_flags); |
||
36 | Устанавливает значение флагов вывода. Возвращает старое значение. |
||
37 | Флаги (битовая маска): |
||
38 | /* цвет текста */ |
||
39 | #define CON_COLOR_BLUE 1 |
||
40 | #define CON_COLOR_GREEN 2 |
||
41 | #define CON_COLOR_RED 4 |
||
42 | #define CON_COLOR_BRIGHT 8 |
||
43 | /* цвет фона */ |
||
44 | #define CON_BGR_BLUE 0x10 |
||
45 | #define CON_BGR_GREEN 0x20 |
||
46 | #define CON_BGR_RED 0x40 |
||
47 | #define CON_BGR_BRIGHT 0x80 |
||
48 | /* управление выводом */ |
||
49 | #define CON_IGNORE_SPECIALS 0x100 |
||
50 | /* Если флаг сброшен, функция интерпретирует специальные символы: |
||
51 | 10 ('\n') - перевод в начало следующей строки |
||
52 | 13 ('\r') - перевод в начало текущей строки |
||
53 | 8 ('\b') - забой (на символ назад) |
||
54 | 9 ('\t') - табуляция |
||
55 | 27 ('\033'='\x1B') - начало Esc-последовательности; |
||
56 | иначе выводит их как обычные символы. */ |
||
57 | /* Поддерживаемые Esc-последовательности: |
||
58 | Esc[ |
||
59 | можно указывать один, два или три кода в любом порядке; |
||
60 | |||
61 | 1 = выделение яркостью |
||
62 | 5 = яркий фон |
||
63 | 7 = реверсное изображение (чёрные символы на белом фоне) |
||
64 | 30 = чёрные символы |
||
65 | 31 = красные символы |
||
66 | 32 = зелёные символы |
||
67 | 33 = коричневые символы |
||
68 | 34 = синие символы |
||
69 | 35 = фиолетовые символы |
||
70 | 36 = бирюзовые символы |
||
71 | 37 = белые символы |
||
72 | 40 = чёрный фон |
||
73 | 41 = красный фон |
||
74 | 42 = зелёный фон |
||
75 | 43 = коричневый фон |
||
76 | 44 = синий фон |
||
77 | 45 = фиолетовый фон |
||
78 | 46 = бирюзовый фон |
||
79 | 47 = белый фон |
||
853 | diamond | 80 | Следующие последовательности появились в версии 5 библиотеки: |
81 | Esc[2J - очистить экран, переместить курсор в левый верхний угол |
||
82 | Esc[ |
||
83 | установить курсор в позицию с координатами |
||
84 | Esc[ |
||
85 | Esc[ |
||
86 | Esc[ |
||
87 | Esc[ |
||
836 | diamond | 88 | */ |
1145 | diamond | 89 | /* сигнал о закрытии окна консоли; появился в версии 6 библиотеки; |
1133 | diamond | 90 | флаг игнорируется функцией con_set_flags */ |
91 | #define CON_WINDOW_CLOSED 0x200 |
||
836 | diamond | 92 | Значение по умолчанию для флагов = 7. |
93 | |||
94 | int __stdcall con_get_font_height(void); |
||
95 | Возвращает значение высоты шрифта. |
||
96 | |||
97 | int __stdcall con_get_cursor_height(void); |
||
98 | Получает значение высоты курсора. |
||
99 | int __stdcall con_set_cursor_height(int new_height); |
||
100 | Устанавливает значение высоты курсора. Возвращает старое значение. |
||
101 | Попытка установить значение вне корректного интервала (от 0 до font_height-1) |
||
102 | игнорируется. |
||
103 | Курсор высоты 0 не отображается на экране. |
||
104 | Значение высоты по умолчанию - 15% от высоты шрифта. |
||
105 | |||
106 | int __stdcall con_getch(void); |
||
107 | Считывает один символ с клавиатуры. |
||
108 | Для обычных символов возвращается ASCII-код. Для расширенных символов |
||
109 | (например, Fx и стрелочек) первый вызов функции возвращает 0, |
||
110 | а повторный вызов возвращает расширенный код (подобно DOS-функциям ввода). |
||
1145 | diamond | 111 | Начиная с версии 7 библиотеки, после закрытия окна консоли возвращается |
112 | значение 0. |
||
836 | diamond | 113 | |
114 | word __stdcall con_getch2(void); |
||
115 | Считывает один символ с клавиатуры. Младший байт содержит ASCII-код клавиши |
||
116 | (0 для расширенных символов), старший - расширенный код |
||
117 | (подобно BIOS-функциям ввода). |
||
1145 | diamond | 118 | Начиная с версии 7 библиотеки, после закрытия окна консоли возвращается |
119 | значение 0. |
||
836 | diamond | 120 | |
121 | int __stdcall con_kbhit(void); |
||
122 | Возвращает 1, если какая-то клавиша была нажата, 0 иначе. Для считывания |
||
123 | нажатой клавиши предназначены функции con_getch и con_getch2. |
||
1133 | diamond | 124 | Начиная с версии 6 библиотеки, после закрытия окна консоли всегда возвращает 1. |
836 | diamond | 125 | |
1133 | diamond | 126 | char* __stdcall con_gets(char* str, int n); |
836 | diamond | 127 | Считывает строку с клавиатуры. Ввод прерывается при поступлении символа |
128 | новой строки, а также по прочтении n-1 символа (в зависимости от того, что |
||
129 | произойдёт раньше). В первом случае символ новой строки также записывается в |
||
130 | str. Считанная строка дополняется нулевым символом. |
||
1133 | diamond | 131 | Начиная с версии 6 библиотеки, функция возвращает указатель на введённую |
132 | строку при успешном чтении и NULL, если окно консоли было закрыто. До версии |
||
133 | 6 возвращаемое значение было неопределено. |
||
852 | diamond | 134 | |
135 | typedef int (__stdcall * con_gets2_callback)(int keycode, char** pstr, int* pn, int* ppos); |
||
1133 | diamond | 136 | char* __stdcall con_gets2(con_gets2_callback callback, char* str, int n); |
853 | diamond | 137 | Функция появилась в версии 4 библиотеки. |
852 | diamond | 138 | Полностью аналогична con_gets за исключением того, что когда пользователь |
139 | нажимает нераспознанную клавишу, вызывается указанная callback-процедура |
||
140 | (которая может, например, обрабатывать up/down для истории ввода и tab для |
||
141 | автодополнения). Процедуре передаётся код клавиши и три указателя - на строку, |
||
142 | на лимит и на текущую позицию в строке. Процедура может менять содержимое |
||
143 | строки и может менять саму строку (например, перераспределить память для |
||
144 | увеличения лимита), лимит, позицию в строке - для этого и передаются указатели. |
||
145 | Возвращаемое значение: 0=строка не менялась; 1=строка изменилась, необходимо |
||
146 | удалить старую и вывести новую; 2=строка изменилась, необходимо её вывести; |
||
147 | 3=немедленно выйти из функции. |
||
1133 | diamond | 148 | Начиная с версии 6 библиотеки, функция возвращает указатель на введённую |
149 | строку при успешном чтении и NULL, если окно консоли было закрыто. До версии |
||
150 | 6 возвращаемое значение было неопределено. |
||
853 | diamond | 151 | |
152 | void __stdcall con_cls(); |
||
153 | Функция появилась в версии 5 библиотеки. |
||
154 | Очищает экран и переводит курсор в левый верхний угол. |
||
155 | |||
156 | void __stdcall con_get_cursor_pos(int* px, int* py); |
||
157 | Функция появилась в версии 5 библиотеки. |
||
158 | Записывает в *px текущую координату курсора по оси x, в *py - по оси y. |
||
159 | |||
160 | void __stdcall con_set_cursor_pos(int x, int y); |
||
161 | Функция появилась в версии 5 библиотеки. |
||
162 | Устанавливает курсор в позицию с указанными координатами. Если какой-то из |
||
163 | параметров выходит за пределы соответствующего диапазона (от 0 до scr_width-1 |
||
164 | для x, от 0 до scr_height-1 для y, scr_width и scr_height были заданы при |
||
165 | вызове con_init), то соответствующая координата курсора не меняется. |