Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. {$codepage cp866}
  2. {$mode objfpc}
  3. {$smartlink on}
  4. {$apptype console}
  5.  
  6. {   ¤ ­­ë© ¬®¬¥­â à áᬠâਢ ¥âáï ¢ë¯®«­¥­¨¥ ¯à¨«®¤¥­¨ï ⮫쪮 ª ª ª®­á®«ì­®¥,
  7.   â.¥. ¤¨à¥ªâ¨¢  concole ®¡ï§ â¥«ì­ , ¯®¢¥¤¥­¨¥ ¯à®£à ¬¬ë ¯à¨ ®âáãâá⢨¨ í⮩
  8.   ¤¨à¥ªâ¨¢ë ¯à¥¤®¯à¥¤¥«¨âì ­¥«ì§ï. ƒ à ­â¨à®¢ ­­® ­¥«ì§ï ¨á¯®«ì§®¢ âì ä㭪樨
  9.   Write, WriteLn, Read, ReadLn ®â­®á¨â¥«ì­® áâ ­¤ àâ­®© ª®­á®«¨ ¢¢®¤ /¢ë¢®¤ .
  10. }
  11.  
  12. program Example;
  13.  
  14. { ‚ᥠä㭪樨 ¨¬¥î騥 ¢ ᢮¥¬ ¨¬¥­¨ ¯à¥ä¨ªá 'kos_' ïîâáï ¯« âä®à¬®§ ¢¨á¨¬ë¬¨
  15.   ¨ ॠ«¨§®¢ ­ë ⮫쪮 ¯®¤ KolibriOS. ˆå ¨á¯®«ì§®¢ ­¨¥ ¢ «î¡ëå ¯à®£à ¬¬­ëå
  16.   ¯à¨«®¦¥­¨ïå ª â¥£®à¨ç¥áª¨ ­¥ ४®¬¥­¤®¢ ­®, ¢ë­®á¨â¥ ¢á¥ ¬¥â®¤ë, ¨á¯®«ì§ãî騥
  17.   í⨠ä㭪樨, ¢ ®â¤¥«ì­ë¥ ¬®¤ã«¨ (¨ ¨á¯®«ì§ã©â¥ ­¥®¡å®¤¨¬ë¥  ¡áâࠪ樨).
  18. }
  19.  
  20. procedure DoPaint;
  21. { ‚뢮¤ ᮤ¥à¦¨¬®£® ®ª­  ¯à¨«®¦¥­¨ï }
  22. begin
  23.   kos_begindraw();
  24.   {®¯à¥¤¥«¥­¨¥ ¯ à ¬¥â஢ ®ª­  (0)}
  25.   kos_definewindow(200, 200, 200, 50, $23AABBCC);
  26.   {kos_definewindow ­¥ ¨¬¥¥â ¯ à ¬¥âà  ¤«ï ¢ë¢®¤  § £®«®¢ª ,
  27.    ¤¥« ¥¬ íâ® ®â¤¥«ì­®© ä㭪樥©}
  28.   {kos_setcaption, ®â®¡à ¦¥­¨¥ § £®«®¢ª  ®ª­  (71.1)}
  29.   kos_setcaption('ˆŒ… Žƒ€ŒŒ›');
  30.   {¢ë¢®¤ á®®¡é¥­¨ï (4)}
  31.   kos_drawtext(3, 8, ' ¦¬¨â¥ «î¡ãî ª« ¢¨èã...');
  32.   kos_enddraw();
  33. end;
  34.  
  35. procedure DoKey;
  36. { Ž¡à ¡®âª  ᮡëâ¨ï ­ ¦ â¨ï ª« ¢¨è¨ }
  37. var
  38.   Key: DWord;
  39.   Notes: array[0..3] of Byte;
  40. begin
  41.   Key := kos_getkey();
  42.   {­ áâà ¨¢ ¥¬ ¡ãä¥à ¤«ï ­®â}
  43.   Notes[0] := $90;
  44.   Notes[1] := Key shr 8;
  45.   Notes[2] := $00;
  46.   {¢®á¯à®¨§¢®¤¨¬}
  47.   kos_speak(@Notes);
  48. end;
  49.  
  50.  
  51. function DoButton: Boolean;
  52. { Ž¡à ¡®âª  ᮡëâ¨ï ­ ¦ â¨ï ª­®¯ª¨ GUI }
  53. var
  54.  Button: DWord;
  55. begin
  56.   {¯®«ãç¨âì ª®¤ ­ ¦ â®© ª«¨ë¨è¨}
  57.   Button := kos_getbutton();
  58.   {¥á«¨ X, â® § ¢¥à襭¨¥ ¯à¨«®¦¥­¨ï}
  59.   Result := Button = 1;
  60. end;
  61.  
  62.  
  63. function ProcessMessage: Boolean;
  64. { @return: ‚®§¢à é ¥â False, ¥á«¨ ¡ë«® ᮡë⨥ ª § ¢¥à襭¨î ¯à¨«®¦¥­¨ï.
  65.   @rtype: True ¨«¨ False }
  66. var
  67.   Event: DWord;
  68. begin
  69.   Result := False;
  70.   {®¦¨¤ ¥¬ ᮡëâ¨ï ®â á¨á⥬ë}
  71.   Event := kos_getevent();
  72.   case Event of
  73.     SE_PAINT   : DoPaint;  {¯¥à¥à¨á®¢ª  ®ª­ }
  74.     SE_KEYBOARD: DoKey;    {ᮡë⨥ ®â ª« ¢¨ âãàë}
  75.     SE_BUTTON  : Result := DoButton; {ᮡ먥 ®â ª­®¯ª¨, ¬®¦¥â ®¯à¥¤¥«¨âì
  76.                                       § ¢¥à襭¨¥ ¯à¨«®¦¥­¨ï, ¥á«¨ ¢¥à­¥â True}
  77.   end;
  78. end;
  79.  
  80.  
  81. procedure MainLoop;
  82. { ƒ« ¢­ë© 横« ¯à¨«®¦¥­¨ï }
  83. var
  84.   ThreadSlot: TThreadSlot;
  85. begin
  86.   {ᤥ« âì íâ® ®ª­®  ªâ¨¢­ë¬}
  87.   ThreadSlot := kos_getthreadslot(ThreadID);
  88.   kos_setactivewindow(ThreadSlot);
  89.   {­ áâà ¨¢ ¥¬ ᮡëâ¨ï, ª®â®àë¥ ¬ë £®â®¢ë ®¡à ¡ â뢠âì}
  90.   kos_maskevents(ME_PAINT or ME_KEYBOARD or ME_BUTTON);
  91.   {£« ¢­ë© 横«}
  92.   while not ProcessMessage do;
  93. end;
  94.  
  95.  
  96. begin
  97.   WriteLn('Look for a new window, I''m just a konsole, hi mike ;-)');
  98.   MainLoop;
  99. end.
  100.