Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 3066 → Rev 4327

/programs/demos/use_mb/about.txt
0,0 → 1,28
msgbox âåðñèÿ 26.05.2009
 
*** Î ïðîãðàììå ***
Ïðîãðàììà äëÿ âûâîäà îêíà ñ ñîîáùåíèÿìè.
Ëèöåíçèÿ ñâîáîäíàÿ.
 
*** Âîçìîæíîñòè ***
Ìîæíî âûâîäèòü ñîîáùåíèÿ ñ òåêñòîì, â êîòîðûõ äî 8 êíîïîê
(óêàçàíî â êîíñòàíòå MB_MAX_BUT).
Âû÷èñëåíèå êîîðäèíàò êíîïîê è òåêñòà äåëàåòñÿ àâòîìàòè÷åñêè.
Óïðàâëåíèå êíîïêàìè (Âëåâî, Âïðàâî, Enter)
Íà êàäæóþ êíîïêó ñîîáùåíèÿ âîçìîæíî íàçíà÷èòü ñâîþ ôóíêöèþ.
 
*** Îãðàíè÷åíèÿ ***
Ïðè èñïîëüçîâàíèè msgbox-îâ, íóæíî ñòàðàòüñÿ èçáåãàòü ñèòóàöèé,
êîãäà íåñêîëüêî ñîîáùåíèé îòêðûòî îäíîâðåìåííî. Ïîòîìó ÷òî âñå îêíà
msgbox èñïîëüçóþò îäíè è òå æå óêàçàòåëè, è âîçìîæåí êîíôëèêò.
 
*** Îïèñàíèå ***
Èç áèáëèîòåêè ýêñïîðòèðóþòñÿ 3 ïàðàìåòðà:
mb_create - ôóíêöèÿ äëÿ ñîçäàíèÿ ïîòîêà ñ îêíîì ñîîáùåíèÿ
mb_reinit - ôóíêöèÿ äëÿ (ïåðå)âû÷èñëåíèÿ ðàçìåðîâ îêíà ñ ñîîáùåíèåì
Îáû÷íî â áîëüøèíñòâå ñëó÷àåâ Âû áóäåòå ïîëüçîâàòüñÿ òîëüêî ôóíêöèåé mb_create.
Ôóíêöèÿ mb_reinit áóäåò íóæíà òîëüêî â òîì ñëó÷àå, åñëè Âû
çàõîòèòå çàìåíèòü ãîòîâîå ñîîáùåíèå ïîñëå åãî óñïåøíîãî çàïóñêà.
mb_setfunctions - íàçíà÷åíèå ôóíêöèé êíîïêàì. Ïðè íàæàòèè íà êíîïêó
ñîîáùåíèå çàêðûâàåòñÿ, íî åñëè êíîïêå áûëà íàçíà÷åíà ôóíêöèÿ, òî ñïåðâà áóäåò
âûçâàíà ôóíêöèÿ.
/programs/demos/use_mb/use_mb.asm
0,0 → 1,349
;Ž£à®¬­ ï ¡« £®¤ à­®áâì Maxxxx32, Diamond, Heavyiron
;¨ ¤à㣨¬ ¯à®£à ¬¬¨áâ ¬,   â ª¦¥
;’¥¯«®¢ã €«¥ªá¥î (<Lrz> www.lrz.land.ru)
use32
org 0x0
db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
dd 0x1
dd start
dd i_end ; à §¬¥à ¯à¨«®¦¥­¨ï
dd mem
dd stacktop
dd 0x0 ;library_path
dd cur_dir_path
 
include 'macros.inc'
include 'load_lib.mac'
 
@use_library
 
align 4
start:
 
mov eax,40
mov ebx,0x25 ;¬ áª  ®¦¨¤ ¥¬ëå ᮡë⨩
mcall
 
sys_load_library msgbox_name, cur_dir_path, library_path, system_path, \
err_message_found_lib, head_f_l, msgbox_lib_import, err_message_import, head_f_i
 
 
red_win:
mcall 12,1
 
xor eax,eax
mov ebx,50*65536+200
mov ecx,30*65536+170
mov edx,0xffffd0
or edx,0x33000000
mov edi,hed
mcall
 
mov eax,8 ;ª­®¯ª 
mov ebx,10*65536+30
mov ecx,110*65536+20
mov edx,7
mov esi,0xffd040
mcall
 
mov ebx,10*65536+30
mov ecx,85*65536+20
mov edx,6
mcall
 
mov ebx,10*65536+30
mov ecx,60*65536+20
mov edx,5
mcall
 
mov ebx,10*65536+30
mov ecx,35*65536+20
mov edx,4
mcall
 
mov ebx,10*65536+30
mov ecx,10*65536+20
mov edx,3
mcall
 
mov eax,4 ;à¨á®¢ ­¨¥ ⥪áâ 
mov ebx,50*65536+115
mov ecx,0x4000d0
or ecx,0x80000000
mov edx,txt140
mcall
 
mov ebx,50*65536+90
mov edx,txt139
mcall
 
mov ebx,50*65536+65
mov edx,txt138
mcall
 
mov ebx,50*65536+40
mov edx,txt137
mcall
 
mov ebx,50*65536+15
mov edx,txt136
mcall
 
push eax ebx ecx edx esi
;line numbers
mov eax,47
mov esi,0xd00000
mov ebx,0x10000 ;format
 
; --- draw codes ---
xor ecx,ecx
mov cl,byte[msgbox_1]
mov dx,25
shl edx,16
mov dx,15
int 0x40
 
mov cl,byte[msgbox_2]
add dx,25
int 0x40
 
mov cl,byte[msgbox_3]
add dx,25
int 0x40
 
mov cl,byte[msgbox_4]
add dx,25
int 0x40
 
mov cl,byte[msgbox_5]
add dx,25
int 0x40
 
pop esi edx ecx ebx eax
call draw_square
mcall 12,2
 
still:
mov eax,10
mcall
 
cmp al,1 ;¨§¬. ¯®«®¦¥­¨¥ ®ª­ 
jz red_win
cmp al,3
jz button
jmp still
 
button:
mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨
 
cmp ah,3
jz but_1
cmp ah,4
jz but_2
cmp ah,5
jz but_3
cmp ah,6
jz but_4
cmp ah,7
jz but_5
 
cmp ah,1
jne still
.exit:
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
 
but_1:
push thread
push msgbox_1
call [mb_create]
jmp still
 
but_2:
push thread
push msgbox_2
call [mb_create]
;mov eax,5
;mov ebx,50
;int 0x40
push msgbox_2_funct
call [mb_setfunctions]
jmp still
 
but_3:
push thread
push msgbox_3
call [mb_create]
jmp still
 
but_4:
push thread
push msgbox_4
call [mb_create]
jmp still
 
but_5:
push thread
push msgbox_5
call [mb_create]
 
mcall 5,100 ;stop program
 
push msgbox_5_2
call [mb_reinit]
 
jmp still
 
 
txt136 db '¯à®á⮥',0
txt137 db '3 ª­®¯ª¨',0
txt138 db '3 áâப¨',0
txt139 db '¡®«ì讥',0
txt140 db 'mb_reinit',0
 
hed db 'à¨¬¥à ¨á¯®«ì§®¢ ­¨ï MsgBox',0
;sc system_colors
 
 
;---------------------------------------------------------------------
msgbox_1:
dw 0
db 'MBox',0 ;+2 = +MB_TEXT_OFFSET
db 'à¨¬¥à',0
db '‚¨¦ã',0 ;button1
db 0
msgbox_2:
dw 0
db 'MBox 3 but',0 ;+2 = +MB_TEXT_OFFSET
db 'à¨¬¥à á 3-¬ï ª­®¯ª ¬¨',0
db '„ ',0 ;button1
db 'Žâ¬¥­ ',0 ;button2
db '®¬®éì',0 ;button3
db 0
msgbox_2_funct:
dd 0
dd 0
dd fun_show_help
 
msgbox_3:
dw 0
db 'MBox 3 lines',0 ;+2 = +MB_TEXT_OFFSET
db '‘âப  1',13,'‘âப  2',13,'‘âப  3',0
db '2009 £.',0 ;button1
db 0
msgbox_4:
dw 0
db '‚¢¥¤¨â¥ ¤¥­ì',0 ;+2 = +MB_TEXT_OFFSET
db ' @@@@@@@@@@@@ @@@@@@@@',13
db ' @............@ @........@',13
db '@..............@ @..........@',13
db '@.......@@@.....@ @......@.....@',13
db '@.......@ @.....@@@@@@......@@......@',13
db '@......@ @.................@@.......@',13
db ' @....@ @.....@@......@@....@.......@',13
db ' @..@ @.........@.........@......@',13
db ' @@ @...................@@....@',13
db ' @.......@@@.......@ @..@',13
db ' @...............@ @@',13
db ' @...............@',13
db ' @.................@',13
db ' @...................@',13
db ' @.....................@',13
db ' @.......@@......@@......@ @@',13
db ' @......@....@..@....@.....@@..@',13
db ' @......@....@..@....@.........@',13
db ' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@',0
db '­',0
db '‚â',0
db '‘à',0
db '—â',0
db 'â',0
db '‘¡',0
db '‚®áªà¥á¥­¨¥',0
db 0
msgbox_5:
dw 0
db '‘®®¡é¥­¨¥',0 ;+2 = +MB_TEXT_OFFSET
db '‚믮«­ïî ¯à®æ¥áá ...',0
db 'Žáâ ­®¢¨âì',0
db 'à¥à¢ âì',0
db 0
msgbox_5_2:
dw 0
db '‘®®¡é¥­¨¥',0 ;+2 = +MB_TEXT_OFFSET
db '‚ᥠ§ ª®­ç¥­®',0
db '‡ ªàëâì ®ª­®',0
db 0
 
;--------------------------------------------------
align 4
msgbox_lib_import:
mb_create dd amb_create
mb_reinit dd amb_reinit
mb_setfunctions dd amb_setfunctions
dd 0,0
amb_create db 'mb_create',0
amb_reinit db 'mb_reinit',0
amb_setfunctions db 'mb_setfunctions',0
;--------------------------------------------------
system_path db '/sys/lib/'
msgbox_name db 'msgbox.obj',0
err_message_found_lib db 'Sorry I cannot load library msgbox.obj',0
head_f_i:
head_f_l db 'System error',0
err_message_import db 'Error on load import library msgbox.obj',0
;--------------------------------------------------
 
draw_square:
cmp byte[sh_help],0
je @f
push eax ebx ecx edx
mov eax,13 ;ðèñîâàíèå ïðÿìîóãîëüíèêà
mov ebx,105*65536+70
mov ecx,15*65536+50
mov edx,0x8080ff
int 0x40
 
mov eax,4 ;à¨á®¢ ­¨¥ ⥪áâ 
mov ebx,110*65536+25
mov ecx,0xffffff
mov edx,txt_help
mov esi,9
mcall
 
mov eax,47
mov esi,0xffff
mov ebx,0x10000 ;format
xor ecx,ecx
mov cl,byte[sh_help]
mov dx,150
shl edx,16
mov dx,40
int 0x40
 
pop edx ecx ebx eax
@@:
ret
fun_show_help:
inc byte[sh_help]
cmp byte[sh_help],10
jne @f
mov byte[sh_help],0
@@:
call draw_square
ret
sh_help db 0
txt_help db '®¬®éì...'
 
 
i_end: ;ª®­¥æ ª®¤ 
rb 1024
thread:
rb 1024
stacktop:
cur_dir_path:
rb 4096
library_path:
rb 4096
file_info:
rb 40
mem:
/programs/demos/use_mb
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property