//EditBox in C-- example v0.1
//Veliant 2007 Leency 2008

#pragma option A
#codesize
#include "..\lib\kolibri.h--"
#include "use_library.h--"
//////////////////////////////////////////////////////////////////
//Bit mask from editbox 
//////////////////////////////////////////////////////////////////

//char edit_path[256] = "You can edit me!"; //содержимое EditBox'a
char way_of_ini[250] = "/sys/lib/box_lib.obj",NULL; //содержимое EditBox'a
dword mouse_dd;
edit_box edit1= {250,14,35,0xffffff,0x6f9480,0,0xAABBCC,0,248,#way_of_ini,#mouse_dd,2,20,20};

//ed_width        equ [edi]               ;ширина компонента
//ed_left         equ [edi+4]             ;положение по оси х
//ed_top          equ [edi+8]             ;положение по оси у
//ed_color        equ [edi+12]            ;цвет фона компонента
//shift_color     equ [edi+16]            ;=0x6a9480
//ed_focus_border_color   equ [edi+20]    ;цвет рамки компонента
//ed_blur_border_color    equ [edi+24]    ;цвет не активного компонента
//ed_text_color   equ [edi+28]            ;цвет текста
//ed_max          equ [edi+32]            ;кол-во символов которые можно максимально ввести
//ed_text         equ [edi+36]            ;указатель на буфер
//ed_flags        equ [edi+40]            ;флаги
//ed_size equ [edi+42]                    ;кол-во символов
//ed_pos  equ [edi+46]                    ;позиция курсора
//ed_offset       equ [edi+50]            ;смещение
//cl_curs_x       equ [edi+54]            ;предыдущее координата курсора по х
//cl_curs_y       equ [edi+58]            ;предыдущее координата курсора по у
//ed_shift_pos    equ [edi+62]            ;положение курсора
//ed_shift_pos_old equ [edi+66]           ;старое положение курсора

proc_info       Form;


void main()   
byte id;
{
   load_dll();
     
        draw_window();
        loop()
        {
                switch(WaitEvent())
                {
             //Button pressed----------------------------------------------------
                        CASE evButton:
                                id=GetButtonID();
                                IF (id==1) || (id==2) ExitProcess();
                                        break;
                //Key pressed-------------------------------------------------------
                        case evKey:
                                   GetKey();
                        edit_box_key stdcall (#edit1);
                                  break;
                           
                        case evReDraw: draw_window();   break;
                     //   default: break;              
                }       


                edit_box_mouse stdcall (#edit1);
             
         }
                
        ExitProcess();
}

void draw_window()
{
        WindowRedrawStatus(1);
        skin_width = GetSkinWidth();
        DefineAndDrawWindow(400,200,280,200,0x04,0x00E4DFE1,0,0,0); DrawTitle("Extended EditBox in C--");
        Form.getme();
        //ЄхъёЄ
                WriteText(30,40,0x80,0,"Наипростейший пример EditBox'a на С--",0);
                WriteText(30,50,0x80,0,"Но его можно немного усложнить с целью",0);
                WriteText(30,60,0x80,0,"уменьшения перерисовки.",0);
        //ъэюя√
                DrawFlatButton(100,105,70,22,2,0xD7D7D7,"Close");
        //EditBox
       // DrawRegion(30,14,201,16,0x94AECE); //ободок полосы адреса

        
        edit_box_draw  stdcall (#edit1);
//      typedef void (*edit_box_draw)(dword edit_b); // объявление указателя на функцию
//      edit_box_draw(edit_b); // вызов функции

        WindowRedrawStatus(2);
}


stop:
