#code32 TRUE char os_name[8] = {'M','E','N','U','E','T','0','1'}; dword os_version = 0x00000001; dword start_addr = #main; dword final_addr = #stop+32; dword alloc_mem = 0x00100000; dword x86esp_reg = 0x0007fff0; dword I_Param = 0x0; dword I_Icon = 0x0; #define evButton 3 #define evKey 2 #define evReDraw 1 #define BT_DEL 0x80000000 #define BT_HIDE 0x40000000 #define BT_NOFRAME 0x20000000 inline fastcall dword WaitEvent(){ EAX = 10; // wait here for event $int 0x40 } inline fastcall void ExitProcess(){ EAX = -1; // close this program $int 0x40 } inline fastcall word GetKey(){ EAX = 2; // just read it key from buffer $int 0x40 EAX = EAX >> 8; } inline fastcall word GetButtonID(){ EAX = 17; // Get ID $int 0x40 EAX = EAX >> 8; } inline fastcall dword GetSkinWidth() { EAX = 48; EBX = 4; $int 0x40 } inline fastcall void DeleteButton(dword EDX) { EAX = 8; EDX += BT_DEL; $int 0x40; } inline fastcall dword strlen(dword EDI){ ECX=EAX=0; ECX--; $REPNE $SCASB EAX-=2+ECX; } inline fastcall void WindowRedrawStatus(dword EBX){ EAX = 12; $int 0x40 } void DefineAndDrawWindow(dword x,y,sizeX,sizeY,byte mainAreaType,dword mainAreaColour,byte headerType,dword headerColour,EDI) { EBX = x << 16 + sizeX; ECX = y << 16 + sizeY; EDX = mainAreaType << 24 | mainAreaColour; ESI = headerType << 24 | headerColour; $xor eax,eax $int 0x40 } void DefineButton(dword x,y,w,h,EDX,ESI) { EAX = 8; EBX = x<<16+w; ECX = y<<16+h; $int 0x40 } void WriteText(dword x,y,byte fontType, dword color, EDX, ESI) { EAX = 4; EBX = x<<16+y; ECX = fontType<<24+color; $int 0x40; } void DrawBar(dword x,y,w,h,EDX) { EAX = 13; EBX = x<<16+w; ECX = y<<16+h; $int 0x40 } void DrawRegion(dword x,y,width,height,color1) { DrawBar(x,y,width,1,color1); //полоса гор сверху DrawBar(x,y+height,width,1,color1); //полоса гор снизу DrawBar(x,y,1,height,color1); //полоса верт слева DrawBar(x+width,y,1,height+1,color1); //полоса верт справа } void DrawFlatButton(dword x,y,width,height,id,color,text) { DrawRegion(x,y,width,height,0x94AECE); DrawBar(x+1,y+1,width-1,1,0xFFFFFF); //полоса гор белая DrawBar(x+1,y+height-1,width-2,1,0xC7C7C7); //тень верт DrawBar(x+1,y+1,1,height-1,0xFFFFFF); //полоса верт белая DrawBar(x+width-1,y+2,1,height-2,0xC7C7C7); //тень верт DrawBar(x+2,y+2,width-3,height-3,color); //заливка IF (id<>0) DefineButton(x,y,width,height,id+BT_HIDE,0xEFEBEF); //определяем кнопку WriteText(-strlen(text)*6+width/2+x+1,height/2-3+y,0x80,0,text,0); } void PutImage(dword EBX,w,h,x,y) { EAX = 7; ECX = w<<16+h; EDX = x<<16+y; $int 0x40 } void copystr(dword s,d) { $mov esi,s $mov edi,d $cld l1: $lodsb $stosb $test al,al $jnz l1 } void WriteNumber(dword x,y,byte fontType, ESI, ECX) { EAX = 47; EBX = 2<<16; /*ecx = 0 while(eax>10) { ecx ++; eax /= 10; }*/ EDX = x<<16+y; ESI = fontType<<24+ESI; $int 0x40; }