//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: