La función solo dibuja la ventana, No rellena los datos dentro ni la refresca. Tampoco toma el fondo ni lo repone. Esto lo deberá hacer una función de más nivel.
La impresión se hace en memoria de pantallas para mayor rapidez. Posteriormente esta función se podrá usar en funciones superiores como mover ventana.
DRAW_WIN.MAC
; Copyright (C) 2013 José Ángel Moneo Fernández ; This program is free software: you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation, either version 3 of the License, or ; (at your option) any later version. ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; You should have received a copy of the GNU General Public License ; along with this program. If not, see <http://www.gnu.org/licenses/>.;programa de generacion de ventana con marco y titulo
;macro prototipo en window.mac
include stdio.mac
include string.mac
.model compact,pascal
.data
i db 0 .code
extrn _cls_window:near
public _draw_win
_draw_win proc near uses bx cx dx si di, FsCiz,FinCde,Texto,color:byte
mov ax,FsCiz ;borra ventana mediante
push ax ; implementamos la macro para aprovechar los
mov ax,FinCde ;parámetros ya en pareja
push ax
mov ah,_color
mov al,0
push ax
mov al,2
call _cls_window
mov dx,FsCiz
mov bx,FinCde
sub bx,dx
for i,0,bh
push dx
gotoxy dl,dh
putchar 186
add dl,bl
gotoxy dl,dh
putchar 186
pop dx
inc dh
next i
mov dx,FsCiz
gotoxy dl,dh
putchar 201
call pline
putchar 187
add dh,bh
gotoxy dl,dh
putchar 200
call pline
putchar 188
mov di,texto
strlen [di]
shr ax,1
shr bl,1
mov bh,0 ;un uno en el caso de otra cabecera
sub bx,ax
add bx,FsCiz
gotoxy bl,bh
puts [di]
ret
_draw_win endp
pline proc near
push bx
bucle:
cmp bl,1
je salir
putchar 205
dec bl
jmp bucle
salir:
pop bx
ret
pline endp
ends
end
No hay comentarios:
Publicar un comentario
Si tienes algún comentario, duda o sugerencia, o si quieres aportar algún código creado a partir de las librerías expuestas aquí, por favor, indícamelo.