Subversion Repositories Kolibri OS

Rev

Rev 8582 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. console.obj ýêñïîðòèðóåò ñëåäóþùèå ôóíêöèè:
  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[<number1>;<number2>;<number3>m - âûáîð àòðèáóòîâ ñèìâîëîâ:
  59.                 ìîæíî óêàçûâàòü îäèí, äâà èëè òðè êîäà â ëþáîì ïîðÿäêå;
  60.                 0 = íîðìàëüíîå èçîáðàæåíèå (áåëûå ñèìâîëû íà ÷¸ðíîì ôîíå)
  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 = áåëûé ôîí
  80.         Ñëåäóþùèå ïîñëåäîâàòåëüíîñòè ïîÿâèëèñü â âåðñèè 5 áèáëèîòåêè:
  81.         Esc[<number>A - ïåðåìåñòèòü êóðñîð íà <number> ñòðîê ââåðõ
  82.         Esc[<number>B - ïåðåìåñòèòü êóðñîð íà <number> ñòðîê âíèç
  83.         Esc[<number>C - ïåðåìåñòèòü êóðñîð íà <number> ïîçèöèé âïðàâî
  84.         Esc[<number>D - ïåðåìåñòèòü êóðñîð íà <number> ïîçèöèé âëåâî
  85.         Esc[<number1>;<number2>H = Esc[<number1>;<number2>f -
  86.                 óñòàíîâèòü êóðñîð â ïîçèöèþ ñ êîîðäèíàòàìè <number1>,<number2>         
  87.         Esc[2J - î÷èñòèòü ýêðàí, ïåðåìåñòèòü êóðñîð â ëåâûé âåðõíèé óãîë
  88.         Ñëåäóþùèå ïîñëåäîâàòåëüíîñòè ïîÿâèëèñü â âåðñèè 9 áèáëèîòåêè:
  89.         Esc[J or Esc[0J - Erase everything below cursor
  90.         Esc[1J - Erase everything above cursor 
  91.         Esc[K - Erase in line
  92.         Esc[<number>L - Insert <number> lines at the cursor position
  93.         Esc[<number>M - Delete <number> lines at the cursor position
  94.         Esc[<number>P - Delete <number chars at the cursor position
  95.         Esc[<number>X - Erase <number chars at the cursor position
  96.         Esc[<number>d - Set cursor to absolute line position
  97.         Esc[<number1>;<number2>f - Cursor position
  98.         Esc[<mode>h - Set mode (see below)
  99.         Esc[<mode>l - Reset mode (see below)
  100.         The following modes are currently supported:
  101.                 ?1 - Application cursor keys
  102.                 ?25 - Show/Hide cursor
  103.                 ?1049 - Alternative screen buffer. The alternative buffer has no scrollback.
  104.         Esc[<number1>;<number2>r - Set scroll region from row <number1> to row <number2>
  105.                 (Use in combination with insert/delete lines)
  106.         Esc]0<string>ST/BEL - Set window caption. The string is terminated with ASCII char 0x07 or 0x9C.
  107.         Esc]2<string>ST/BEL - Implemented identical as Esc]0.
  108.        
  109. */
  110. /* ñèãíàë î çàêðûòèè îêíà êîíñîëè; ïîÿâèëñÿ â âåðñèè 6 áèáëèîòåêè;
  111.         ôëàã èãíîðèðóåòñÿ ôóíêöèåé con_set_flags */
  112. #define CON_WINDOW_CLOSED 0x200
  113. Çíà÷åíèå ïî óìîë÷àíèþ äëÿ ôëàãîâ = 7.
  114.  
  115. int __stdcall con_get_font_height(void);
  116. Âîçâðàùàåò çíà÷åíèå âûñîòû øðèôòà.
  117.  
  118. int __stdcall con_get_cursor_height(void);
  119. Ïîëó÷àåò çíà÷åíèå âûñîòû êóðñîðà.
  120. int __stdcall con_set_cursor_height(int new_height);
  121. Óñòàíàâëèâàåò çíà÷åíèå âûñîòû êóðñîðà. Âîçâðàùàåò ñòàðîå çíà÷åíèå.
  122. Ïîïûòêà óñòàíîâèòü çíà÷åíèå âíå êîððåêòíîãî èíòåðâàëà (îò 0 äî font_height-1)
  123. èãíîðèðóåòñÿ.
  124. Êóðñîð âûñîòû 0 íå îòîáðàæàåòñÿ íà ýêðàíå.
  125. Çíà÷åíèå âûñîòû ïî óìîë÷àíèþ - 15% îò âûñîòû øðèôòà.
  126.  
  127. int __stdcall con_getch(void);
  128. Ñ÷èòûâàåò îäèí ñèìâîë ñ êëàâèàòóðû.
  129. Äëÿ îáû÷íûõ ñèìâîëîâ âîçâðàùàåòñÿ ASCII-êîä. Äëÿ ðàñøèðåííûõ ñèìâîëîâ
  130. (íàïðèìåð, Fx è ñòðåëî÷åê) ïåðâûé âûçîâ ôóíêöèè âîçâðàùàåò 0,
  131. à ïîâòîðíûé âûçîâ âîçâðàùàåò ðàñøèðåííûé êîä (ïîäîáíî DOS-ôóíêöèÿì ââîäà).
  132. Íà÷èíàÿ ñ âåðñèè 7 áèáëèîòåêè, ïîñëå çàêðûòèÿ îêíà êîíñîëè âîçâðàùàåòñÿ
  133. çíà÷åíèå 0.
  134.  
  135. word __stdcall con_getch2(void);
  136. Ñ÷èòûâàåò îäèí ñèìâîë ñ êëàâèàòóðû. Ìëàäøèé áàéò ñîäåðæèò ASCII-êîä êëàâèøè
  137. (0 äëÿ ðàñøèðåííûõ ñèìâîëîâ), ñòàðøèé - ðàñøèðåííûé êîä
  138. (ïîäîáíî BIOS-ôóíêöèÿì ââîäà).
  139. Íà÷èíàÿ ñ âåðñèè 7 áèáëèîòåêè, ïîñëå çàêðûòèÿ îêíà êîíñîëè âîçâðàùàåòñÿ
  140. çíà÷åíèå 0.
  141.  
  142. int __stdcall con_kbhit(void);
  143. Âîçâðàùàåò 1, åñëè êàêàÿ-òî êëàâèøà áûëà íàæàòà, 0 èíà÷å. Äëÿ ñ÷èòûâàíèÿ
  144. íàæàòîé êëàâèøè ïðåäíàçíà÷åíû ôóíêöèè con_getch è con_getch2.
  145. Íà÷èíàÿ ñ âåðñèè 6 áèáëèîòåêè, ïîñëå çàêðûòèÿ îêíà êîíñîëè âñåãäà âîçâðàùàåò 1.
  146.  
  147. char* __stdcall con_gets(char* str, int n);
  148. Ñ÷èòûâàåò ñòðîêó ñ êëàâèàòóðû. Ââîä ïðåðûâàåòñÿ ïðè ïîñòóïëåíèè ñèìâîëà
  149. íîâîé ñòðîêè, à òàêæå ïî ïðî÷òåíèè n-1 ñèìâîëà (â çàâèñèìîñòè îò òîãî, ÷òî
  150. ïðîèçîéä¸ò ðàíüøå).  ïåðâîì ñëó÷àå ñèìâîë íîâîé ñòðîêè òàêæå çàïèñûâàåòñÿ â
  151. str. Ñ÷èòàííàÿ ñòðîêà äîïîëíÿåòñÿ íóëåâûì ñèìâîëîì.
  152. Íà÷èíàÿ ñ âåðñèè 6 áèáëèîòåêè, ôóíêöèÿ âîçâðàùàåò óêàçàòåëü íà ââåä¸ííóþ
  153. ñòðîêó ïðè óñïåøíîì ÷òåíèè è NULL, åñëè îêíî êîíñîëè áûëî çàêðûòî. Äî âåðñèè
  154. 6 âîçâðàùàåìîå çíà÷åíèå áûëî íåîïðåäåëåíî.
  155.  
  156. typedef int (__stdcall * con_gets2_callback)(int keycode, char** pstr, int* pn, int* ppos);
  157. char* __stdcall con_gets2(con_gets2_callback callback, char* str, int n);
  158. Ôóíêöèÿ ïîÿâèëàñü â âåðñèè 4 áèáëèîòåêè.
  159. Ïîëíîñòüþ àíàëîãè÷íà con_gets çà èñêëþ÷åíèåì òîãî, ÷òî êîãäà ïîëüçîâàòåëü
  160. íàæèìàåò íåðàñïîçíàííóþ êëàâèøó, âûçûâàåòñÿ óêàçàííàÿ callback-ïðîöåäóðà
  161. (êîòîðàÿ ìîæåò, íàïðèìåð, îáðàáàòûâàòü up/down äëÿ èñòîðèè ââîäà è tab äëÿ
  162. àâòîäîïîëíåíèÿ). Ïðîöåäóðå ïåðåäà¸òñÿ êîä êëàâèøè è òðè óêàçàòåëÿ - íà ñòðîêó,
  163. íà ëèìèò è íà òåêóùóþ ïîçèöèþ â ñòðîêå. Ïðîöåäóðà ìîæåò ìåíÿòü ñîäåðæèìîå
  164. ñòðîêè è ìîæåò ìåíÿòü ñàìó ñòðîêó (íàïðèìåð, ïåðåðàñïðåäåëèòü ïàìÿòü äëÿ
  165. óâåëè÷åíèÿ ëèìèòà), ëèìèò, ïîçèöèþ â ñòðîêå - äëÿ ýòîãî è ïåðåäàþòñÿ óêàçàòåëè.
  166. Âîçâðàùàåìîå çíà÷åíèå: 0=ñòðîêà íå ìåíÿëàñü; 1=ñòðîêà èçìåíèëàñü, íåîáõîäèìî
  167. óäàëèòü ñòàðóþ è âûâåñòè íîâóþ; 2=ñòðîêà èçìåíèëàñü, íåîáõîäèìî å¸ âûâåñòè;
  168. 3=íåìåäëåííî âûéòè èç ôóíêöèè.
  169. Íà÷èíàÿ ñ âåðñèè 6 áèáëèîòåêè, ôóíêöèÿ âîçâðàùàåò óêàçàòåëü íà ââåä¸ííóþ
  170. ñòðîêó ïðè óñïåøíîì ÷òåíèè è NULL, åñëè îêíî êîíñîëè áûëî çàêðûòî. Äî âåðñèè
  171. 6 âîçâðàùàåìîå çíà÷åíèå áûëî íåîïðåäåëåíî.
  172.  
  173. void __stdcall con_cls();
  174. Ôóíêöèÿ ïîÿâèëàñü â âåðñèè 5 áèáëèîòåêè.
  175. Î÷èùàåò ýêðàí è ïåðåâîäèò êóðñîð â ëåâûé âåðõíèé óãîë.
  176.  
  177. void __stdcall con_get_cursor_pos(int* px, int* py);
  178. Ôóíêöèÿ ïîÿâèëàñü â âåðñèè 5 áèáëèîòåêè.
  179. Çàïèñûâàåò â *px òåêóùóþ êîîðäèíàòó êóðñîðà ïî îñè x, â *py - ïî îñè y.
  180.  
  181. void __stdcall con_set_cursor_pos(int x, int y);
  182. Ôóíêöèÿ ïîÿâèëàñü â âåðñèè 5 áèáëèîòåêè.
  183. Óñòàíàâëèâàåò êóðñîð â ïîçèöèþ ñ óêàçàííûìè êîîðäèíàòàìè. Åñëè êàêîé-òî èç
  184. ïàðàìåòðîâ âûõîäèò çà ïðåäåëû ñîîòâåòñòâóþùåãî äèàïàçîíà (îò 0 äî scr_width-1
  185. äëÿ x, îò 0 äî scr_height-1 äëÿ y, scr_width è scr_height áûëè çàäàíû ïðè
  186. âûçîâå con_init), òî ñîîòâåòñòâóþùàÿ êîîðäèíàòà êóðñîðà íå ìåíÿåòñÿ.
  187.  
  188. int __stdcall con_get_input(char* buf, int buflen);
  189. Read as many input events as are available and fit in the receive buffer.
  190. Input event can be regular ASCII code from keyboard, but also escape codes for special keys.
  191. The support for mouse events via escape codes is not yet implemented.