GRUPO DE LLAMADAS VIO


VioGetAnsi

VioGetAnsi devuelve el estado actual del ANSI (on/off).

#define INCL_BASE
#include <os2.h>

PUSHORT Indicator;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioGetAnsi(Indicator, VioHandle);

Parámetros

IndicatorPuntero a una posición de memoria donde OS/2 devolverá el estado del ANSI. Un valor 1 indica ANSI activo; un valor 0 indica ANSI desactivado.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioGetBuf

VioGetBuf devuelve un puntero al buffer de video virtual (LVB) para poder acceder a él directamente.

#define INCL_BASE
#include <os2.h>

PUSHORT LVBPtr;
PUSHORT Length;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioGetBuf(LVBPtr, Length, VioHandle);

Parámetros

LVBPtrPuntero a una dirección de memoria donde OS/2 devolverá un selector y un offset (desplazamiento) al buffer de video virtual. El programa no debe suponer que el offset es 0.
LengthPuntero a una dirección de memoria donde OS/2 devolverá la longitud del buffer. La longitud es: numero de filas * numero de columnas * tamaño de la celda.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
430Ilegal durante POPUP
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioGetCurPos

VioGetCurPos devuelve la posición del cursor en la pantalla.

#define INCL_BASE
#include <os2.h>

PUSHORT Row;
PUSHORT Column;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioGetCurPos(Row, Column, VioHandle);

Parámetros

RowPuntero a una posicion de memoria donde OS/2 devolverá la fila actual del cursor.
ColumnPuntero a una posicion de memoria donde OS/2 devolverá la columna actual del cursor.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioGetCurType

VioGetCurType devuelve información sobre el tamaño físico del cursor, así como su estado.

#define INCL_BASE
#include <os2.h>

PVIOCURSORINFO CursorData;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioGetCurType(CursorData, VioHandle);

Parámetros

CursorDataPuntero a una estructura de características del cursor, con los siguientes campos:
yStart (USHORT) Linea horizontal del caracter en el que empieza la parte superior del cursor. Si el caracter tiene n lineas, 0 es la superior, y (n-1) es la inferior.
cEnd (USHORT) Linea horizontal del caracter en que termina el cursor. Las lineas se numeran igual que en yStart.
cx (USHORT) Ancho del cursor. En modos de texto, es el número de columnas. El valor máximo soportado por OS/2 es 1.
attr (USHORT) Un valor de -1 indica un cursor oculto. El resto de los valores indican cursor visible.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioGetMode

VioGetMode devuelve el modo gráfico actual.

#define INCL_BASE
#include <os2.h>

PVIOMODEINFO ModeData;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioGetMode(ModeData, VioHandle);

Parámetros

ModeDataEstructura con los siguientes elementos:
cb (USHORT) Indica la longitud de la estructura incluyendo cb. El valor especificado determina la cantidad de datos devueltos. El tamaño mínimo es 2 bytes, y el máximo es 34 bytes.
fbType (UCHAR) Máscara de bits con las características del modo.
Bit Descripción
7-4 Reservados
3 0 = Modos compatibles con VGA (del modo 0 al 13H)
1 = Modo propio de la tarjeta
2 0 = Modo en color
1 = Modo en blanco y negro
1 0 = Modo texto
1 = Modo gráfico
0 0 = Adaptador monocromo/impresora
1 = Otro adaptador
color (UCHAR) Número de colores definido como potencia de dos (0 = modos monocromos 7, 7+ y F; 1 = 2 colores; 2 = 4 colores; 4 = 16 colores; 8 = 256 colores)
col (USHORT) Numero de columnas de texto
row (USHORT) Numero de filas de texto
hres (USHORT) Resolución horizontal (columnas de pixels)
vres (USHORT) Resolución vertical (filas de pixels)
fmt_ID (UCHAR) Formato de los atributos
attrib (UCHAR) Numero de atributos en un caracter
buf_addr (ULONG) Dirección física (32 bits) del buffer físico de pantalla en este modo
buf_length (ULONG) Longitud del buffer físico de pantalla para este modo
full_length (ULONG) Tamaño del buffer necesario para guardar totalmente el buffer físico de pantalla en este modo
partial_length (ULONG) Tamaño del buffer necesario para guardar parcialmente (pop-up) el buffer físico de pantalla para este modo
ext_data_addr (PCH) Puntero a una estructura extendida, o cero si no la hay. El formato de ésta está determinada por el driver, y es desconocido por OS/2
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
436Handle VIO no válido
438Longitud no válida
465VIO inactivo (proceso en detached)
494VIO Extended SG


VioGetPhysBuf

VioGetPhysBuf devuelve un conjunto de selectores que apuntan al buffer físico de vídeo. Permite acceder directamente a la pantalla. Si se ejecuta esta llamada después de un VioGetBuf, todas las llamadas VioWrtXX dejarán de ir al LVB, siendo escritas directamente en pantalla.

#define INCL_BASE
#include <os2.h>

PVIOPHYSBUF DisplayBuf;
USHORT Reserved;
APIRET rc; /* Codigo de error */

rc = VioGetPhysBuf(DisplayBuf, Reserved);

Parámetros

DisplayBufPuntero a una estructura que contiene la siguiente información:
pBuf (PBYTE) Dirección del buffer de pantalla (32 bits)
cb (ULONG) Longitud total del buffer
asel[n] (SEL) Lista de selectores. Debe reservarse tanto espacio como bloques de 64Ks compongan el modo de vídeo actual. NOTA: en el fichero OS2EMX.H, n vale 1. Si se van a reservar mas selectores, es necesario crear la estructura de nuevo.
ReservedDebe valer cero.

Codigos de error

0Sin error
350Puntero no válido
429El proceso está en background
430Ilegal durante POPUP
436Handle VIO no válido
465VIO inactivo (proceso en detached)
494VIO Extended SG


VioGetState

VioGetState devuelve la configuración actual de registros de paleta, color del borde, modo de parpadeo/brillo o registros de color.

#define INCL_BASE
#include <os2.h>

PVOID RequestBlock;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioGetState(RequestBlock, VioHandle);

Parámetros

RequestBlockPuntero a una estructura de estado, que consiste en una de las seis posibles estructuras, en función del tipo pedido:
Tipo Definición
0 Obtiene registros de paleta
1 Obtiene color del borde
2 Obtiene modo parpadeo/brillo
3 Obtiene registros de color
4 Reservado
5 Obtiene la línea para subrayado
Las estructuras, según el tipo, son:
VIOPALSTATE Válido para tarjetas EGA, VGA o IBM PS/2
cb (USHORT) Longitud de la estructura, incluyendose a ella misma. 38 es el valor máximo.
type (USHORT) El tipo es 0
iFirst (USHORT) Primer registro de paleta a obtener. Tiene que valer entre 0 y 15. El número de registros devueltos se deduce en función del campo length
acolor[n] (USHORT*(cb-6)/2) Valores de color para cada registro de paleta. El número máximo es de 16. NOTA: en el fichero OS2EMX.H, n vale 1. Si se van a cambiar mas colores, es necesario crear la estructura de nuevo.
VIOOVERSCAN Válido para CGA, VGA o IBM PS/2
cb (USHORT) Longitud de la estructura, incluyendose a ella misma. Tiene que ser 6.
type (USHORT) El tipo es 1
color (USHORT) Color deseado para el borde
VIOINTENSITY Válido para CGA, EGA, MCGA, VGA o IBM PS/2
cb (USHORT) Longitud de la estructura, incluyendose ella misma. Tiene que ser 6.
type (USHORT) El tipo es 2
fs (USHORT) 0: el parpadeo está activo; 1: el brillo está activo
VIOCOLORREG Válido para VGA o IBM PS/2
cb (USHORT) Longitud de la estructura, incluyendose a sí misma. Tiene que ser 12.
type (USHORT) El tipo es 3
firstcolorreg (USHORT) Primer registro a obtener. Tiene que estar contenido entre 0 y 255
numcolorregs (USHORT) Número de registros de color a obtener. Tiene que valer entre 1 y 256
colorregaddr (PCH) Puntero a una zona donde los registros son devueltos. El tamaño debe ser suficiente para que entren todos, teniendo en cuenta que cada registro ocupa 3 bytes. El orden en que se almacena es: rojo-verde-azul
VIOSETULINELOC Válido para EGA, VGA o IBM PS/2
cb (USHORT) Longitud de la estructura, incluyendose a sí misma. Tiene que ser 6.
type (USHORT) El tipo es 5. El subrayado está activo solo cuando el color de tinta está entre 1 y 9.
scanline (USHORT) El valor devuelto está entre 0 y 31, y es la línea menos 1. Un valor de 32 indica que el subrayado está desactivado.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
421Parámetros no validos
436Handle VIO no válido
438Longitud no válida
465VIO inactivo (proceso en detached)
494VIO Extended SG


VioReadCellStr

VioReadCellStr lee una cadena de parejas caracter-atributo de la pantalla, empezando en la posición indicada. Si se excede el final de una línea, se continua en la siguiente. Si se excede la longitud de la pantalla, la lectura termina y la longitud es ajustada a la cantidad de parejas leidas.

#define INCL_BASE
#include <os2.h>

PCH CellStr;
PUSHORT Length;
USHORT Row;
USHORT Column;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioReadCellStr(CellStr, Length, Row, Column, VioHandle);

Parámetros

CellStrPuntero a una zona de memoria donde OS/2 almacenará la cadena leída.
LengthPuntero a una posición de memoria donde estará almacenada la longitud del buffer CellStr. Se debe tener en cuenta que cada pareja puede medir 2 o 4 bytes. Si la longitud del buffer no es suficiente, se dejará sin completar la lectura.
RowFila inicial de la zona a leer. 0 es la parte superior del monitor.
ColumnColumna inicial de la zona a leer. 0 es la columna izquierda.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
358Fila no válida
359Columna no válida
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioReadCharStr

VioReadCharStr lee una cadena de caracteres de la pantalla, empezando en la posición indicada.

#define INCL_BASE
#include <os2.h>

PCH CharStr;
PUSHORT Length;
USHORT Row;
USHORT Column;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioReadCharStr(CharStr, Length, Row, Column, VioHandle);

Parámetros

CharStrPuntero a una posición de memoria a partir de la cual OS/2 devolverá la cadena de caracteres leída.
LengthPuntero a la longitud del buffer en bytes.
RowFila inicial de la zona a leer. 0 es la parte superior.
ColumnColumna inicial de la zona a leer. 0 es la parte izquierda.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
358Fila no válida
359Columna no válida
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioSavRedrawWait

VioSavRedrawWait notifica a una aplicación gráfica cuando debe guardar o repintar la pantalla.

#define INCL_BASE
#include <os2.h>

USHORT SavRedrawIndic;
PUSHORT NotifyType;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioSavRedrawWait(SavRedrawIndic, NotifyType, VioHandle);

Parámetros

SavRedrawIndicIndica qué evento espera la aplicación: 0 para ser notificada tanto por operaciones de guardar como de repintar; 1 para ser notificada solo por operaciones de repintar.
NotifyTypePuntero a una posición de memoria donde OS/2 devolverá la acción a realizar: 0 para guardar la imagen; 1 para repintar la imagen.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
421Parámetros no validos
422El thread SavRestoreWait ya tiene dueño
423El thread SavRestoreWait ha sido liberado
430Ilegal durante POPUP
436Handle VIO no válido
465VIO inactivo (proceso en detached)
494VIO Extended SG


VioScrLock

VioScrLock espera a que la sesión que lo ha ejecutado pase a primer plano, y bloquea el selector de programas, de modo que se tiene acceso al buffer físico de vídeo..

#define INCL_BASE
#include <os2.h>

USHORT WaitFlag;
PUCHAR Status;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioScrLock(WaitFlag, Status, VioHandle);

Parámetros

WaitFlagIndica qué debe hacer la llamada si la sesión está en segundo plano. Si vale 0, retorna aunque no esté disponible el acceso; si vale 1, espera a que esté disponible.
StatusPuntero a una posición de memoria donde OS/2 devolverá el resultado de la operación. Si vale 0, el bloqueo ha tenido éxito; si vale 1, no ha tenido éxito. El valor sólo es válido cuando el error devuelto es 0 (no error). El valor 1 sólo es devuelto cuando WaitFlag es 0.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
366Valor de WaitFlag no válido
430Ilegal durante POPUP
434Ya está bloqueado
436Handle VIO no válido
465VIO inactivo (proceso en detached)
494VIO Extended SG


VioScrollDn

VioScrollDn desplaza un área definida de la pantalla hacia abajo. Si se indica como inicio del bloque (0,0) y como final y número de líneas 65535, la pantalla se rellenará con la pareja de caracter-atributos indicada.

#define INCL_BASE
#include <os2.h>

USHORT TopRow;
USHORT LeftCol;
USHORT BotRow;
USHORT RightCol;
USHORT Lines;
PBYTE Cell;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioScrollDn(TopRow, LeftCol, BotRow, RightCol, Lines, Cell, VioHandle);

Parámetros

TopRowFila superior de la zona a desplazar.
LeftColColumna izquierda de la zona a desplazar.
BotRowFila inferior de la zona a desplazar.
RightColColumna derecha de la zona a desplazar.
LinesNúmero de líneas que se desplazará el bloque.
CellPuntero a una posición de memoria con la pareja de caracter-atributos que se usarán para rellenar la zona que queda libre.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
358Fila no válida
359Columna no válida
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioScrollLf

VioScrollLf desplaza un área definida de la pantalla hacia la izquierda. Si se indica como inicio del bloque (0,0) y como final y número de líneas 65535, la pantalla se rellenará con la pareja de caracter-atributos indicada.

#define INCL_BASE
#include <os2.h>

USHORT TopRow;
USHORT LeftCol;
USHORT BotRow;
USHORT RightCol;
USHORT Lines;
PBYTE Cell;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioScrollLf(TopRow, LeftCol, BotRow, RightCol, Lines, Cell, VioHandle);

Parámetros

TopRowFila superior de la zona a desplazar.
LeftColColumna izquierda de la zona a desplazar.
BotRowFila inferior de la zona a desplazar.
RightColColumna derecha de la zona a desplazar.
LinesNúmero de columnas que se desplazará el bloque.
CellPuntero a una posición de memoria con la pareja de caracter-atributos que se usarán para rellenar la zona que queda libre.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
358Fila no válida
359Columna no válida
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioScrollRt

VioScrollRt desplaza un área definida de la pantalla hacia la derecha. Si se indica como inicio del bloque (0,0) y como final y número de líneas 65535, la pantalla se rellenará con la pareja de caracter-atributos indicada.

#define INCL_BASE
#include <os2.h>

USHORT TopRow;
USHORT LeftCol;
USHORT BotRow;
USHORT RightCol;
USHORT Lines;
PBYTE Cell;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioScrollRt(TopRow, LeftCol, BotRow, RightCol, Lines, Cell, VioHandle);

Parámetros

TopRowFila superior de la zona a desplazar.
LeftColColumna izquierda de la zona a desplazar.
BotRowFila inferior de la zona a desplazar.
RightColColumna derecha de la zona a desplazar.
LinesNúmero de columnas que se desplazará el bloque.
CellPuntero a una posición de memoria con la pareja de caracter-atributos que se usarán para rellenar la zona que queda libre.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
358Fila no válida
359Columna no válida
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioScrollUp

VioScrollUp desplaza un área definida de la pantalla hacia arriba. Si se indica como inicio del bloque (0,0) y como final y número de líneas 65535, la pantalla se rellenará con la pareja de caracter-atributos indicada.

#define INCL_BASE
#include <os2.h>

USHORT TopRow;
USHORT LeftCol;
USHORT BotRow;
USHORT RightCol;
USHORT Lines;
PBYTE Cell;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioScrollUp(TopRow, LeftCol, BotRow, RightCol, Lines, Cell, VioHandle);

Parámetros

TopRowFila superior de la zona a desplazar.
LeftColColumna izquierda de la zona a desplazar.
BotRowFila inferior de la zona a desplazar.
RightColColumna derecha de la zona a desplazar.
LinesNúmero de líneas que se desplazará el bloque.
CellPuntero a una posición de memoria con la pareja de caracter-atributos que se usarán para rellenar la zona que queda libre.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
358Fila no válida
359Columna no válida
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioScrUnLock

VioScrUnLock desbloquea el conmutador de sesiones bloqueados por VioScrLock.

#define INCL_BASE
#include <os2.h>

HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioScrUnLock(VioHandle);

Parámetros

VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
367No está bloqueado
430Ilegal durante POPUP
436Handle VIO no válido
465VIO inactivo (proceso en detached)
494VIO Extended SG


VioSetAnsi

VioSetAnsi activa o desactiva el tratamiento de códigos ANSI. Por defecto se encuentra activo.

#define INCL_BASE
#include <os2.h>

USHORT Indicator;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioSetAnsi(Indicator, VioHandle);

Parámetros

IndicatorSi vale 1, se activa el soporte ANSI; si vale 0 se desactiva.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
421Parámetros no válidos
430Ilegal durante POPUP
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioSetCurPos

VioSetCurPos cambia la posición actual del cursor.

#define INCL_BASE
#include <os2.h>

USHORT Row;
USHORT Column;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioSetCurPos(Row, Column, VioHandle);

Parámetros

RowNueva fila del cursor. 0 es la parte superior.
ColumnNueva columna del cursor. 0 es la parte izquierda.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
358Fila no válida
359Columna no válida
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioSetCurType

VioSetCurType permite cambiar el tamaño, forma, etc del cursor.

#define INCL_BASE
#include <os2.h>

PVIOCURSORINFO CursorData;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioSetCurType(CursorData, VioHandle);

Parámetros

CursorDataPuntero a una estructura de características del cursor, con los siguientes campos:
yStart (USHORT) Linea horizontal del caracter en el que empieza la parte superior del cursor. Si el caracter tiene n lineas, 0 es la superior, y (n-1) es la inferior. Es posible indicar un porcentaje, de modo que la posición no dependerá del tamaño de la celda. Para ello, debe darse un valor negativo (-100 para 100%, -80 para 80% etc).
cEnd (USHORT) Linea horizontal del caracter en que termina el cursor. Las lineas se numeran igual que en yStart. Es posible indicar un porcentaje, de modo que la posición no dependerá del tamaño de la celda. Para ello, debe darse un valor negativo (-100 para 100%, -80 para 80% etc).
cx (USHORT) Ancho del cursor. En modos de texto, es el número de columnas. El valor máximo soportado por OS/2 es 1.
attr (USHORT) Un valor de -1 indica un cursor oculto. El resto de los valores indican cursor visible.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
356Ancho no válido
421Parámetros no válidos
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioSetMode

VioSetMode cambia el modo gráfico actual. Se pueden poner modos de 40/80 columnas y modos gráficos. Esta llamada no borra la pantalla. Para ello se pueden usar las llamadas VioScrollXX. Para los modos de texto en pantalla completa, el número de filas de la columna está determinado por la existencia de una fuente de tamaño adecuado.

#define INCL_BASE
#include <os2.h>

PVIOMODEINFO ModeData;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioSetMode(ModeData, VioHandle);

Parámetros

ModeDataEstructura con los siguientes elementos:
cb (USHORT) Indica la longitud de la estructura incluyendo cb. El tamaño mínimo es 3 bytes. OS/2 buscará el modo que más se aproxime a los datos enviados.
fbType (UCHAR) Máscara de bits con las características del modo.
Bit Descripción
7-4 Reservados
3 0 = Modos compatibles con VGA (del modo 0 al 13H)
1 = Modo propio de la tarjeta
2 Determina si la señal enviada al monitor es monócroma o color:
0 = Modo en color
1 = Modo en blanco y negro
1 0 = Modo texto
1 = Modo gráfico
0 0 = Adaptador monocromo
1 = Otro adaptador
color (UCHAR) Número de colores definido como potencia de dos (0 = modos monocromos 7, 7+ y F; 1 = 2 colores; 2 = 4 colores; 4 = 16 colores; 8 = 256 colores)
col (USHORT) Numero de columnas de texto
row (USHORT) Numero de filas de texto
hres (USHORT) Resolución horizontal (columnas de pixels)
vres (USHORT) Resolución vertical (filas de pixels)
fmt_ID (UCHAR) Formato de los atributos
attrib (UCHAR) Numero de atributos en un caracter
buf_addr (ULONG) Dirección física (32 bits) del buffer físico de pantalla en este modo
buf_length (ULONG) Longitud del buffer físico de pantalla para este modo
full_length (ULONG) Tamaño del buffer necesario para guardar totalmente el buffer físico de pantalla en este modo
partial_length (ULONG) Tamaño del buffer necesario para guardar parcialmente (pop-up) el buffer físico de pantalla para este modo
ext_data_addr (PCH) Puntero a una estructura extendida, o cero si no la hay. El formato de ésta está determinada por el driver, y es desconocido por OS/2
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
430Ilegal durante POPUP
436Handle VIO no válido
438Longitud no válida
465VIO inactivo (proceso en detached)
467No hay una fuente adecuada para ese modo
468Una fuente de usuario está activa
494VIO Extended SG


VioSetState

VioSetState cambia la configuración actual de registros de paleta, color del borde, modo de parpadeo/brillo o registros de color.

#define INCL_BASE
#include <os2.h>

PVOID RequestBlock;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioSetState(RequestBlock, VioHandle);

Parámetros

RequestBlockPuntero a una estructura de estado, que consiste en una de las seis posibles estructuras, en función del tipo pedido:
Tipo Definición
0 Cambia registros de paleta
1 Cambia color del borde
2 Cambia modo parpadeo/brillo
3 Cambia registros de color
4 Reservado
5 Cambia la línea para subrayado
Las estructuras, según el tipo, son:
VIOPALSTATE Válido para tarjetas EGA, VGA o IBM PS/2
cb (USHORT) Longitud de la estructura, incluyendose a ella misma. 38 es el valor máximo.
type (USHORT) El tipo es 0
iFirst (USHORT) Primer registro de paleta a cambiar. Tiene que valer entre 0 y 15. El número de registros devueltos se deduce en función del campo length
acolor[n] (USHORT*(cb-6)/2) Valores de color para cada registro de paleta. El número máximo es de 16. NOTA: en el fichero OS2EMX.H, n vale 1. Si se van a reservar mas selectores, es necesario crear la estructura de nuevo.
VIOOVERSCAN Válido para CGA, VGA o IBM PS/2
cb (USHORT) Longitud de la estructura, incluyendose a ella misma. Tiene que ser 6.
type (USHORT) El tipo es 1
color (USHORT) Color deseado para el borde
VIOINTENSITY Válido para CGA, EGA, MCGA, VGA o IBM PS/2
cb (USHORT) Longitud de la estructura, incluyendose ella misma. Tiene que ser 6.
type (USHORT) El tipo es 2
fs (USHORT) 0: el parpadeo está activo; 1: el brillo está activo
VIOCOLORREG Válido para VGA o IBM PS/2
cb (USHORT) Longitud de la estructura, incluyendose a sí misma. Tiene que ser 12.
type (USHORT) El tipo es 3
firstcolorreg (USHORT) Primer registro a cambiar. Tiene que estar contenido entre 0 y 255
numcolorregs (USHORT) Número de registros de color a cambiar. Tiene que valer entre 1 y 256
colorregaddr (PCH) Puntero a una zona donde están almacenadas las ternas de color a introducir en cada registro. El tamaño debe ser suficiente para que entren todos, teniendo en cuenta que cada registro ocupa 3 bytes. El orden en que se almacena es: rojo-verde-azul
VIOSETULINELOC Válido para EGA, VGA o IBM PS/2
cb (USHORT) Longitud de la estructura, incluyendose a sí misma. Tiene que ser 6.
type (USHORT) El tipo es 5. El subrayado está activo solo cuando el color de tinta está entre 1 y 9.
scanline (USHORT) Linea en la que se coloca el subrayado. El valor debe estar entre 0 y 31, y es la línea menos 1. Un valor de 32 indica que el subrayado está desactivado.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
421Parámetros no validos
436Handle VIO no válido
438Longitud no válida
465VIO inactivo (proceso en detached)
494VIO Extended SG


VioShowBuf

VioShowBuf repinta la imagen de pantalla a partir de la información del LVB. Es necesario hacerlo cuando se accede a traves del LVB (obtenido con VioGetBuf).

#define INCL_BASE
#include <os2.h>

USHORT Offset;
USHORT Length;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioShowBuf(Offset, Length, VioHandle);

Parámetros

OffsetDesplazamiento de la zona desde la que debe empezar a repintar la pantalla.
LengthLongitud de la zona de la pantalla a repintar.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
430Ilegal durante POPUP
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioWrtCellStr

VioWrtCellStr escribe una cadena de parejas caracter-atributo en la pantalla. Si la cadena excede una línea, se seguirá en la siguiente. Si llega al final de la pantalla, no se escribe más.

#define INCL_BASE
#include <os2.h>

PCH CellStr;
USHORT Length;
USHORT Row;
USHORT Column;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioWrtCellStr(CellStr, Length, Row, Column, VioHandle);

Parámetros

CellStrPuntero a una posición de memoria que contenga las parejas caracter-atributo a escribir.
LengthLongitud, en bytes, de la cadena a escribir. Cada pareja caracter-atributo mide 2 o 4 bytes.
RowFila inicial.
ColumnColumna inicial.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
358Fila no válida
359Columna no válida
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioWrtCharStr

VioWrtCharStr escribe una cadena de caracteres en la pantalla. Si la cadena excede una línea, se seguirá en la siguiente. Si llega al final de la pantalla, no se escribe más.

#define INCL_BASE
#include <os2.h>

PCH CharStr;
USHORT Length;
USHORT Row;
USHORT Column;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioWrtCharStr(CharStr, Length, Row, Column, VioHandle);

Parámetros

CharStrPuntero a una zona de memoria que contenga los caracteres a imprimir.
LengthLongitud, en bytes, de la cadena de caracteres.
RowFila inicial.
ColumnColumna inicial.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
358Fila no válida
359Columna no válida
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioWrtCharStrAtt

VioWrtCharStrAtt escribe una cadena de caracteres con un determinado atributo repetido para todos ellos. Si la cadena excede una línea, se seguirá en la siguiente. Si llega al final de la pantalla, no se escribe más.

#define INCL_BASE
#include <os2.h>

PCH CharStr;
USHORT Length;
USHORT Row;
USHORT Column;
PBYTE Attr;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioWrtCharStrAtt(CharStr, Length, Row, Column, Attr, VioHandle);

Parámetros

CharStrPuntero a una zona de memoria que contenga los caracteres a escribir.
LengthLongitud, en bytes, de la cadena de caracteres.
RowFila inicial.
ColumnColumna inicial.
AttrPuntero al/los atributo/s (1 o 3 bytes) a usar con cada caracter de la cadena.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
358Fila no válida
359Columna no válida
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioWrtNAttr

VioWrtNAttr escribe un atributo en la pantalla un número determinado de veces. Si la cadena excede una línea, se seguirá en la siguiente. Si llega al final de la pantalla, no se escribe más.

#define INCL_BASE
#include <os2.h>

PBYTE Attr;
USHORT Times;
USHORT Row;
USHORT Column;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioWrtNAttr(Attr, Times, Row, Column, VioHandle);

Parámetros

AttrPuntero al/los atributo/s (1 o 3 bytes) a escribir.
TimesNumero de veces que se escribirá el atributo.
RowFila inicial.
ColumnColumna inicial.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
358Fila no válida
359Columna no válida
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioWrtNCell

VioWrtNCell escribe una pareja de caracter-atributo en la pantalla un número determinado de veces. Si la cadena excede una línea, se seguirá en la siguiente. Si llega al final de la pantalla, no se escribe más.

#define INCL_BASE
#include <os2.h>

PBYTE Cell;
USHORT Times;
USHORT Row;
USHORT Column;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioWrtNCell(Cell, Times, Row, Column, VioHandle);

Parámetros

CellPuntero a una zona de memoria que contenga la pareja caracter-atributo a escribir.
TimesNúmero de veces que se repetira la pareja.
RowFila inicial.
ColumnColumna inicial.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
358Fila no válida
359Columna no válida
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioWrtNChar

VioWrtNChar escribe un caracter en la pantalla un número determinado de veces. Si la cadena excede una línea, se seguirá en la siguiente. Si llega al final de la pantalla, no se escribe más.

#define INCL_BASE
#include <os2.h>

PCH Char;
USHORT Times;
USHORT Row;
USHORT Column;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioWrtNChar(Char, Times, Row, Column, VioHandle);

Parámetros

CharPuntero a una zona de memoria que contenga el caracter a escribir.
TimesNúmero de veces que se repetirá la pareja.
RowFila inicial.
ColumnColumna inicial.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
358Fila no válida
359Columna no válida
436Handle VIO no válido
465VIO inactivo (proceso en detached)


VioWrtTTY

VioWrtTTY escribe una cadena de caracteres en la pantalla empezando en la posición actual del cursor. Al terminar, éste es movido a la posición siguiente del último caracter escrito. Si la cadena no entra en una línea, se pasa a la siguiente, y si no entra en la pantalla, ésta se desplazará hacia arriba hasta que se complete. Los caracteres retorno de carro, salto de línea, tabulador y Bell son tratados como comandos, y no como caracteres imprimibles. El retroceso es un retroceso no destructivo. Los tabuladores son expandidos a 8 espacios. VioWrtTTY es la única función que acepta comandos ANSI.

#define INCL_BASE
#include <os2.h>

PCH CharStr;
USHORT Length;
HVIO VioHandle;
APIRET rc; /* Codigo de error */

rc = VioWrtTTY(CharStr, Length, VioHandle);

Parámetros

CharStrPuntero a una posición de memoria donde está la cadena a escribir.
LengthLongitud de la cadena en bytes.
VioHandleHandle VIO. Debe valer cero.

Codigos de error

0Sin error
355Modo no valido
436Handle VIO no válido
465VIO inactivo (proceso en detached)


MAKEP

MAKEP convierte una pareja selector:offset en un puntero.

#define INCL_BASE
#include <os2.h>

PCH Pointer;
SEL Selector;
USHORT Offset;

Pointer = MAKEP(Selector, Offset);

Parámetros

SelectorUn selector devuelto por OS/2.
OffsetOffset devuelto por OS/2 (o 0 si no hay offset).


_emx_32to16

_emx_32to16 convierte un puntero de 32 bits en una pareja selector:offset. Esta es devuelta en una variable de tipo entero (se recomienda un cast para convertirlo a puntero).

PCH Pointer32;
int Pointer16;

Pointer16 = _emx_32to16(Pointer32);

Parámetros

Pointer32Un puntero de 32 bits.

 Indice