Box lib editbox
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Introduction
Text field is used when entering text/numeric information.
Functions
- edit_box_key - this function should be called when you enter the information from the keyboard
- edit_box_mouse - this function should be called when you enter the information from the mouse
- edit_box_draw - this function should be called when redrawing.
- edit_box_set_text - it copies the text from the cursor in the text box. If the text in the index is longer than allowed in edit_box element, it is written not all. After calling this function, you need to redraw the window function edit_box_draw, otherwise the changes are not immediately visible. Example of use:
push dword buf
push dword edit1
call dword [edit_box_set_text]
.........
buf db '111-222-333', 0
where edit1 - edit_box structure element; buf - buffer, which contains the text of the installed.
- version_ed - version element
editbox structure
editbox structure size is set within box_lib.mac file in ed_struc_size parameter.
struc edit_box width,left,top,color,shift_color,focus_border_color,\
blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
{
.width dd width
.left dd left
.top dd top
.color dd color
.shift_color dd shift_color
.focus_border_color dd focus_border_color
.blur_border_color dd blur_border_color
.text_color dd text_color
.max dd max
.text dd text
.mouse_variable dd mouse_variable
.flags dd flags+0
.size dd size+0
.pos dd pos+0
.offset dd 0
.cl_curs_x dd 0
.cl_curs_y dd 0
.shift dd 0
.shift_old dd 0
}
- width - width of the element
- left - the left margin
- top - the top margin
- color - background color
- shift_color - color selection by holding [Shift] or mouse
- focus_border_color - frame color when the field is in focus
- blur_border_color - frame color when the field is not in focus
- text_color
- max - the maximum size of the text (должно быть +2 резервных символа)
- size - the current length of the text
Flags
ed_figure_only= 1000000000000000b ;some characters
ed_always_focus= 100000000000000b
ed_focus= 10b ;application focus
ed_pass= 1b ;password field
ed_shift_on= 1000b ;если не установлен -значит впервые нажат shift,если был установлен, значит мы уже что - то делали удерживая shift
ed_shift_on_off=1111111111110111b
ed_shift= 100b ;включается при нажатии на shift т.е. если нажимаю
ed_shift_off= 1111111111111011b
ed_shift_bac= 10000b ;бит для очистки выделеного shift т.е. при установке говорит что есть выделение
ed_shift_bac_cl=1111111111101111b ;очистка при удалении выделения
ed_shift_cl= 1111111111100011b
ed_shift_mcl= 1111111111111011b
ed_left_fl= 100000b
ed_right_fl= 1111111111011111b
ed_offset_fl= 1000000b
ed_offset_cl= 1111111110111111b
ed_insert= 10000000b
ed_insert_cl= 1111111101111111b
ed_mouse_on = 100000000b
ed_mous_adn_b= 100011000b
ed_mouse_on_off=1111111011111111b
Example
use32 ; use 32-bit command
; standard header
db 'MENUET01' ; signature
dd 1 ; header version
dd start ; entry point
dd i_end ; initialized size
dd mem ; required memory
dd mem ; stack pointer
dd 0 ; parameters
dd cur_dir_path ; path
include 'macros.inc'
include 'proc32.inc'
include 'dll.inc'
include 'box_lib.mac'
start:
; load libraries
stdcall dll.Load, @IMPORT_BOXLIB
test eax, eax
jnz exit
mcall 40,0x27 ;set up a mask for expected events
red_win:
call draw_window ;initially it is necessary to draw a box
align 4
still:
mcall 10 ;notifies of an event
dec eax
jz red_win
dec eax
jz key
dec eax
jz button
push dword edit1
call [edit_box_mouse]
jmp still
button:
mcall 17 ;receive identifier of the pressed key
test ah,ah
jz still
exit:
mcall -1
key:
mcall 2 ;get the code of the pressed key
push dword edit1
call [edit_box_key]
jmp still
align 4
draw_window: ;draw application window
mcall 12,1
mcall 0,<320,190>,<300,75>,0x33AABBCC,0x805080DD,hed
push dword edit1
call [edit_box_draw]
mcall 12,2
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
hed db 'edit_box example',0
edit1 edit_box 165,10,10,0xffffff,0x6f9480,0,0xAABBCC,0,308,username_buffer,mouse_dd,ed_focus
align 4
@IMPORT_BOXLIB:
library box_lib, 'box_lib.obj'
import box_lib, \
edit_box_draw, 'edit_box', \
edit_box_key, 'edit_box_key', \
edit_box_mouse, 'edit_box_mouse', \
version_ed, 'version_ed'
username_buffer rb 100
;-----------------------
mouse_dd rd 1
cur_dir_path rb 4096
i_end:
rb 1024
mem: