Subversion Repositories Kolibri OS

Rev

Rev 4084 | Rev 4146 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4084 Rev 4088
1
;idbRRedrawFon equ 100
1
;idbRRedrawFon equ 100
2
;idbRAlign    equ 101
2
;idbRAlign    equ 101
3
;idbRFixIcons equ 102
3
;idbRFixIcons equ 102
4
;idbRAdd      equ 103
4
;idbRAdd      equ 103
5
;idbRDel      equ 104
5
;idbRDel      equ 104
6
;idbRProp     equ 105
6
;idbRProp     equ 105
7
 
7
 
8
DELTA_COLOR  equ 70
8
DELTA_COLOR  equ 70
9
COLOR_SEL_BUT equ 00F7092Dh
9
COLOR_SEL_BUT equ 00F7092Dh
10
MAX_USER_BUTTONS equ 30
10
MAX_USER_BUTTONS equ 30
11
 
11
 
12
;---- thread for rbutton -----------------------------------------------------------------------
12
;---- thread for rbutton -----------------------------------------------------------------------
13
RButtonWin:
13
RButtonWin:
14
       if lang eq ru
14
       if lang eq ru
15
        mov     [MinRMenuW],18*6+10
15
        mov     [MinRMenuW],18*6+10
16
       else
16
       else
17
        mov     [MinRMenuW],15*6+10
17
        mov     [MinRMenuW],15*6+10
18
       end if
18
       end if
19
 
19
 
20
 
20
 
21
 
21
 
22
        mcall   40,100101b      ;SetMaskMessage 100101b
22
        mcall   40,100101b      ;SetMaskMessage 100101b
23
        mcall   48,3,sc,40
23
        mcall   48,3,sc,40
24
 
24
 
25
        mov     eax,[sc.work]     ;¢ëç¨á«ï¥¬ 梥â ᢥ⫥¥ ä®­®¢®£®
25
        mov     eax,[sc.work]     ;¢ëç¨á«ï¥¬ 梥â ᢥ⫥¥ ä®­®¢®£®
26
        rol     eax,16
26
        rol     eax,16
27
        add     al,DELTA_COLOR
27
        add     al,DELTA_COLOR
28
        jnc     @f
28
        jnc     @f
29
        mov     al,0FFh
29
        mov     al,0FFh
30
      @@:
30
      @@:
31
        rol     eax,16
31
        rol     eax,16
32
        add     al,DELTA_COLOR
32
        add     al,DELTA_COLOR
33
        jnc     @f
33
        jnc     @f
34
        mov     al,0FFh
34
        mov     al,0FFh
35
      @@:
35
      @@:
36
        add     ah,DELTA_COLOR
36
        add     ah,DELTA_COLOR
37
        jnc     @f
37
        jnc     @f
38
        mov     ah,0FFh
38
        mov     ah,0FFh
39
      @@:
39
      @@:
40
        mov     [sc.workH],eax
40
        mov     [sc.workH],eax
41
 
41
 
42
        mov     eax,[sc.work]     ;¢ëç¨á«ï¥¬ 梥â ⥬­¥¥ ä®­®¢®£®
42
        mov     eax,[sc.work]     ;¢ëç¨á«ï¥¬ 梥â ⥬­¥¥ ä®­®¢®£®
43
        rol     eax,16
43
        rol     eax,16
44
        sub     al,DELTA_COLOR
44
        sub     al,DELTA_COLOR
45
        jnc     @f
45
        jnc     @f
46
        mov     al,0FFh
46
        mov     al,0FFh
47
      @@:
47
      @@:
48
        rol     eax,16
48
        rol     eax,16
49
        sub     al,DELTA_COLOR
49
        sub     al,DELTA_COLOR
50
        jnc     @f
50
        jnc     @f
51
        mov     al,0FFh
51
        mov     al,0FFh
52
      @@:
52
      @@:
53
        sub     ah,DELTA_COLOR
53
        sub     ah,DELTA_COLOR
54
        jnc     @f
54
        jnc     @f
55
        mov     ah,0FFh
55
        mov     ah,0FFh
56
      @@:
56
      @@:
57
        mov     [sc.workL],eax
57
        mov     [sc.workL],eax
58
 
58
 
59
 
59
 
60
 
60
 
61
        stdcall GetNumIcon,[MouseX],[MouseY],-1
61
        stdcall GetNumIcon,[MouseX],[MouseY],-1
62
        mov     [SelIcon],eax
62
        mov     [SelIcon],eax
63
 
63
 
64
                      ;¢ëáâ ¢«ï¥¬ ¯¥à¢®­ ç «ì­ë¥ §­ ç¥­¨ï
64
                      ;¢ëáâ ¢«ï¥¬ ¯¥à¢®­ ç «ì­ë¥ §­ ç¥­¨ï
65
        m2m     [RMenuW],[MinRMenuW]
65
        m2m     [RMenuW],[MinRMenuW]
66
 
66
 
67
        cmp     [SelIcon],-1
67
        cmp     [SelIcon],-1
68
        jne     .RBW1
68
        jne     .RBW1
69
;----------- ¥á«¨ ª«¨ª ­¥ ¯® ¨ª®­ª¥ ------------------------------------------------
69
;----------- ¥á«¨ ª«¨ª ­¥ ¯® ¨ª®­ª¥ ------------------------------------------------
70
        mov     [NumMenuButt],0
70
        mov     [NumMenuButt],0
71
 
71
 
72
        mcall   70,fiIni
72
        mcall   70,fiIni
73
        mcall   68,12,dword[bufIni+32]  ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¯®¤¯¨á¥© ¨ ¯ã⥩ § ¯ã᪠
73
        mcall   68,12,dword[bufIni+32]  ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¯®¤¯¨á¥© ¨ ¯ã⥩ § ¯ã᪠
74
        mov     [RBMenuCP],eax          ;GetUserBut ¡¥àñâ ®âá ¯¥à¢®­ ç «ì­ë© 㪠§ â¥«ì ­  ¯ ¬ïâì
74
        mov     [RBMenuCP],eax          ;GetUserBut ¡¥àñâ ®âá ¯¥à¢®­ ç «ì­ë© 㪠§ â¥«ì ­  ¯ ¬ïâì
75
        stdcall [ini_enum_keys],IconIni,secRButt,GetUserBut
75
        stdcall [ini_enum_keys],IconIni,secRButt,GetUserBut
76
 
76
 
77
        mov     ebx,[NumMenuButt]
77
        mov     ebx,[NumMenuButt]
78
        add     [NumMenuButt],4
78
        add     [NumMenuButt],4
79
 
79
 
80
        mov     [RBMenuCP+ebx*8],RMenuRedrawFon
80
        mov     [RBMenuCP+ebx*8],RMenuRedrawFon
81
        mov     [RBMenuCP+ebx*8+8],RMenuAlign
81
        mov     [RBMenuCP+ebx*8+8],RMenuAlign
82
        cmp     [bFixIcons],1
82
        cmp     [bFixIcons],1
83
        je      @f
83
        je      @f
84
        mov     [RBMenuCP+ebx*8+16],RMenuOffMoving
84
        mov     [RBMenuCP+ebx*8+16],RMenuOffMoving
85
        jmp     .RBW11
85
        jmp     .RBW11
86
    @@:
86
    @@:
87
        mov     [RBMenuCP+ebx*8+16],RMenuOnMoving
87
        mov     [RBMenuCP+ebx*8+16],RMenuOnMoving
88
    .RBW11:
88
    .RBW11:
89
 
89
 
90
        mov     [RBMenuCP+ebx*8+24],RMenuAdd
90
        mov     [RBMenuCP+ebx*8+24],RMenuAdd
91
 
91
 
92
        mov     [RBMenuCP+ebx*8+4],0
92
        mov     [RBMenuCP+ebx*8+4],0
93
        mov     [RBMenuCP+ebx*8+8+4],0
93
        mov     [RBMenuCP+ebx*8+8+4],0
94
        mov     [RBMenuCP+ebx*8+16+4],0
94
        mov     [RBMenuCP+ebx*8+16+4],0
95
        mov     [RBMenuCP+ebx*8+24+4],0
95
        mov     [RBMenuCP+ebx*8+24+4],0
96
 
96
 
97
 
97
 
98
        jmp     .RBW2
98
        jmp     .RBW2
99
;----------- ¥á«¨ ª«¨ª ¯® ¨ª®­ª¥ ------------------------------------------------
99
;----------- ¥á«¨ ª«¨ª ¯® ¨ª®­ª¥ ------------------------------------------------
100
.RBW1:
100
.RBW1:
101
        xor     ebx,ebx
101
        xor     ebx,ebx
102
        mov     [NumMenuButt],5
102
        mov     [NumMenuButt],5
103
 
103
 
104
        mov     [RBMenuCP+ebx*8],RMenuRedrawFon
104
        mov     [RBMenuCP+ebx*8],RMenuRedrawFon
105
        mov     [RBMenuCP+ebx*8+8],RMenuAlign
105
        mov     [RBMenuCP+ebx*8+8],RMenuAlign
106
        cmp     [bFixIcons],1
106
        cmp     [bFixIcons],1
107
        je      @f
107
        je      @f
108
        mov     [RBMenuCP+ebx*8+16],RMenuOffMoving
108
        mov     [RBMenuCP+ebx*8+16],RMenuOffMoving
109
        jmp     .RBW21
109
        jmp     .RBW21
110
    @@:
110
    @@:
111
        mov     [RBMenuCP+ebx*8+16],RMenuOnMoving
111
        mov     [RBMenuCP+ebx*8+16],RMenuOnMoving
112
    .RBW21:
112
    .RBW21:
113
        mov     [RBMenuCP+ebx*8+24],RMenuDel
113
        mov     [RBMenuCP+ebx*8+24],RMenuDel
114
        mov     [RBMenuCP+ebx*8+32],RMenuProp
114
        mov     [RBMenuCP+ebx*8+32],RMenuProp
115
 
115
 
116
        mov     [RBMenuCP+ebx*8+4],0
116
        mov     [RBMenuCP+ebx*8+4],0
117
        mov     [RBMenuCP+ebx*8+8+4],0
117
        mov     [RBMenuCP+ebx*8+8+4],0
118
        mov     [RBMenuCP+ebx*8+16+4],0
118
        mov     [RBMenuCP+ebx*8+16+4],0
119
        mov     [RBMenuCP+ebx*8+24+4],0
119
        mov     [RBMenuCP+ebx*8+24+4],0
120
        mov     [RBMenuCP+ebx*8+32+4],0
120
        mov     [RBMenuCP+ebx*8+32+4],0
121
 
121
 
122
;-------------------------------------------------------------------------------
122
;-------------------------------------------------------------------------------
123
.RBW2:
123
.RBW2:
124
 
124
 
125
        cmp     [SelIcon],-1
125
        cmp     [SelIcon],-1
126
        jne     @f
126
        jne     @f
127
        mov     eax,[NumMenuButt]
127
        mov     eax,[NumMenuButt]
128
        shl     eax,4
128
        shl     eax,4
129
        mov     [RMenuH],ax
129
        mov     [RMenuH],ax
130
        jmp     .rbw1
130
        jmp     .rbw1
131
      @@:
131
      @@:
132
        mov     [RMenuH],16*5
132
        mov     [RMenuH],16*5
133
    .rbw1:
133
    .rbw1:
134
 
134
 
135
        add     [RMenuW],3              ;­  à ¬ªã
135
        add     [RMenuW],3              ;­  à ¬ªã
136
        add     [RMenuH],3              ;­  à ¬ªã
136
        add     [RMenuH],3              ;­  à ¬ªã
137
 
137
 
138
RBWRedraw:
138
RBWRedraw:
139
        mcall   12,1    ;RedrawWinBeg
139
        mcall   12,1    ;RedrawWinBeg
140
        mov     ebx,[MouseX]
140
        mov     ebx,[MouseX]
141
        shl     ebx,16
141
        shl     ebx,16
142
        mov     bx,[RMenuW]
142
        mov     bx,[RMenuW]
143
 
143
 
144
        mov     ecx,[MouseY]
144
        mov     ecx,[MouseY]
145
        shl     ecx,16
145
        shl     ecx,16
146
        mov     cx,[RMenuH]
146
        mov     cx,[RMenuH]
147
 
147
 
148
        mov     edx,01000000h
148
        mov     edx,01000000h
149
        mov     esi,01000000h
149
        mov     esi,01000000h
150
        xor     eax,eax
150
        xor     eax,eax
151
        int     40h
151
        int     40h
152
 
152
 
153
        and     ebx,0FFFFh      ;ä®­®¢ë© ¯àאַ㣮«ì­¨ª
153
        and     ebx,0FFFFh      ;ä®­®¢ë© ¯àאַ㣮«ì­¨ª
154
        inc     bx
154
        inc     bx
155
        and     ecx,0FFFFh
155
        and     ecx,0FFFFh
156
        inc     cx
156
        inc     cx
157
        mcall   13,,,[sc.work]
157
        mcall   13,,,[sc.work]
158
 
158
 
159
       ;----------- ®¯à¥¤¥«ï¥¬ ¨ à¨á㥬 ª­®¯ª¨
159
       ;----------- ®¯à¥¤¥«ï¥¬ ¨ à¨á㥬 ª­®¯ª¨
160
        mov     ecx,[NumMenuButt]
160
        mov     ecx,[NumMenuButt]
161
        xor     eax,eax
161
  .DrawUB:
162
  .DrawUB:
-
 
163
        push    ecx
162
        push    ecx
164
 
163
 
-
 
164
                mov     eax,[NumMenuButt]
165
        push    eax
165
        sub     eax,ecx
-
 
166
        mov     edx,eax      ;button ID = ®â 0 ¤® NumMenuButt
-
 
167
        or      edx,60000000h
-
 
168
        shl     eax,4+16          ;*16*10000h
166
        stdcall DrawRBLine,eax,0
169
        mov     ecx,eax
-
 
170
        mov     cx,16
-
 
171
 
-
 
172
        xor     ebx,ebx
-
 
173
        mov     bx,[RMenuW]
-
 
174
        mov     esi,[sc.work]
-
 
175
        mcall   8                       ;®¯à¥¤¥«¨«¨
-
 
176
 
-
 
177
        mov     ebx,70000h
-
 
178
        shr     ecx,16
167
        pop     eax
179
        mov     bx,cx
168
        add     eax,16
180
        add     bx,7
-
 
181
 
-
 
182
        mov	ecx,[sc.work_text]
-
 
183
        or      ecx,80000000h
-
 
184
 
-
 
185
        mov     eax,[NumMenuButt]
-
 
186
        sub     eax,[esp]
-
 
187
        mov     edx,[RBMenuCP+eax*8]
-
 
188
        mcall   4  
-
 
189
 
169
 
190
 
170
        pop     ecx
191
        pop     ecx
171
        loop    .DrawUB
192
        loop    .DrawUB
172
  ;---------------
193
  ;---------------
173
 
194
 
174
; ®¡à ¬«ïî騩 ¯àאַ㣮«ì­¨ª
195
; ®¡à ¬«ïî騩 ¯àאַ㣮«ì­¨ª
175
        xor     ebx,ebx            ;¢¥àå
196
        xor     ebx,ebx            ;¢¥àå
176
        mov     bx,[RMenuW]
197
        mov     bx,[RMenuW]
177
        xor     ecx,ecx
198
        xor     ecx,ecx
178
        mcall   38,,,[sc.workL]
199
        mcall   38,,,[sc.workL]
179
 
200
 
180
        mov     bx,[RMenuW]         ;¯à ¢®
201
        mov     bx,[RMenuW]         ;¯à ¢®
181
        shl     ebx,16
202
        shl     ebx,16
182
        mov     bx,[RMenuW]
203
        mov     bx,[RMenuW]
183
        xor     ecx,ecx
204
        xor     ecx,ecx
184
        mov     cx,[RMenuH]
205
        mov     cx,[RMenuH]
185
        mcall
206
        mcall
186
 
207
 
187
        xor     ebx,ebx                  ;­¨§
208
        xor     ebx,ebx                  ;­¨§
188
        mov     bx,[RMenuW]
209
        mov     bx,[RMenuW]
189
        mov     cx,[RMenuH]
210
        mov     cx,[RMenuH]
190
        shl     ecx,16
211
        shl     ecx,16
191
        mov     cx,[RMenuH]
212
        mov     cx,[RMenuH]
192
        mcall
213
        mcall
193
 
214
 
194
        xor     ebx,ebx               ;«¥¢®
215
        xor     ebx,ebx               ;«¥¢®
195
        xor     ecx,ecx
216
        xor     ecx,ecx
196
        mov     cx,[RMenuH]
217
        mov     cx,[RMenuH]
197
        mcall
218
        mcall
198
 
219
 
199
 
220
 
200
; ᢥâ«ë© «¥¢ë© ¢¥àå­¨© 㣮«
221
; ᢥâ«ë© «¥¢ë© ¢¥àå­¨© 㣮«
201
        xor     ebx,ebx
222
        xor     ebx,ebx
202
        mov     bx,[RMenuW]
223
        mov     bx,[RMenuW]
203
        add     ebx,1*10000h-1
224
        add     ebx,1*10000h-1
204
        mov     ecx,00010001h
225
        mov     ecx,00010001h
205
        mcall    ,,,[sc.workH]
226
        mcall    ,,,[sc.workH]
206
 
227
 
207
        mov     ebx,00010001h
228
        mov     ebx,00010001h
208
        xor     ecx,ecx
229
        xor     ecx,ecx
209
        mov     cx,[RMenuH]
230
        mov     cx,[RMenuH]
210
        add     ecx,1*10000h-1
231
        add     ecx,1*10000h-1
211
        mcall
232
        mcall
212
 
233
 
213
 
234
 
214
;ª®­¥æ à¨á®¢ ­¨ï
235
;ª®­¥æ à¨á®¢ ­¨ï
215
        mcall   12,2    ;RedrawWinEnd
236
        mcall   12,2    ;RedrawWinEnd
216
;-------------------------------------------------------------------
237
;-------------------------------------------------------------------
217
 
238
 
218
        mcall   9,RBProcInfo,-1         ;GetThreadInfo RBProcInfo,-1
239
        mcall   9,RBProcInfo,-1         ;GetThreadInfo RBProcInfo,-1
219
        mcall   18,21,dword[RBProcInfo+30]
240
        mcall   18,21,dword[RBProcInfo+30]
220
        m2m     dword[RBSlot],eax
241
        m2m     dword[RBSlot],eax
221
 
242
 
222
RBWMessages:
243
RBWMessages:
223
        mcall   10              ;WaitMessage
244
        mcall   10              ;WaitMessage
224
        dec     eax
245
        dec     eax
225
        jz      RBWRedraw
246
        jz      RBWRedraw
226
        sub     eax,2
247
        sub     eax,2
227
        jz      RBWButton
248
        jz      RBWButton
228
        sub     eax,3
249
        sub     eax,3
229
        jz      RBWMouse
250
        jz      RBWMouse
230
        jmp     RBWMessages
251
        jmp     RBWMessages
231
 
252
 
232
RBWButton:
253
RBWButton:
233
        mcall   17              ;GetButtonPressed
254
        mcall   17              ;GetButtonPressed
234
        shr     eax,8
255
        shr     eax,8
235
 
256
 
236
        mov     ebx,eax
257
        mov     ebx,eax
237
        mov     eax,[RBMenuCP+ebx*8+4] ;¥á«¨ ᤥáì 0, â® ª«¨ª ¯® áâ ­¤ àâ­®© ª­®¯ª¥(ª®â®à ï ­¥ ¢ ini)
258
        mov     eax,[RBMenuCP+ebx*8+4] ;¥á«¨ ᤥáì 0, â® ª«¨ª ¯® áâ ­¤ àâ­®© ª­®¯ª¥(ª®â®à ï ­¥ ¢ ini)
238
        test    eax,eax
259
        test    eax,eax
239
        jnz     .RBWB
260
        jnz     .RBWB
240
        mov     eax,[RBMenuCP+ebx*8]  ;ᬮâਬ, 㪠§ â¥«ì ­  ª ªãî ­ ¤¯¨áì ¢ ¯®¤¯¨á¨
261
        mov     eax,[RBMenuCP+ebx*8]  ;ᬮâਬ, 㪠§ â¥«ì ­  ª ªãî ­ ¤¯¨áì ¢ ¯®¤¯¨á¨
241
        cmp     eax,RMenuRedrawFon                  ; ¨ ¯® ­¥© ¢ë¡¨à ¥¬ ¤¥©á⢨¥
262
        cmp     eax,RMenuRedrawFon                  ; ¨ ¯® ­¥© ¢ë¡¨à ¥¬ ¤¥©á⢨¥
242
        jz      RBRedrawFon
263
        jz      RBRedrawFon
243
        cmp     eax,RMenuAlign
264
        cmp     eax,RMenuAlign
244
        jz      RBAlign
265
        jz      RBAlign
245
        cmp     eax,RMenuOffMoving
266
        cmp     eax,RMenuOffMoving
246
        jz      RBFixIcons
267
        jz      RBFixIcons
247
        cmp     eax,RMenuOnMoving
268
        cmp     eax,RMenuOnMoving
248
        jz      RBFixIcons
269
        jz      RBFixIcons
249
        cmp     eax,RMenuAdd
270
        cmp     eax,RMenuAdd
250
        jz      RBAdd
271
        jz      RBAdd
251
        cmp     eax,RMenuDel
272
        cmp     eax,RMenuDel
252
        jz      RBDelete
273
        jz      RBDelete
253
        cmp     eax,RMenuProp
274
        cmp     eax,RMenuProp
254
        jz      RBPropeties
275
        jz      RBPropeties
255
 
276
 
256
        jmp     RBWExit
277
        jmp     RBWExit
257
   .RBWB:
278
   .RBWB:
258
        mov     dword[fiRunProg+8],0
279
        mov     dword[fiRunProg+8],0
259
        mov     dword[fiRunProg+21],eax
280
        mov     dword[fiRunProg+21],eax
260
        mcall   70,fiRunProg
281
        mcall   70,fiRunProg
261
 
282
 
262
        jmp     RBWExit
283
        jmp     RBWExit
263
 
284
 
264
RBWMouse:
285
RBWMouse:
265
        call    MouseInWin
286
        call    MouseInWin
266
        jnc     .RBWMnoInWin          ;¥á«¨ ¢­¥ ®ª­ , â® ¯à®áâ® ¢®ááâ ­ ¢«¨¢ ¥¬ ¯à¥¤ë¤ãéãî ª­®¯ªã
287
        jnc     .RBWMnoInWin          ;¥á«¨ ¢­¥ ®ª­ , â® ¯à®áâ® ¢®ááâ ­ ¢«¨¢ ¥¬ ¯à¥¤ë¤ãéãî ª­®¯ªã
267
 
288
 
268
        mcall   37,1          ;¯®«®¦¥­¨¥ ¬ëè¨ ®â­®á¨â¥«ì­® ®ª­ 
289
        mcall   37,1          ;¯®«®¦¥­¨¥ ¬ëè¨ ®â­®á¨â¥«ì­® ®ª­ 
269
        and     eax,0FFF0h      ;­ã¦¥­ ⮫쪮 Y, ¯à¨çñ¬ ®ªà㣫ñ­­ë© ¤® ¢¥àå­¥© â®çª¨ ªà â­®© 16(¢ëá®â  ª­®¯ª¨)
290
        and     eax,0FFF0h      ;­ã¦¥­ ⮫쪮 Y, ¯à¨çñ¬ ®ªà㣫ñ­­ë© ¤® ¢¥àå­¥© â®çª¨ ªà â­®© 16(¢ëá®â  ª­®¯ª¨)
270
        cmp     [PredItem],eax
291
        cmp     [PredItem],eax
271
        je      .RBWMendLightBut
292
        je      .RBWMendLightBut
272
 
293
 
273
        shr     eax,4              ;¥á«¨ ¬ëèì ­  ­¨¦­¥© à ¬ª¥, â® â ª¦¥ ⮫쪮 ¢®ááâ ­®¢¨âì ¯à¥¤ë¤ãéãî ª­®¯ªã
294
        shr     eax,4              ;¥á«¨ ¬ëèì ­  ­¨¦­¥© à ¬ª¥, â® â ª¦¥ ⮫쪮 ¢®ááâ ­®¢¨âì ¯à¥¤ë¤ãéãî ª­®¯ªã
274
        cmp     eax,[NumMenuButt]
295
        cmp     eax,[NumMenuButt]
275
        jae     .RBWMnoInWin
296
        jae     .RBWMnoInWin
276
 
297
 
277
        cmp     [PredItem],-1      ;¢®ááâ ­®¢«¥­¨¥ ¯à¥¤ë¤ã饩 ª­®¯ª¨
298
        cmp     [PredItem],-1      ;¢®ááâ ­®¢«¥­¨¥ ¯à¥¤ë¤ã饩 ª­®¯ª¨
278
        je      @f
299
        je      @f
279
 
300
 
280
        stdcall DrawRBLine,[PredItem],0
301
        stdcall DrawRBLine,[PredItem],0
281
 
302
 
282
      @@:
303
      @@:
283
 
304
 
284
        call    MouseInWin
305
        call    MouseInWin
285
        jnc     @f
306
        jnc     @f
286
        mcall   37,1          ;¯®«®¦¥­¨¥ ¬ëè¨ ®â­®á¨â¥«ì­® ®ª­ 
307
        mcall   37,1          ;¯®«®¦¥­¨¥ ¬ëè¨ ®â­®á¨â¥«ì­® ®ª­ 
287
        and     eax,0FFF0h      ;­ã¦¥­ ⮫쪮 Y, ¯à¨çñ¬ ®ªà㣫ñ­­ë© ¤® ¢¥àå­¥© â®çª¨ ªà â­®© 16(¢ëá®â  ª­®¯ª¨)
308
        and     eax,0FFF0h      ;­ã¦¥­ ⮫쪮 Y, ¯à¨çñ¬ ®ªà㣫ñ­­ë© ¤® ¢¥àå­¥© â®çª¨ ªà â­®© 16(¢ëá®â  ª­®¯ª¨)
288
        mov     [PredItem],eax
309
        mov     [PredItem],eax
289
        stdcall DrawRBLine,eax,1
310
        stdcall DrawRBLine,eax,1
290
 
311
 
291
      @@:
312
      @@:
292
        jmp     .RBWMendLightBut
313
        jmp     .RBWMendLightBut
293
 
314
 
294
 
315
 
295
  .RBWMnoInWin:
316
  .RBWMnoInWin:
296
        cmp     [PredItem],-1      ;¢®ááâ ­®¢«¥­¨¥ ¯à¥¤ë¤ã饩 ª­®¯ª¨
317
        cmp     [PredItem],-1      ;¢®ááâ ­®¢«¥­¨¥ ¯à¥¤ë¤ã饩 ª­®¯ª¨
297
        je      .RBWMendLightBut
318
        je      .RBWMendLightBut
298
 
319
 
299
        stdcall DrawRBLine,[PredItem],0
320
        stdcall DrawRBLine,[PredItem],0
300
        mov     [PredItem],-1
321
        mov     [PredItem],-1
301
 
322
 
302
  .RBWMendLightBut:
323
  .RBWMendLightBut:
303
        mcall   37,2            ;GetMouseKey
324
        mcall   37,2            ;GetMouseKey
304
        test    eax,111b
325
        test    eax,111b
305
        jz      RBWMessages
326
        jz      RBWMessages
306
 
327
 
307
        call    MouseInWin
328
        call    MouseInWin
308
        jc      RBWMessages
329
        jc      RBWMessages
309
 
330
 
310
RBWExit:
331
RBWExit:
311
        cmp     [SelIcon],-1
332
        cmp     [SelIcon],-1
312
        jne     @f
333
        jne     @f
313
        mcall   68,13,[RBMenuCP]                        ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì á ¯®¤¯¨áﬨ ¨ ¯ãâﬨ ª ¯à®£ ¬
334
        mcall   68,13,[RBMenuCP]                        ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì á ¯®¤¯¨áﬨ ¨ ¯ãâﬨ ª ¯à®£ ¬
314
      @@:
335
      @@:
315
        mov     [RButtonActiv],0
336
        mov     [RButtonActiv],0
316
        mcall   -1      ;ExitProcess
337
        mcall   -1      ;ExitProcess
317
 
338
 
318
 
339
 
319
RBRedrawFon:
340
RBRedrawFon:
320
        mcall   15,3
341
        mcall   15,3
321
        jmp     RBWExit
342
        jmp     RBWExit
322
 
343
 
323
RBAlign:
344
RBAlign:
324
        call    AlignIcons
345
        call    AlignIcons
325
 
346
 
326
        m2m     [PIcoDB],[BegData]
347
        m2m     [PIcoDB],[BegData]
327
        stdcall [ini_enum_sections],IconIni,Ini_SavePos
348
        stdcall [ini_enum_sections],IconIni,Ini_SavePos
328
 
349
 
329
        mov     dword[fiRunProg+8],WarningSave
350
        mov     dword[fiRunProg+8],WarningSave
330
        mov     dword[fiRunProg+21],pthNotify
351
        mov     dword[fiRunProg+21],pthNotify
331
        mcall   70,fiRunProg
352
        mcall   70,fiRunProg
332
        mov     [bNotSave],0
353
        mov     [bNotSave],0
333
 
354
 
334
        jmp     RBRedrawFon
355
        jmp     RBRedrawFon
335
 
356
 
336
RBFixIcons:
357
RBFixIcons:
337
        xor     dword[bFixIcons],1
358
        xor     dword[bFixIcons],1
338
 
359
 
339
        cmp     [bNotSave],0
360
        cmp     [bNotSave],0
340
        je      @f
361
        je      @f
341
 
362
 
342
        mov     dword[fiRunProg+8],WarningSave
363
        mov     dword[fiRunProg+8],WarningSave
343
        mov     dword[fiRunProg+21],pthNotify
364
        mov     dword[fiRunProg+21],pthNotify
344
        mcall   70,fiRunProg
365
        mcall   70,fiRunProg
345
        mov     [bNotSave],0
366
        mov     [bNotSave],0
346
 
367
 
347
      @@:
368
      @@:
348
        jmp     RBWExit
369
        jmp     RBWExit
349
 
370
 
350
RBAdd:
371
RBAdd:
351
        cmp     [DlgAddActiv],1
372
        cmp     [DlgAddActiv],1
352
        je      RBWSetActivWin
373
        je      RBWSetActivWin
353
        mov     [DlgAddActiv],1
374
        mov     [DlgAddActiv],1
354
 
375
 
355
        mcall   51,1,DlgAdd,stack_dlg           ;CreateThread DlgAdd,stack_dlg
376
        mcall   51,1,DlgAdd,stack_dlg           ;CreateThread DlgAdd,stack_dlg
356
        jmp     RBWExit
377
        jmp     RBWExit
357
 
378
 
358
RBDelete:
379
RBDelete:
359
        mov     eax,[SelIcon]
380
        mov     eax,[SelIcon]
360
        mov     eax,[IconsOffs+eax*4]
381
        mov     eax,[IconsOffs+eax*4]
361
        stdcall [ini_del_section],IconIni,eax
382
        stdcall [ini_del_section],IconIni,eax
362
 
383
 
363
        stdcall DelIcon,[SelIcon]
384
        stdcall DelIcon,[SelIcon]
364
 
385
 
365
        mov     dword[fiRunProg+8],WarningSave
386
        mov     dword[fiRunProg+8],WarningSave
366
        mov     dword[fiRunProg+21],pthNotify
387
        mov     dword[fiRunProg+21],pthNotify
367
        mcall   70,fiRunProg
388
        mcall   70,fiRunProg
368
        mov     [bNotSave],0
389
        mov     [bNotSave],0
369
 
390
 
370
        jmp     RBRedrawFon
391
        jmp     RBRedrawFon
371
 
392
 
372
RBPropeties:
393
RBPropeties:
373
        cmp     [DlgAddActiv],1
394
        cmp     [DlgAddActiv],1
374
        je      RBWSetActivWin
395
        je      RBWSetActivWin
375
        mov     [DlgAddActiv],1
396
        mov     [DlgAddActiv],1
376
 
397
 
377
        mcall   51,1,DlgProp,stack_dlg          ;CreateThread DlgProp,stack_dlg
398
        mcall   51,1,DlgProp,stack_dlg          ;CreateThread DlgProp,stack_dlg
378
        jmp     RBWExit
399
        jmp     RBWExit
379
 
400
 
380
RBWSetActivWin:
401
RBWSetActivWin:
381
        mcall   18,3,[slotDlgAdd]
402
        mcall   18,3,[slotDlgAdd]
382
        jmp     RBWExit
403
        jmp     RBWExit
383
 
404
 
384
proc DrawRBLine y,active
405
proc DrawRBLine y,active
385
 
406
 
386
        xor     ebx,ebx
407
        xor     ebx,ebx
387
        mov     bx,[RMenuW]
408
        mov     bx,[RMenuW]
388
        add     ebx,2*10000h-3
409
        add     ebx,2*10000h-3
389
        mov     ecx,[y]
410
        mov     ecx,[y]
390
        add     ecx,2
411
        add     ecx,2
391
        shl     ecx,16
412
        shl     ecx,16
392
        mov     cx,16;-1-2
413
        mov     cx,16;-1-2
393
        cmp     [active],1
414
        cmp     [active],1
394
        jne     @f
415
        jne     @f
395
        mov     edx,[sc.work_button]
416
        mov     edx,[sc.work_button]
396
        jmp     .L1
417
        jmp     .L1
397
       @@:
418
       @@:
398
        mov     edx,[sc.work]
419
        mov     edx,[sc.work]
399
      .L1:
420
      .L1:
400
        mcall   13
421
        mcall   13
401
 
422
 
402
;----------------------------------------------
423
;----------------------------------------------
403
        xor     ebx,ebx            ;¢¥àå
424
        xor     ebx,ebx            ;¢¥àå
404
        mov     bx,[RMenuW]
425
        mov     bx,[RMenuW]
405
        add     ebx,2*10000h-3
426
        add     ebx,2*10000h-3
406
        mov     cx,word[y]
427
        mov     cx,word[y]
407
        shl     ecx,16
428
        shl     ecx,16
408
        mov     cx,word[y]
429
        mov     cx,word[y]
409
        add     ecx,00020002h
430
        add     ecx,00020002h
410
 
431
 
411
        cmp     [active],1
432
        cmp     [active],1
412
        jne     @f
433
        jne     @f
413
        mov     edx,[sc.workL]
434
        mov     edx,[sc.workL]
414
        jmp     .L3
435
        jmp     .L3
415
       @@:
436
       @@:
416
        mov     edx,[sc.work]
437
        mov     edx,[sc.work]
417
      .L3:
438
      .L3:
418
 
439
 
419
        mcall   38
440
        mcall   38
420
 
441
 
421
        mov     ebx,00020002h            ;«¥¢®
442
        mov     ebx,00020002h            ;«¥¢®
422
        mov     cx,word[y]
443
        mov     cx,word[y]
423
        shl     ecx,16
444
        shl     ecx,16
424
        mov     cx,word[y]
445
        mov     cx,word[y]
425
        add     ecx,00020002h+16
446
        add     ecx,00020002h+16
426
 
447
 
427
        cmp     [active],1
448
        cmp     [active],1
428
        jne     @f
449
        jne     @f
429
        mov     edx,[sc.workL]
450
        mov     edx,[sc.workL]
430
 
451
 
431
       @@:
452
       @@:
432
 
453
 
433
        mcall
454
        mcall
434
 
455
 
435
        xor     ebx,ebx                  ;­¨§
456
        xor     ebx,ebx                  ;­¨§
436
        mov     bx,[RMenuW]
457
        mov     bx,[RMenuW]
437
        add     ebx,2*10000h-3
458
        add     ebx,2*10000h-3
438
        mov     cx,word[y]
459
        mov     cx,word[y]
439
        shl     ecx,16
460
        shl     ecx,16
440
        mov     cx,word[y]
461
        mov     cx,word[y]
441
        add     ecx,16*10000h+16+00020002h
462
        add     ecx,16*10000h+16+00020002h
442
 
463
 
443
        cmp     [active],1
464
        cmp     [active],1
444
        jne     @f
465
        jne     @f
445
        mov     edx,[sc.workH]
466
        mov     edx,[sc.workH]
446
       @@:
467
       @@:
447
 
468
 
448
        mcall
469
        mcall
449
 
470
 
450
        mov     bx,[RMenuW]                 ;¯à ¢®
471
        mov     bx,[RMenuW]                 ;¯à ¢®
451
        shl     ebx,16
472
        shl     ebx,16
452
        mov     bx,[RMenuW]
473
        mov     bx,[RMenuW]
453
        add     ebx,-2*10000h-2
474
        add     ebx,-2*10000h-2
454
        mov     cx,word[y]
475
        mov     cx,word[y]
455
        shl     ecx,16
476
        shl     ecx,16
456
        mov     cx,word[y]
477
        mov     cx,word[y]
457
        add     ecx,00020002h+16
478
        add     ecx,00020002h+16
458
 
479
 
459
        cmp     [active],1
480
        cmp     [active],1
460
        jne     @f
481
        jne     @f
461
        mov     edx,[sc.workH]
482
        mov     edx,[sc.workH]
462
       @@:
483
       @@:
463
 
484
 
464
        mcall
485
        mcall
465
 
486
 
466
        mov     eax,[y]
487
        mov     eax,[y]
467
        shr     eax,4
488
        shr     eax,4
468
        mov     edx,[RBMenuCP+eax*8]
489
        mov     edx,[RBMenuCP+eax*8]
469
 
490
 
470
        xor     ebx,ebx
491
        xor     ebx,ebx
471
        mov     ebx,[y]
492
        mov     ebx,[y]
472
        add     ebx,7*10000h+7
493
        add     ebx,7*10000h+7
473
 
494
 
474
        cmp     [active],1
495
        cmp     [active],1
475
        jne     @f
496
        jne     @f
476
        mov     ecx,[sc.work_button_text]
497
        mov     ecx,[sc.work_button_text]
477
        jmp     .L2
498
        jmp     .L2
478
       @@:
499
       @@:
479
        mov     ecx,[sc.work_text]
500
        mov     ecx,[sc.work_text]
480
      .L2:
501
      .L2:
481
 
502
 
482
        or      ecx,80000000h
503
        or      ecx,80000000h
483
 
504
 
484
        mcall   4
505
        mcall   4
485
 
506
 
486
        ret
507
        ret
487
endp
508
endp
488
 
509
 
489
 
510
 
490
proc MouseInWin        ;Carry flag = 1, ¥á«¨ ª«¨ª ¢ ®ª­¥
511
proc MouseInWin        ;Carry flag = 1, ¥á«¨ ª«¨ª ¢ ®ª­¥
491
        mcall   37,0            ;GetMousePos
512
        mcall   37,0            ;GetMousePos
492
        xor     ebx,ebx
513
        xor     ebx,ebx
493
        mov     bx,ax           ;y
514
        mov     bx,ax           ;y
494
        shr     eax,16          ;x
515
        shr     eax,16          ;x
495
 
516
 
496
        xor     ecx,ecx
517
        xor     ecx,ecx
497
        mov     cx,bx
518
        mov     cx,bx
498
        mov     bx,ax
519
        mov     bx,ax
499
 
520
 
500
        mcall   34
521
        mcall   34
501
        cmp     eax,[RBSlot]
522
        cmp     eax,[RBSlot]
502
        jne     @f
523
        jne     @f
503
        stc
524
        stc
504
        ret
525
        ret
505
      @@:
526
      @@:
506
        clc
527
        clc
507
        ret
528
        ret
508
endp
529
endp
509
 
530
 
510
 
531
 
511
proc AlignIcons
532
proc AlignIcons
512
local posX:WORD,\
533
local posX:WORD,\
513
      posY:WORD,\
534
      posY:WORD,\
514
      negatX:WORD,\
535
      negatX:WORD,\
515
      negatY:WORD
536
      negatY:WORD
516
 
537
 
517
        xor     ebx,ebx
538
        xor     ebx,ebx
518
 
539
 
519
        mov     ecx,[MaxNumIcon]
540
        mov     ecx,[MaxNumIcon]
520
        test    ecx,ecx
541
        test    ecx,ecx
521
        jnz     .AlignIco
542
        jnz     .AlignIco
522
        ret
543
        ret
523
 .AlignIco:
544
 .AlignIco:
524
        push    ecx
545
        push    ecx
525
        or      ecx,-1
546
        or      ecx,-1
526
        mov     edi,dword[IconsOffs+ebx]
547
        mov     edi,dword[IconsOffs+ebx]
527
        xor     eax,eax
548
        xor     eax,eax
528
        repne   scasb
549
        repne   scasb
529
        repne   scasb
550
        repne   scasb
530
        repne   scasb
551
        repne   scasb
531
        repne   scasb
552
        repne   scasb
532
 
553
 
533
        mov     dword[negatX],0
554
        mov     dword[negatX],0
534
 
555
 
535
     ;-------- ¯à¥®¡à §ã¥¬ ª®®à¤¨­ âë ¢ ¯®«®¦¨â¥«ì­ë¥
556
     ;-------- ¯à¥®¡à §ã¥¬ ª®®à¤¨­ âë ¢ ¯®«®¦¨â¥«ì­ë¥
536
        mov     ax,[edi+2]
557
        mov     ax,[edi+2]
537
        test    ax,8000h
558
        test    ax,8000h
538
        jz      @f
559
        jz      @f
539
        neg     ax
560
        neg     ax
540
        mov     word[negatX],1
561
        mov     word[negatX],1
541
      @@:
562
      @@:
542
        mov     [posX],ax
563
        mov     [posX],ax
543
 
564
 
544
        mov     ax,[edi]
565
        mov     ax,[edi]
545
        test    ax,8000h
566
        test    ax,8000h
546
        jz      @f
567
        jz      @f
547
        neg     ax
568
        neg     ax
548
        mov     word[negatY],1
569
        mov     word[negatY],1
549
      @@:
570
      @@:
550
        mov     [posY],ax
571
        mov     [posY],ax
551
 
572
 
552
      ;-----
573
      ;-----
553
        mov     ax,[posY]
574
        mov     ax,[posY]
554
        mov     dx,ALIGN_SIZE
575
        mov     dx,ALIGN_SIZE
555
 
576
 
556
        cmp     ax,dx
577
        cmp     ax,dx
557
        jb      .AI0
578
        jb      .AI0
558
    @@: sub     ax,dx
579
    @@: sub     ax,dx
559
        cmp     ax,dx
580
        cmp     ax,dx
560
        jae     @b
581
        jae     @b
561
    .AI0:
582
    .AI0:
562
 
583
 
563
        mov     dx,ax
584
        mov     dx,ax
564
        cmp     dx,ALIGN_SIZE/2
585
        cmp     dx,ALIGN_SIZE/2
565
        jb      .AI1
586
        jb      .AI1
566
 
587
 
567
        mov     ax,ALIGN_SIZE
588
        mov     ax,ALIGN_SIZE
568
        sub     ax,dx
589
        sub     ax,dx
569
        add     [posY],ax
590
        add     [posY],ax
570
 
591
 
571
        jmp     .AI2
592
        jmp     .AI2
572
     .AI1:
593
     .AI1:
573
        sub     [posY],dx
594
        sub     [posY],dx
574
     .AI2:
595
     .AI2:
575
     ;-----
596
     ;-----
576
        mov     ax,[posX]
597
        mov     ax,[posX]
577
        mov     dx,ALIGN_SIZE
598
        mov     dx,ALIGN_SIZE
578
 
599
 
579
        cmp     ax,dx
600
        cmp     ax,dx
580
        jb      .AI3
601
        jb      .AI3
581
    @@: sub     ax,dx
602
    @@: sub     ax,dx
582
        cmp     ax,dx
603
        cmp     ax,dx
583
        jae     @b
604
        jae     @b
584
    .AI3:
605
    .AI3:
585
 
606
 
586
        mov     dx,ax
607
        mov     dx,ax
587
        cmp     dx,ALIGN_SIZE/2
608
        cmp     dx,ALIGN_SIZE/2
588
        jb      .AI4
609
        jb      .AI4
589
 
610
 
590
        mov     ax,ALIGN_SIZE
611
        mov     ax,ALIGN_SIZE
591
        sub     ax,dx
612
        sub     ax,dx
592
        add     [posX],ax
613
        add     [posX],ax
593
 
614
 
594
        jmp     .AI5
615
        jmp     .AI5
595
     .AI4:
616
     .AI4:
596
        sub     [posX],dx
617
        sub     [posX],dx
597
     .AI5:
618
     .AI5:
598
 
619
 
599
      ;----- ¯à¥®¡à §®¢ ­¨¥ ­ § ¤ ¨ ¯®¯à ¢ª  ¢ ®âà¨æ â¥«ì­ëå ª®®à¤¨­ â
620
      ;----- ¯à¥®¡à §®¢ ­¨¥ ­ § ¤ ¨ ¯®¯à ¢ª  ¢ ®âà¨æ â¥«ì­ëå ª®®à¤¨­ â
600
        mov     ax,[posX]
621
        mov     ax,[posX]
601
 
622
 
602
        cmp     [negatX],1
623
        cmp     [negatX],1
603
        jne     @f
624
        jne     @f
604
        neg     ax
625
        neg     ax
605
        inc     ax
626
        inc     ax
606
        jmp     .AI6
627
        jmp     .AI6
607
      @@:
628
      @@:
608
 
629
 
609
        mov     dx,[ScreenX]
630
        mov     dx,[ScreenX]
610
        shr     dx,1
631
        shr     dx,1
611
        cmp     ax,dx
632
        cmp     ax,dx
612
        jbe     .AI6
633
        jbe     .AI6
613
        sub     ax,[ScreenX]
634
        sub     ax,[ScreenX]
614
      .AI6:
635
      .AI6:
615
        mov     word[edi+2],ax
636
        mov     word[edi+2],ax
616
 
637
 
617
 
638
 
618
        mov     ax,[posY]
639
        mov     ax,[posY]
619
        cmp     [negatY],1
640
        cmp     [negatY],1
620
        jne     @f
641
        jne     @f
621
        neg     ax
642
        neg     ax
622
        inc     ax
643
        inc     ax
623
        jmp     .AI7
644
        jmp     .AI7
624
      @@:
645
      @@:
625
 
646
 
626
        mov     dx,[ScreenY]
647
        mov     dx,[ScreenY]
627
        shr     dx,1
648
        shr     dx,1
628
        cmp     ax,dx
649
        cmp     ax,dx
629
        jbe     .AI7
650
        jbe     .AI7
630
        sub     ax,[ScreenY]
651
        sub     ax,[ScreenY]
631
      .AI7:
652
      .AI7:
632
         mov     word[edi],ax
653
         mov     word[edi],ax
633
 
654
 
634
       ;--------
655
       ;--------
635
 
656
 
636
 
657
 
637
 
658
 
638
        pop     ecx
659
        pop     ecx
639
        add     ebx,4
660
        add     ebx,4
640
        dec     ecx
661
        dec     ecx
641
        jnz     .AlignIco
662
        jnz     .AlignIco
642
;        loop    .AlignIco
663
;        loop    .AlignIco
643
 
664
 
644
 
665
 
645
;        mov     dword[fInfo],2
666
;        mov     dword[fInfo],2
646
;        mcall   70,fInfo
667
;        mcall   70,fInfo
647
        ret
668
        ret
648
endp
669
endp
649
 
670
 
650
;-------------------------------------------------------------------------------
671
;-------------------------------------------------------------------------------
651
proc GetUserBut stdcall,f_name,sec_name,key_name,key_value
672
proc GetUserBut stdcall,f_name,sec_name,key_name,key_value
652
        cmp     [NumMenuButt],MAX_USER_BUTTONS
673
        cmp     [NumMenuButt],MAX_USER_BUTTONS
653
        jne     @f
674
        jne     @f
654
        ret
675
        ret
655
     @@:
676
     @@:
656
 
677
 
657
        push    ebx esi edi
678
        push    ebx esi edi
658
 
679
 
659
        mov     edi,[key_name]           ;®¯à¥¤¥«ï¥¬ è¨à¨­ã ¬¥­î
680
        mov     edi,[key_name]           ;®¯à¥¤¥«ï¥¬ è¨à¨­ã ¬¥­î
660
        xor     eax,eax
681
        xor     eax,eax
661
        or      ecx,-1
682
        or      ecx,-1
662
        repne   scasb
683
        repne   scasb
663
        sub     edi,[key_name]
684
        sub     edi,[key_name]
664
        mov     eax,edi
685
        mov     eax,edi
665
        shl     eax,1
686
        shl     eax,1
666
        lea     eax,[eax*2+eax+5*2]
687
        lea     eax,[eax*2+eax+5*2]
667
        cmp     ax,[RMenuW]
688
        cmp     ax,[RMenuW]
668
        jbe     @f
689
        jbe     @f
669
        mov     [RMenuW],ax
690
        mov     [RMenuW],ax
670
     @@:
691
     @@:
671
 
692
 
672
        mov     ebx,[NumMenuButt]
693
        mov     ebx,[NumMenuButt]
673
 
694
 
674
        mov     esi,[key_name]
695
        mov     esi,[key_name]
675
        mov     edi,[RBMenuCP+ebx*8]
696
        mov     edi,[RBMenuCP+ebx*8]
676
    @@: lodsb
697
    @@: lodsb
677
        stosb
698
        stosb
678
        test    al,al
699
        test    al,al
679
        jnz     @b
700
        jnz     @b
680
 
701
 
681
 
702
 
682
        mov     [RBMenuCP+ebx*8+4],edi
703
        mov     [RBMenuCP+ebx*8+4],edi
683
        mov     esi,[key_value]
704
        mov     esi,[key_value]
684
    @@: lodsb
705
    @@: lodsb
685
        stosb
706
        stosb
686
        test    al,al
707
        test    al,al
687
        jnz     @b
708
        jnz     @b
688
 
709
 
689
        mov     [RBMenuCP+ebx*8+8],edi
710
        mov     [RBMenuCP+ebx*8+8],edi
690
 
711
 
691
        inc     [NumMenuButt]
712
        inc     [NumMenuButt]
692
 
713
 
693
        pop     edi esi ebx
714
        pop     edi esi ebx
694
        mov     eax,1
715
        mov     eax,1
695
        ret
716
        ret
696
endp
717
endp
697
 
718
 
698
proc Ini_SavePos stdcall,f_name,sec_name
719
proc Ini_SavePos stdcall,f_name,sec_name
699
        push    ebx edi esi
720
        push    ebx edi esi
700
 
721
 
701
        xor     ebx,ebx
722
        xor     ebx,ebx
702
  .SearchSect:
723
  .SearchSect:
703
        mov     edi,[IconsOffs+ebx*4]
724
        mov     edi,[IconsOffs+ebx*4]
704
        mov     esi,[sec_name]
725
        mov     esi,[sec_name]
705
      @@:
726
      @@:
706
        lodsb
727
        lodsb
707
        scasb
728
        scasb
708
        jne     @f
729
        jne     @f
709
        test    al,al
730
        test    al,al
710
        jnz     @b
731
        jnz     @b
711
 
732
 
712
        jmp     .IcoDataFound
733
        jmp     .IcoDataFound
713
      @@:
734
      @@:
714
 
735
 
715
        inc     ebx
736
        inc     ebx
716
        cmp     ebx,[MaxNumIcon]
737
        cmp     ebx,[MaxNumIcon]
717
        jb      .SearchSect
738
        jb      .SearchSect
718
 
739
 
719
        mov     eax,1
740
        mov     eax,1
720
        pop     esi edi ebx
741
        pop     esi edi ebx
721
        ret
742
        ret
722
 
743
 
723
.IcoDataFound:
744
.IcoDataFound:
724
        or      ecx,-1
745
        or      ecx,-1
725
        repne   scasb
746
        repne   scasb
726
        repne   scasb
747
        repne   scasb
727
        repne   scasb
748
        repne   scasb
728
 
749
 
729
;int3
750
;int3
730
        movzx   eax,word[edi+2]
751
        movzx   eax,word[edi+2]
731
        test    eax,8000h
752
        test    eax,8000h
732
        jz      @f
753
        jz      @f
733
        or      eax,0FFFF0000h
754
        or      eax,0FFFF0000h
734
     @@:
755
     @@:
735
 
756
 
736
        stdcall [ini_set_int],[f_name],[sec_name],keyX,eax
757
        stdcall [ini_set_int],[f_name],[sec_name],keyX,eax
737
 
758
 
738
        movzx   eax,word[edi]
759
        movzx   eax,word[edi]
739
        test    eax,8000h
760
        test    eax,8000h
740
        jz      @f
761
        jz      @f
741
        or      eax,0FFFF0000h
762
        or      eax,0FFFF0000h
742
     @@:
763
     @@:
743
 
764
 
744
        stdcall [ini_set_int],[f_name],[sec_name],keyY,eax
765
        stdcall [ini_set_int],[f_name],[sec_name],keyY,eax
745
 
766
 
746
        mov     eax,1
767
        mov     eax,1
747
        pop     esi edi ebx
768
        pop     esi edi ebx
748
        ret
769
        ret
749
endp
770
endp