Rev 1003 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1003 | leency | 1 | #code32 TRUE |
2 | |||
3 | char os_name[8] = {'M','E','N','U','E','T','0','1'}; |
||
4 | dword os_version = 0x00000001; |
||
5 | dword start_addr = #main; |
||
6 | dword final_addr = #stop+32; |
||
7 | dword alloc_mem = 0x00100000; |
||
8 | dword x86esp_reg = 0x0007fff0; |
||
9 | dword I_Param = 0x0; |
||
10 | dword I_Icon = 0x0; |
||
11 | |||
12 | #define evButton 3 |
||
13 | #define evKey 2 |
||
14 | #define evReDraw 1 |
||
15 | |||
16 | #define BT_DEL 0x80000000 |
||
17 | #define BT_HIDE 0x40000000 |
||
18 | #define BT_NOFRAME 0x20000000 |
||
19 | |||
20 | |||
21 | |||
22 | inline fastcall dword WaitEvent(){ |
||
23 | EAX = 10; // wait here for event |
||
24 | $int 0x40 |
||
25 | } |
||
26 | |||
27 | |||
28 | inline fastcall void ExitProcess(){ |
||
29 | EAX = -1; // close this program |
||
30 | $int 0x40 |
||
31 | } |
||
32 | |||
33 | inline fastcall word GetKey(){ |
||
34 | EAX = 2; // just read it key from buffer |
||
35 | $int 0x40 |
||
36 | EAX = EAX >> 8; |
||
37 | } |
||
38 | |||
39 | inline fastcall word GetButtonID(){ |
||
40 | EAX = 17; // Get ID |
||
41 | $int 0x40 |
||
42 | EAX = EAX >> 8; |
||
43 | } |
||
44 | |||
45 | inline fastcall dword GetSkinWidth() |
||
46 | { |
||
47 | EAX = 48; |
||
48 | EBX = 4; |
||
49 | $int 0x40 |
||
50 | } |
||
51 | |||
52 | inline fastcall void DeleteButton(dword EDX) |
||
53 | { |
||
54 | EAX = 8; |
||
55 | EDX += BT_DEL; |
||
56 | $int 0x40; |
||
57 | } |
||
58 | |||
59 | inline fastcall dword strlen(dword EDI){ |
||
60 | ECX=EAX=0; |
||
61 | ECX--; |
||
62 | $REPNE $SCASB |
||
63 | EAX-=2+ECX; |
||
64 | } |
||
65 | |||
66 | |||
67 | inline fastcall void WindowRedrawStatus(dword EBX){ |
||
68 | EAX = 12; |
||
69 | $int 0x40 |
||
70 | } |
||
71 | |||
72 | |||
73 | void DefineAndDrawWindow(dword x,y,sizeX,sizeY,byte mainAreaType,dword mainAreaColour,byte headerType,dword headerColour,EDI) |
||
74 | { |
||
75 | EBX = x << 16 + sizeX; |
||
76 | ECX = y << 16 + sizeY; |
||
77 | EDX = mainAreaType << 24 | mainAreaColour; |
||
78 | ESI = headerType << 24 | headerColour; |
||
79 | $xor eax,eax |
||
80 | $int 0x40 |
||
81 | } |
||
82 | |||
83 | void DefineButton(dword x,y,w,h,EDX,ESI) |
||
84 | { |
||
85 | EAX = 8; |
||
86 | EBX = x<<16+w; |
||
1006 | leency | 87 | ECX = y<<16+h; |
1003 | leency | 88 | $int 0x40 |
89 | } |
||
90 | |||
91 | void WriteText(dword x,y,byte fontType, dword color, EDX, ESI) |
||
92 | { |
||
93 | EAX = 4; |
||
1006 | leency | 94 | EBX = x<<16+y; |
1003 | leency | 95 | ECX = fontType<<24+color; |
96 | $int 0x40; |
||
97 | } |
||
98 | |||
99 | |||
100 | void DrawBar(dword x,y,w,h,EDX) |
||
101 | { |
||
102 | EAX = 13; |
||
103 | EBX = x<<16+w; |
||
1006 | leency | 104 | ECX = y<<16+h; |
1003 | leency | 105 | $int 0x40 |
106 | } |
||
107 | |||
108 | |||
109 | void DrawRegion(dword x,y,width,height,color1) |
||
110 | { |
||
111 | DrawBar(x,y,width,1,color1); //полоса гор сверху |
||
112 | DrawBar(x,y+height,width,1,color1); //полоса гор снизу |
||
113 | DrawBar(x,y,1,height,color1); //полоса верт слева |
||
114 | DrawBar(x+width,y,1,height+1,color1); //полоса верт справа |
||
115 | } |
||
116 | |||
117 | void DrawFlatButton(dword x,y,width,height,id,color,text) |
||
118 | { |
||
119 | DrawRegion(x,y,width,height,0x94AECE); |
||
120 | DrawBar(x+1,y+1,width-1,1,0xFFFFFF); //полоса гор белая |
||
121 | DrawBar(x+1,y+height-1,width-2,1,0xC7C7C7); //тень верт |
||
122 | DrawBar(x+1,y+1,1,height-1,0xFFFFFF); //полоса верт белая |
||
123 | DrawBar(x+width-1,y+2,1,height-2,0xC7C7C7); //тень верт |
||
124 | DrawBar(x+2,y+2,width-3,height-3,color); //заливка |
||
125 | IF (id<>0) DefineButton(x,y,width,height,id+BT_HIDE,0xEFEBEF); //определяем кнопку |
||
126 | WriteText(-strlen(text)*6+width/2+x+1,height/2-3+y,0x80,0,text,0); |
||
127 | } |
||
128 | |||
129 | |||
1006 | leency | 130 | void PutImage(dword EBX,w,h,x,y) |
1003 | leency | 131 | { |
132 | EAX = 7; |
||
133 | ECX = w<<16+h; |
||
1006 | leency | 134 | EDX = x<<16+y; |
1003 | leency | 135 | $int 0x40 |
136 | } |
||
137 | |||
138 | |||
139 | void copystr(dword s,d) |
||
140 | { |
||
141 | $mov esi,s |
||
142 | $mov edi,d |
||
143 | $cld |
||
144 | l1: |
||
145 | $lodsb |
||
146 | $stosb |
||
147 | $test al,al |
||
148 | $jnz l1 |
||
149 | } |
||
150 | |||
1006 | leency | 151 | void WriteNumber(dword x,y,byte fontType, ESI, ECX) |
1003 | leency | 152 | { |
1006 | leency | 153 | EAX = 47; |
154 | EBX = 2<<16; |
||
155 | /*ecx = 0 |
||
156 | while(eax>10) |
||
157 | { |
||
158 | ecx ++; |
||
159 | eax /= 10; |
||
160 | }*/ |
||
161 | EDX = x<<16+y; |
||
162 | ESI = fontType<<24+ESI; |
||
163 | $int 0x40; |
||
164 | }24+ESI; |