home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
PCWO131.ZIP
/
PCW.MAN
< prev
next >
Wrap
Text File
|
1989-04-07
|
141KB
|
3,129 lines
PcWindow PcWindow ________
Personal Computer Window management toolkit
Copyright (c) 1988 Pasquale Cantiello
Versione 1.31 - 7 Aprile 1989
Ms-Dos & OS/2 Support
Manuale d'uso PcWindow - pag. 2
Trademarks Trademarks __________
Nel corso del seguente manuale si fa' riferimento a dei nomi e
delle sigle che sono marchi registrati dei relativi autori come
appresso indicati:
Microsoft, MS-DOS, OS/2, CodeView, QuickC: marchi registrati della
Microsoft Corporation.
IBM: marchio registrato della International Business Machines
Corporation.
Borland, Turbo C: marchi registrati della Borland International.
Norton Guides: Marchio registrato di Peter Norton.
Clipper: Marchio registrato della Nantucket software.
FidoNet: marchio registrato di Tom Jennings.
Ringraziamenti Ringraziamenti ______________
Ringrazio le seguenti persone che hanno collaborato attivamente al
programma:
Carlo Adami: per le sue revisioni alle bozze del manuale, come
anche per i suoi consigli e per il lavoro come beta-tester.
Michele Liguori: per i suoi suggerimenti e per aver collaborato
come beta-tester a trovare i vari bug nascosti.
Johann Sebastian Bach e Miles Davis: per avermi dato il necessario
supporto morale durante le innumerevoli notti passate ad
editare e compilare il programma.
Note: Note: _____
Il nome PcWindow come si puo' capire e' composto da due parti:
Window che significa finestra ed indica chiaramente lo scopo del
programma, e Pc che e' l'abbreviazione solita di "personal
computer" ma anche le iniziali del mio nome.
Manuale d'uso PcWindow - pag. 3
Avvertenze Avvertenze __________
Alcune versioni di questo programma sono da considerarsi di
pubblico dominio e pertanto possono essere liberamente copiate e
distribuite senza alcun obbligo nei miei confronti oltre quello di
non modificare ne' il programma, ne' la documentazione associata,
ne' il formato e il numero dei files. Di seguito sono indicate le
versioni di pubblico dominio e quelle a pagamento.
Chiunque usera' questa libreria in proprie applicazioni, sia di
pubblico dominio che commerciali, e' pregato di aggiungere nella
relativa documentazione una nota del tipo :"Questo programma fa uso
della libreria PcWindow sviluppata da Pasquale Cantiello".
Questa e' l'unica condizione che pongo per l'uso del tool.
Il rovescio della medaglia e' che non rispondo di eventuali errori
nel programma o nella documentazione. Peraltro chiunque ne
riscontrasse e' pregato di comunicarmeli tempestivamente affinche'
possano essere effettuate le dovute correzioni nel piu' breve tempo
possibile.
Tipi di pacchetto Tipi di pacchetto _________________
La distribuzione di PcWindow avviene in diversi tipi di formato a
seconda del modello di memoria, del sistema operativo e del
compilatore usato. Alcuni di essi non sono public domain per cui
essi sono distribuiti solo in cambio di un piccolo contributo di
supporto allo sviluppo. Ecco i possibili nomi dei pacchetti:
-----Versioni public domain-------
PCWMxxx : Small memory model, Microsoft C, Ms-Dos.
PCWTxxx : Small memory model, Borland Turbo C, Ms-Dos.
PCWOxxx : Small memory model, Microsoft C, OS/2.
PCWCxxx : Small memory model, Microsoft C & Borland Turbo C,
Ms-Dos & OS/2.
-----Versioni a pagamento---------
PCWXMxxx : Large & Small memory model, Microsoft C, Ms-Dos.
PCWXTxxx : Large & Small memory model, Borland Turbo C, Ms-Dos.
PCWXOxxx : Large & Small memory model, Microsoft C, OS/2.
PCWXCxxx : Large & Small memory model, Microsoft C & Borland Turbo
C, Ms-Dos & OS/2.
Al posto dei tre caratteri xxx va sostituito il numero della
versione (esempio: small memory model, MS-C, Ms-Dos vers. 1.30 =
PCWM130)
Qualcuno si chiedera' il perche' di tutte queste edizioni quando
bastavano le due PCWCxxx e PCWXCxxx. Ebbene nel primo caso sono
versioni distribuite via BBS per cui piu' sono corti i files e meno
costoso e' il loro prelievo, oltretutto ad uno che usa il TurboC
non servira' la versione per OS/2 e viceversa. Nel caso delle
versioni a pagamento distribuite tramite dischetto la suddivisione
e' stata fatta per diversificare i prezzi.
Manuale d'uso PcWindow - pag. 4
Registrazione Registrazione _____________
Gradirei che chiunque abbia intenzione di utilizzare il tool
registrasse il proprio nominativo, o inviando l'apposito
questionario presente in coda al manuale debitamente compilato, o
contattandomi direttamente. La registrazione (assolutamente
gratuita) mi serve da un lato per un'indagine statistica sugli
utenti (leggi curiosita') e dall'altro da' diritto a ricevere tutti
gli aggiornamenti.
Tutti gli utenti registrati possono quindi prendere parte attiva
allo sviluppo e al collaudo del programma e possono fornire
commenti, consigli e segnalare eventuali errori. Al rilascio di
nuove versioni tutti gli utenti registrati saranno immediatamente
avvertiti e sara' loro inviata l'update, se lo desiderano.
Potete contattarmi scrivendomi al seguente indirizzo:
Pasquale Cantiello
c/o I.D.M. srl
Viale Kennedy, 33
81055 S.Maria C.V. (CE)
oppure, ed e' preferibile per il minore tempo di turn-around,
collegandosi via modem al "S.Maria C.V. BBS", FidoNet 2:335/2, tel.
0823-812533, velocita' 1200/2400 baud, 8/N/1 nei seguenti orari:
Lunedi-Venerdi: dalle 20:00 alle 08:00
Sabato: dalle 14:00 alle 24:00
Domenica e festivi: 24 ore
Su tale BBS, oltre a poter "parlare" direttamente con me per tutto
quello che concerne l'uso del programma, e' possibile prelevare la
versione aggiornata del programma, conoscere l'elenco delle persone
che lo utilizzano, e prelevare esempi e programmi che sfruttano il
toolkit.
E' possibile servirsi del BBS anche per la registrazione del
nominativo utente uploadando il file CARD.PCW, dopo averlo
compilato con un qualsiasi editor.
Buon lavoro !
Pasquale Cantiello
Manuale d'uso PcWindow - pag. 5
Introduzione Introduzione ____________
Questa libreria di funzioni "C" nasce per soddisfare le esigenze
dei programmatori che desiderano dare una veste grafica e d'effetto
ai loro programmi senza per questo impegnarsi in tecniche di
programmazione differenti da quelle del programma in sviluppo e
inoltre per potersi slegare dall'hardware per quel che riguarda la
gestione degli effetti video.
La libreria e' stata realizzata per poter funzionare sia con il
compilatore Microsoft (vers. 5.10 e successive), sia con il Borland
Turbo C (vers. 1.00 e successive). Ovviamente le librerie sono
diverse in nome e formato, ma sono completamente equivalenti dal
punto di vista funzionale, e sono distribuite in pacchetti
differenti in modo che chi deve prelevare i file via modem, puo'
anche prendere solo quelli per il compilatore che gli interessa,
trascurando gli altri. Di seguito tutto quello che si dira' nel
presente manuale sara' valido per entrambi i compilatori, salvo
quando espressamente menzionato.
Il modello di memoria da utilizzare per tutte le versioni public-
domain e' lo small. Non e' possibile l'uso con Clipper con la
versione public-domain.
Per la extended version e' possibile usare anche il large memory ________________
model ed e' possibile usare la libreria anche per altri compilatori
della famiglia Microsoft seguendo le specifiche fornite nei
relativi manuali nel capitolo dedicato al "mixed language
programming", come anche e' possibile usarla con il compilatore
Clipper (vedi l'apposita appendice).
La libreria si puo' vedere divisa in tre parti fondamentali: la
gestione delle finestre (windows) che e' anche il nucleo
principale, la gestione dei menu pull-down e la gestione dell'input
controllato .
Struttura della libreria Struttura della libreria ________________________
La libreria e' formata da un insieme di file:
PCW. H Comprende definizioni di macro e di strutture dati
indispensabili per l'uso della libreria e i
prototipi delle funzioni di PCW.LIB, in modo da
poter avere uno "strong type checking" da parte del
compilatore. Pertanto occorre inserire in testa al
programma applicativo che si sta realizzando la
direttiva:
#include <pcw.h>
PCWDEF. C Questo file non e' piu' necessario per PcWindow, ma
viene mantenuto perche' nelle versioni precedenti
esso sostituiva pcw.h. Si consiglia di modificare i
sorgenti dei programmi scritti per PcW usando il
nuovo nome.
Manuale d'uso PcWindow - pag. 6
PCW. MAN Questo e' il manuale che state leggendo e va
stampato con il comando: "copy pcw.man prn" su una __________________
qualunque stampante anche non grafica.
PCWGR. MAN Questo e' il manuale come il precedente, ma in
formato grafico adatto per stampanti EPSON FX
compatibili e va stampato con il comando "copy _____
pcwgr.man prn /b". _________________
Nota: questo file non e' presente nel pacchetto ____
distribuito tramite BBS, ma fa parte del file
PCWGRMAN.ARC prelevabile separatamente e questo per
far si che chi non ha stampante grafica non sia
costretto a fare download enormi. Per i pacchetti
non public-domain il manuale viene fornito gia'
stampato e rilegato.
LEGGIMI. DOC File di testo con indicazioni che non e' stato
possibile inserire nel manuale (da leggere!!).
CARD. PCW Registration card, ovvero un documento da compilare
e da inviare per poter essere aggiornato sugli
sviluppi del programma.
PCW. VER Questo file di testo contiene la storia evolutiva
del programma ovvero le differenze e le modifiche
apportate alle varie versioni.
PCW*. GEM Insieme di figure nel formato GEM Draw allegate al
manuale.
PCW. LIS File di comando per lo spooler di stampa di GEM per
stampare le figure.
PCWDEMO. C Programma dimostrativo globale. Sorgente.
PCWDEMO. EXE Il precedente compilato e linkato.
PCWDEMOP.EXE Il precedente, ma per OS/2.
DEMOWIN. C Programma dimostrativo delle funzioni per la gestione
delle window. Sorgente.
DEMOWIN. EXE Programma gia' compilato e linkato.
DEMOWINP.EXE Come il precedente, ma per l'ambiente OS/2.
ESEMPIO. DOC Note esplicative del programma dimostrativo.
Il file principale e' la libreria e puo' assumere nomi diversi a
seconda del compilatore, del sistema operativo e del modello di
memoria. In ogni caso e' contraddistinto dall'estensione .LIB
Di seguito sono elencati i possibili nomi delle librerie. Come gia'
detto la loro presenza dipende dal tipo di pacchetto.
Manuale d'uso PcWindow - pag. 7
PCW.LIB Small memory model, MS-C, Ms-Dos.
PCWT.LIB Small memory model, TurboC, Ms-Dos.
PCWP.LIB Small memory model, MS-C, OS/2.
PCWL.LIB Large memory model, MS-C, Ms-Dos.
PCWTL.LIB Large memory model, TurboC, Ms-Dos.
PCWLP.LIB Large memory model, MS-C, OS/2.
Il file di header pcw.h andra' copiato nella directory degli
include files, mentre la libreria (o le librerie) in uso andra'
copiata nella directory o nel disco ove risiedono le altre librerie
del "C", e bisognera' linkarla ai programmi che la utilizzano
indicandone il nome esplicitamente nella linea di comando del
linker. Occorrera' anche aver settato correttamente le variabili di
environment INCLUDE e LIB per l'MSC o generato il file di
configurazione per il TC.
Ad esempio, dovendo generare il programma DEMOWIN.EXE a partire dal
programma DEMOWIN.C con il compilatore MSC bisognera' dare i
comandi:
C>cl /c demowin.c (compila soltanto) __________________
C>link demowin,,nul,pcw;(linka alle librerie) _____________________
Analogamente con il compilatore Borland:
C>tcc -c demowin.c (compila soltanto) __________________
C>tlink c0s+demowin,demowin,/x/c,emu+maths+cs+pcwt (linka alle ____________
librerie) _________
Il toolkit comprende una serie di funzioni richiamabili dall'utente
che saranno di seguito descritte sintatticamente e semanticamente.
Nella descrizione sono usati in maiuscolo dei nomi predefiniti nel
file di definizioni che quindi devono essere usati nel programma.
Le funzioni non sono elencate alfabeticamente, ma secondo un ordine
che si e' ritenuto favorevole per un apprendimento graduale
dell'uso della libreria.
Si raccomanda durante la scrittura dei programmi come regola
fondamentale di non usare mai nomi di variabili o di funzioni che
iniziano con i caratteri Pcw, Pcm o Pci e questo al fine di evitare
possibili conflitti di nomi con le funzioni e le variabili interne
alla libreria.
Manuale d'uso PcWindow - pag. 8
Funzioni di finestra Funzioni di finestra ____________________
Che cosa si intende per finestra? Ad un primo sguardo superficiale
potremmo dire che una finestra e' una zona del video delimitata da
un bordo e contenente del testo o dei grafici, indipendente dal
video stesso, con dimensioni variabili e posizione variabile.
Volendo essere piu' precisi possiamo definire la finestra come un
ente logico caratterizzato da un array bidimensionale di caratteri
di dimensioni opportune, che puo' essere visualizzato per intero o
solo in un parte, all'interno di un'area, anch'essa di dimensioni
variabili, e posizionabile a piacere.
Parametri caratteristici di una finestra Parametri caratteristici di una finestra ________________________________________
Una finestra viene individuata dai seguenti parametri
caratteristici (Fig. 1 e Fig. 2):
Limite X e Limite Y (xlim, ylim): Dimensioni dell'array di _______________________________________
caratteri (buffer). Valori minimi sono 1 e 1, mentre valori massimi
sono 78 per X e 23 per Y (80 e 25 se la finsetra e' sporvvista di
bordo). E' da osservare che l'area visualizzata puo' essere anche
solo una parte del buffer.
Locazione X e Y (xloc, yloc): Coordinate sul video dell'angolo in _______________________________
alto a sinistra dell'area visibile. Valori minimi sono 0 e 0
(corrispondenti all'angolo in alto a sinistra del monitor), mentre
i valori massimi dipendono dalle dimensioni dell'area.
Dimensioni area X e Y (xwidth, ywidth): Larghezza e altezza ____________________________________________
dell'area visibile espresse in caratteri. Valori minimi sono 1 e 1
mentre valori massimi sono i Limiti X e Y. Osservare che se la
finestra e' dotata di bordo sul video viene occupata un'area piu'
larga e piu' lunga di 2 caratteri per contenere appunto il bordo.
Punto di vista X e Y (xpos, ypos): Coordinate all'interno del _____________________________________
buffer del primo carattere da visualizzare nell'area visibile.
Valori minimi sono 0 e 0 mentre i valori massimi dipendono dai
limiti X e Y e dalle dimensioni dell'area visibile.
Tipo di bordo: Il bordo puo' essere costituito da una linea singola ______________
o da una linea doppia, oppure puo' mancare compleatamente.
Attributo del bordo: Colore e attributi del bordo (solo per le _____________________
finestre con bordo).
Titolo della finestra: Titolo che viene visualizzato in alto al _______________________
centro dell'area visibile (sul bordo). Non vale per le finestre
senza bordo.
Attributo del titolo: Codice colore e attributi del titolo. Non ______________________
vale se la finestra e' sprovvista di bordo.
Manuale d'uso PcWindow - pag. 9
Tutti questi parametri caratterizzano la finestra e vanno forniti
per la maggior parte in fase di definizione. E' prevista la
possibilita' di alterare dinamicamente alcuni di questi parametri.
Tutto cio' sara' approfondito parlando delle funzioni relative.
Ancora c'e' da dire che una finestra puo' trovarsi in tre stati
logici diversi: (chiusa, aperta corrente, aperta normale) il cui
significato e' il seguente:
- Finestra chiusa: non e' visibile sullo schermo (su di essa sono
possibili la maggior parte delle funzioni).
- Finestra aperta corrente: la sua area visibile e' sullo schermo e
su di essa non sono state aperte altre finestre (e' possibile
usare tutte le funzioni).
- Finestra aperta non corrente: la sua area visibile e' sullo
schermo, ma c'e' almeno un'altra finestra che e' stata aperta
dopo di essa e non ancora chiusa. (Non e' possibile applicarvi
tutte le funzioni).
Manuale d'uso PcWindow - pag. 10
Funzione init: init:
int Pcw_init(windows, max_open, max_buf_size) int Pcw_init(windows, max_open, max_buf_size)
unsigned int windows, max_open, max_buf_size; unsigned int windows, max_open, max_buf_size;
Questa funzione e' la prima funzione che deve essere chiamata dal
programma che usa il toolkit e serve per allocare la memoria
richiesta dai buffer e per inizializzare i valori di default.
Questa funzione cancella anche lo schermo.
Occorre passare i seguenti parametri:
windows: Numero massimo di finestre da gestire (>= 1). _______
max_open: Numero massimo di finestre aperte contemporaneamente ________
(<=windows). _______
max_buf_size: Ampiezza massima in caratteri del buffer di finestra. ____________
Per determinare questo valore, basta eseguire il prodotto
xlim*ylim di tutte le finestre che si devono definire (vedi ____ ____
funzione seguente) e trovare il massimo.
La funzione puo' ritornare i seguenti valori:
OK : L'inizializzazione e' andata a buon fine.
ILLPAR : I parametri passati sono illegali.
OUTMEM : Non esiste memoria sufficiente.
ALRDEF : Sistema gia' inizializzato (impossibile reinizializzare).
NOTA NOTA ____
Non tentare di usare alcuna funzione senza aver effettuato
l'inizializzazione. Durante la scrittura del programma e'
necessario fare in modo che la terminazione dello stesso deve
avvenire tramite la funzione exit(), in modo da consentire al
toolkit di effettuare tutte le operazioni finali.
Inoltre occorre tenere presente che qualche funzione di quelle del
toolkit necessita di una finestra ausiliaria, per cui se si usa una
di queste funzioni occorre determinare bene il numero di finestre
contemporaneamente definite e aperte (magari abbondare di una o due
finestre).
Manuale d'uso PcWindow - pag. 11
Funzione define: define:
int Pcw_define(num,x_wid,y_wid,lintyp,brdatt,wndatt,ttlatt,x_lim, int Pcw_define(num,x_wid,y_wid,lintyp,brdatt,wndatt,ttlatt,x_lim,
y_lim,title) y_lim,title)
unsigned int num, x_wid, y_wid, lintyp; unsigned int num, x_wid, y_wid, lintyp;
ATTR brdatt, wndatt, ttlatt; ATTR brdatt, wndatt, ttlatt;
unsigned int x_lim, y_lim; unsigned int x_lim, y_lim;
char *title; char *title;
La funzione permette la definizione di una finestra fornendo le
informazioni necessarie. E' possibile anche ridefinire una finestra
usando prima la funzione undef. undef
I parametri da passare sono i seguenti:
num : Numero della finestra da definire (da 0 a windows-1, come ___ _______
dichiarato nella funzione init). init
x_wid, y_wid : Dimensioni iniziali dell'area visibile (x_wid <= ____________ _____
x_lim e y_wid <= y_lim). (Vedi Fig. 2). Nel caso in cui la _____ _____ _____
finestra sia dotata di bordo, allora l'ampiezza massima
per una finestra e' 78 lungo X e 23 lungo Y, altrimenti si
puo' arrivare a 80 e 25.
lintyp : Tipo di linea del bordo: LT_SINGLE singola e LT_DOUBLE ______
doppia, oppure NO_BORDER per eliminare il bordo.
brdatt : Attributo del bordo (usare la macro attrib). Se lafunzione attrib ______
non e' provvista di bordo usare la macro NULLATT.
wndatt : Attributo iniziale della finestra (attrib). attrib ______
ttlatt : Attributo del titolo (attrib). Se la finestranon e' attrib ______
provvista di bordo usare la macro NULLATT.
x_lim, y_lim : Dimensioni della finestra (buffer). ____________
title : Array di caratteri (max. 74) contenente il titolo. Questo _____
array deve essere inizializzato staticamente in quanto la
funzione memorizza solo il puntatore ad esso. Puo anche
essere passata una stringa nulla, in modo da non
visualizzare il titolo. Nel caso in cui la finestra e'
sprovvista di bordo, l'eventuale titolo passato viene
trascurato.
NOTA NOTA ____
Deve essere x_lim>=x_wid, y_lim>=y_wid e x_lim * y_lim <= _____ _____ ______ _____ _____ _____
max_buf_size. ____________
Manuale d'uso PcWindow - pag. 12
I possibili valori di ritorno sono:
OK : definizione con esito positivo.
ILLPAR : i parametri sono illegali.
ALRDEF : finestra gia' definita (usare prima undef se occorre undef
ridefinire).
Manuale d'uso PcWindow - pag. 13
Funzione undef: undef:
int Pcw_undef(num) int Pcw_undef(num)
unsigned int num; unsigned int num;
Elimina la definizione di una finestra. Ovviamente la finestra non
deve essere aperta e inoltre deve essere stata precedentemente
definita.
L'unico parametro da passare e' il numero della finestra.
I possibili valori di ritorno sono:
OK : Operazione con esito positivo.
ILLPAR : Parametro illegale.
NOTDEF : Finestra non definita.
WINOPN : Finestra aperta.
Manuale d'uso PcWindow - pag. 14
Funzioni open_pos e open: open_pos e open:
int Pcw_open_pos(num, effect, x, y) int Pcw_open_pos(num, effect, x, y)
unsigned int num, effect, x, y; unsigned int num, effect, x, y;
int Pcw_open(num, effect) int Pcw_open(num, effect)
unsigned int num, effect; unsigned int num, effect;
Queste due funzioni aprono una finestra visualizzando la relativa
area visibile sul video. La differenza fra le due e' che la prima
funzione specifica la posizione sul video dell'area, mentre la
seconda sfrutta l'ultima posizione usata (per finestre mai aperte
viene assunto per default x = y = 0). La finestra aperta diventa ___ _
quella corrente.
I parametri da passare sono:
num : numero della finestra da aprire. ___
effect : effetto speciale per l'apertura tra i seguenti: ______
ISTANT,FADEUP, FADEDOWN, FADELEFT, FADERIGHT, FADEHORIZ,
FADEVERT (vedi Fig. 3).
x, y (solo per open_pos) : coordinate xloc e yloc (vedi Fig. 1). ____
(osservare che x e y devono essere tali da permettere che
tutta l'area visibile sia sullo schermo ricordando che
l'area e' piu' larga e piu' lunga di due caratteri per via
del bordo se la finestra ne e' provvista). Al posto di uno
o entrambi i parametri x e y e' possibile mettere uno dei
seguenti valori predefiniti:
ALIGN_CENTER : La finestra viene aperta al centro dello
schermo (rispetto a x o rispetto a y). L'allineamento
si riferisce all'intera finestra e non alla sola area
visibile.
ALIGN_CENTER_VIEW : Come il precedente, ma riferito alla
sola area visibile.
ALIGN_BEGIN : La finestra viene aperta sul lato sinistro
dello schermo (o in alto se lungo y). L'allineamento
e' riferito rispetto all'intera finestra.
ALIGN_BEGIN_VIEW : Come il precedente, ma relativo
all'area visibile.
ALIGN_END : Come ALIGN_BEGIN, ma per il lato destro o
inferiore.
ALIGN_END_VIEW : Come il precedente, ma relativo all'area
visibile.
Manuale d'uso PcWindow - pag. 15
Possibili valori di ritorno sono:
OK : Apertura corretta.
ILLPAR : Parametri illegali.
NOTDEF : Finestra non definita.
WINOPN : Finestra gia' aperta.
OUTMEM : Troppe finestre aperte (limite stabilito dalla funzione
init). init
Manuale d'uso PcWindow - pag. 16
Funzioni printat e sprintat: printat e sprintat:
int Pcw_printat(num, x, y, car, attr, num_of_car) int Pcw_printat(num, x, y, car, attr, num_of_car)
unsigned int num, x, y; unsigned int num, x, y;
char car; char car;
ATTR attr; ATTR attr;
unsigned int num_of_car; unsigned int num_of_car;
int Pcw_sprintat(num, x, y, string, attr) int Pcw_sprintat(num, x, y, string, attr)
unsigned int num, x, y; unsigned int num, x, y;
char *string; char *string;
ATTR attr; ATTR attr;
Le due funzioni consentono di scrivere rispettivamente una serie di
caratteri uguali e una stringa in una finestra. E' possibile
scrivere anche in una finestra che sia parzialmente o totalmente
coperta da altre finestre. Osservare che viene effettuato il wrap-
around alla fine delle linee, pero' le parole lunghe vengono
spezzate senza sillabazione, ne' giustificazione.
I parametri da passare sono:
num : numero della finestra. ___
x, y : coordinate a cui scrivere locali alla finestra (da 0,0 a _ _
xlim, ylim: vedi Fig. 2). ____ ____
car (solo per printat) : carattere da scrivere. printat ___
attr : attributo (attrib) del carattere o della stringa. attrib ____
num_of_car (solo per printat) : numero di caratteri uguali. printat __________
string (solo per sprintat) : stringa da scrivere. sprintat ______
Al posto di uno o entrambi i parametri x e y e' possibile mettere
uno dei seguenti valori predefiniti:
ALIGN_CENTER : La scritta viene centrata nella finestra
(rispetto a x o rispetto a y). L'allineamento si riferisce
all'intera finestra e non alla sola area visibile.
ALIGN_CENTER_VIEW : Come il precedente, ma riferito alla sola
area visibile.
ALIGN_BEGIN : La scritta allineata sul lato sinistro della
finestra (o in alto se lungo y). L'allineamento e'
riferito rispetto all'intera finestra.
ALIGN_BEGIN_VIEW : Come il precedente, ma relativo all'area
visibile.
ALIGN_END : Come ALIGN_BEGIN, ma per il lato destro o
inferiore.
Manuale d'uso PcWindow - pag. 17
ALIGN_END_VIEW : Come il precedente, ma relativo all'area
visibile.
Possibili valori di ritorno sono:
OK : scrittura corretta.
ILLPAR : parametri illegali.
NOTDEF : Finestra non definita.
Manuale d'uso PcWindow - pag. 18
Funzione cls: cls:
int Pcw_cls(num, attr) int Pcw_cls(num, attr)
unsigned int num; unsigned int num;
ATTR attr; ATTR attr;
Cancella il contenuto di una finestra. Vale per tutte le finestre
anche se parzialmente o totalmente sovrapposte da altre.
I parametri sono:
num : numero della finestra. ___
attr : attributo da utilizzare per la cancellazione (attrib). attrib ____
Possibili valori di ritorno sono :
OK : cancellazione eseguita.
ILLPAR : parametri illegali.
NOTDEF : finestra non definita.
Manuale d'uso PcWindow - pag. 19
Funzione clear_screen: clear_screen:
void Pcw_clear_screen(attr) void Pcw_clear_screen(attr)
ATTR attr; ATTR attr;
Cancella il contenuto del video. Non tiene conto delle finestre e
dei menu aperti, per cui va usata con attenzione.
Il parametro attr e' l attributo da utilizzare per la cancellazione _____
e serve a stabilire il colore dello sfondo (attrib). attrib
La funzione non ritorna alcun valore.
Manuale d'uso PcWindow - pag. 20
Funzione close: close:
int Pcw_close(effect) int Pcw_close(effect)
unsigned int effect; unsigned int effect;
Chiude la finestra corrente. La finestra appena sotto quella
corrente (se esiste) viene ad essere la nuova finestra corrente.
L'unico parametro effect riguarda il modo in cui chiudere la ______
finestra e puo' valere:ISTANT, FADEUP, FADEDOWN, FADELEFT,
FADERIGHT, FADEHORIZ, FADEVERT (vedi Fig. 4).
I possibili valori di ritorno sono:
OK : chiusura effettuata.
ILLPAR : parametro illegale.
NOWIND : nessuna finestra aperta.
Manuale d'uso PcWindow - pag. 21
Funzione move_abs: move_abs:
int Pcw_move_abs(x, y, effect) int Pcw_move_abs(x, y, effect)
unsigned int x, y, effect; unsigned int x, y, effect;
Muove l'area visibile della finestra corrente lungo lo schermo. Il
contenuto dell'area rimane lo stesso. Simile a questa funzione e'
la funzione move_rel (vedi). move_rel
I parametri sono:
x, y : Coordinate a cui posizionare l'area nell'ambito dello ____
schermo; al solito i valori minimi per x e y sono 0 e 0,
mentre i valori massimi dipendono dall'ampiezza dell'area
(non puo' oltrepassare i limiti dello schermo). Occorre
tenere conto della presenza o meno del bordo.
effect : effetto con cui muovere l'area tra i seguenti: ISTANT, ______
FADEHORIZ, FADEVERT (Vedi Fig. 5).
Al posto di uno o entrambi i parametri x e y e' possibile mettere
uno dei seguenti valori predefiniti:
ALIGN_CENTER : La finestra viene spostata al centro dello
schermo (rispetto a x o rispetto a y). L'allineamento si
riferisce all'intera finestra e non alla sola area
visibile.
ALIGN_CENTER_VIEW : Come il precedente, ma riferito alla sola
area visibile.
ALIGN_BEGIN : La finestra viene spostata sul lato sinistro
dello schermo (o in alto se lungo y). L'allineamento e'
riferito rispetto all'intera finestra.
ALIGN_BEGIN_VIEW : Come il precedente, ma relativo all'area
visibile.
ALIGN_END : Come ALIGN_BEGIN, ma per il lato destro o
inferiore.
ALIGN_END_VIEW : Come il precedente, ma relativo all'area
visibile.
I possibili valori di ritorno sono:
OK : Spostamento effettuato.
ILLPAR : Parametri illegali.
NOWIND : Nessuna finestra aperta.
Manuale d'uso PcWindow - pag. 22
Funzione move_rel: move_rel:
int Pcw_move_rel(direction, step, effect) int Pcw_move_rel(direction, step, effect)
unsigned int direction, step, effect; unsigned int direction, step, effect;
Muove la finestra corrente ad una posizione in coordinate relative
alla posizione attuale. Non e' consentito il passaggio dei limiti
dello schermo. Simile a questa funzione e' la funzione move_abs move_abs
(vedi).
Parametri da passare sono:
direction : direzione verso cui muovere l'area tra le seguenti : _________
UP, DOWN, LEFT, RIGHT.
step : numero di passi di cui deve essere spostata l'area. ____
effect : effetto che puo' valere ISTANT per movimento istantaneo e ______
FADE per movimento graduale.
Possibili valori di ritorno sono :
OK : spostamento effettuato.
ILLPAR : parametri illegali.
NOWIND : nessuna finestra aperta.
Manuale d'uso PcWindow - pag. 23
Funzione scroll: scroll:
int Pcw_scroll(num, direction, step, effect) int Pcw_scroll(num, direction, step, effect)
unsigned int num, direction, step, effect; unsigned int num, direction, step, effect;
Muove l'area visibile lungo il buffer determinando uno scorrimento
del testo all'interno dell'area. La posizione sullo schermo rimane
inalterata. Simile a questa funzione e' la funzione set_view set_view
(vedi).
I parametri sono:
num : numero di finestra (vale solo per la finestra corrente o per ___
una finestra chiusa).
direction : direzione in cui muovere l'area fra le seguenti: UP, _________
DOWN, LEFT, RIGHT (vedi Fig. 6).
step : numero di passi di cui deve essere spostata l'area. ____
effect : effetto fra i seguenti: ISTANT per scorrimento istantaneo ______
e FADE per scorrimento graduale. Ovviamente per finestre
chiuse l'effetto non ha importanza.
Possibili valori di ritorno sono:
OK : scorrimento effettuato.
ILLPAR : parametri illegali.
NOTDEF : finestra non definita.
WINOPN : finestra aperta non corrente.
Manuale d'uso PcWindow - pag. 24
Funzione set_view: set_view:
int Pcw_set_view(num, x, y) int Pcw_set_view(num, x, y)
unsigned int num, x, y; unsigned int num, x, y;
Sposta l'area visibile lungo il buffer alle coordinate indicate. La
posizione dell'area sul video rimane inalterata. Simile a questa
funzione e' la funzione scroll (vedi). scroll
I parametri sono:
num : numero della finestra (vale solo per la finestra corrente o ___
per una finestra chiusa).
x, y : coordinate del punto di vista (xpos e ypos in Fig. 2). Non ____
e' possibile uscire fuori dal buffer.
Al posto di uno o entrambi i parametri x e y e' possibile mettere
uno dei seguenti valori predefiniti:
ALIGN_CENTER : La zona visibile e' il centro del buffer (rispetto a
x o rispetto a y).
ALIGN_BEGIN : La zona visibile e' quella sul lato sinistro del
buffer (o in alto se lungo y).
ALIGN_END : Come ALIGN_BEGIN, ma per il lato destro o inferiore.
Possibili valori di ritorno sono:
OK : spostamento effettuato.
ILLPAR : parametri illegali.
NOTDEF : Finestra non definita.
WINOPN : Finestra aperta non corrente.
Manuale d'uso PcWindow - pag. 25
Funzione size: size:
int Pcw_size(num, tipo, direction, step, effect) int Pcw_size(num, tipo, direction, step, effect)
unsigned int num, tipo, direction, step, effect; unsigned int num, tipo, direction, step, effect;
Cambia le dimensioni dell'area visibile. Vale solo per la finestra
corrente o per una finestra chiusa.
I parametri sono:
num : numero della finestra. ___
tipo : operazione da effettuare: ENLARGE per allargare e RESTRICT ____
per restringere.
direction : direzione lungo cui modificare le dimensioni fra le _________
seguenti: UP, DOWN, LEFT, RIGHT, HORIZ, VERT, BOTH (vedi
Fig. 7 e 8).
step : numero di passi di cui modificare (per le direzioni HORIZ, ____
VERT e BOTH il numero di passi viene automaticamente
raddoppiato.
effect : effetto fra i seguenti : ISTANT per ridimensionamento ______
istantaneo e FADE per ridimensionamento graduale. Per le
finestre chiuse l'effetto non ha importanza.
Possibili valori di ritorno sono :
OK : ridimensionamento effettuato.
ILLPAR : parametri illegali.
NOTDEF : finestra non definita.
WINOPN : finestra aperta non corrente.
Nota: Nota ____
Le direzioni UP, LEFT, HORIZ, VERT, BOTH alterano anche la
posizione (xloc e yloc in Fig. 1) e il punto di vista (xpos e y pos
in Fig. 2).
Manuale d'uso PcWindow - pag. 26
Funzione how_many_windows: how_many_windows:
int Pcw_how_many_windows(void); int Pcw_how_many_windows(void);
Restituisce il numero di finestre attualmente aperte. Se nessuna
finestra e' aperta viene restituito NOWIND.
Manuale d'uso PcWindow - pag. 27
Funzione which_window: which_window:
int Pcw_which_window(void); int Pcw_which_window(void);
Restituisce il numero della finestra corrente. Se nessuna finestra
e' aperta restituisce NOWIND.
Manuale d'uso PcWindow - pag. 28
Funzione version: version:
int Pcw_version(void); int Pcw_version(void);
Restituisce il numero della versione del programma. Il numero e'
moltiplicato per 100, pertanto un valore di ritorno di 125 equivale
alla versione 1.25. E' disponibile anche un identificatore pari al
numero della versione: vedere a tal proposito la sezione del
manuale dedicata alle macro.
E' importante che il programma in fase di esecuzione controlli il
valore di versione della libreria in modo da evitare di linkare un
applicativo scritto tenendo conto di una determinata versione con
un versione piu' vecchia. Consiglio pertanto in testa al proprio
programma, di porre appena dopo la chiamata ad init il seguente init
frammento di codice:
if (Pcw_version() < __PCW__) {
/* segnala errore */
exit (1);
}
In tal modo il programma potra' poi essere linkato solo con
versioni maggiori o uguali a quella con cui e' stato compilato il
programma stesso. La macro __PCW__ e' definita in pcw.h.
Manuale d'uso PcWindow - pag. 29
Funzione copyright: copyright:
int Pcw_copyright(row) int Pcw_copyright(row)
unsigned int row; unsigned int row;
Stampa alla linea row un messaggio di copyright indicando il nome ___
del toolkit, il nome dell'autore, la versione e la data dell'ultima
modifica. Ovviamente questa funzione non serve a niente, ma io l'ho
messa lo stesso per comodita' mia.
Viene ritornato sempre il valore OK.
Manuale d'uso PcWindow - pag. 30
Funzione set_speed: set_speed:
int Pcw_set_speed(speed) int Pcw_set_speed(speed)
unsigned int speed; unsigned int speed;
Sceglie la velocita' di esecuzione degli effetti di movimento. Se
questa funzione non viene usata, viene assunto per default la
velocita' FAST. La velocita' di esecuzione e' indipendente
dall'hardware utilizzato, tranne che per la modalita' NOSYNC.
L'unico parametro da passare e':
speed : Velocita' che puo' valere SLOW, FAST, VERYFAST o NOSYNC. _____
Notare che la velocita' VERYFAST ha effetto solo su calcolatori
dotati di microprocessore 80286 e 80386 e questo e' dovuto a
caratteristiche particolari dell'hardware. La velocita' NOSYNC e'
la massima possibile e dipende dal calcolatore su cui sta girando
il programma.
Possibili valori di ritorno sono:
OK : Settaggio effettuato.
ILLPAR : Parametro illegale.
Manuale d'uso PcWindow - pag. 31
Funzione no_flick: no_flick:
void Pcw_no_flick(void) void Pcw_no_flick(void)
Questa funzione serve per eliminare il flickering tipico di alcune
schede video. Qualora si dovesse notare questo tipo di
inconveniente, occorre servirsi di questa funzione chiamandola una
volta per tutte appena dopo aver chiamato la funzione define. define
Attenzione: una volta chiamata questa funzione il funzionamento Attenzione
delle varie funzioni viene rallentato per cui va usata solo quando
effettivamente ce ne e' bisogno, ed inoltre e' irreversibile, per
cui non e' possibile eliminarne gli effetti. Si elencano schede
video (o computer) da me provati che necessitano o meno della
funzione.
Necessitano della funzione:
IBM CGA e compatibili, Olivetti M24.
Non necessitano della funzione:
IBM MDA, IBM EGA e compatibili, Hercules, NCR PC4i, IBM VGA e
compatibili.
La funzione non ritorna alcun valore.
NOTA NOTA ____
La funzione non ha effetto nell'ambiente OS/2 che e' sempre privo
di flicker.
Manuale d'uso PcWindow - pag. 32
Funzione beep: beep:
void Pcw_beep(void) void Pcw_beep(void)
Questa funzione fa emettere un suono di avvertimento
dall'altoparlante del calcolatore. Non e' lo stesso che si
otterrebbe con un printf("\a") in quanto Pcw_beep emette un suono
piu' acuto come frequenza e piu' corto di durata.
NOTA NOTA ____
Questa funzione e' implementata come macro.
Manuale d'uso PcWindow - pag. 33
Funzione tone: tone:
void Pcw_tone(freq, dur) void Pcw_tone(freq, dur)
Questa funzione fa emettere un suono dall'altoparlante del
calcolatore, specificando frequenza e durata.
I parametri da passare sono:
freq: Frequenza espressa in Hertz della nota da generare. ____
dur: Durata espressa in millisecondi. ___
Possibili valori di ritorno sono:
OK : Esecuzione eseguita.
ILLPAR : Parametri illegali.
NOTA NOTA ____
La precisione della durata e' determinata dal tipo di Computer che
si sta utilizzando.
Manuale d'uso PcWindow - pag. 34
Funzione cursor: cursor:
int Pcw_cursor(mode) int Pcw_cursor(mode)
unsigned int mode; unsigned int mode;
Questa funzione permette di visualizzare o meno il cursore
hardware.
Il parametro mode puo' valere ON e OFF, con ovvio significato. _____
Possibili valori di ritorno sono:
OK : Settaggio effettuato.
ILLPAR : Parametro illegale.
Manuale d'uso PcWindow - pag. 35
Funzione cursor_type: cursor_type:
int Pcw_cursor_type(type) int Pcw_cursor_type(type)
unsigned int type; unsigned int type;
Questa funzione permette di scegliere tra due tipi di cursore:
pieno o sottolineato.
Il parametro type puo' valere BLOCK o UNDERLINE, con ovvio ______
significato.
Possibili valori di ritorno sono:
OK : Settaggio effettuato.
ILLPAR : Parametro illegale.
NOTA NOTA ____
Dopo la chiamata a questa funzione, il cursore viene
automaticamente abilitato. Se non e' nelle intenzioni del
programmatore, occorre far seguire a questa funzione una chiamata a
Pcw_cursor(OFF); Pcw_cursor(OFF)
Manuale d'uso PcWindow - pag. 36
Funzione pos: pos:
int Pcw_pos(num) int Pcw_pos(num)
unsigned int num; unsigned int num;
Questa funzione consente di leggere la posizione della finestra
(coordinate dell'angolo in alto a sinistra), anche se la finestra
non e' visualizzata.
L'unico parametro da passare e' il numero della finestra.
Possibili valori di ritorno sono:
ILLPAR : Parametro illegale.
NOTDEF : Finestra non definita.
Un numero : il byte basso rappresenta la coordinata x (0-79) e il
byte alto la coordinata y (0-24).
Manuale d'uso PcWindow - pag. 37
Funzione dim: dim:
int Pcw_dim(num) int Pcw_dim(num)
unsigned int num; unsigned int num;
Questa funzione consente di leggere le dimensioni attuali della
finestra (larghezza e altezza), anche se la finestra non e'
visualizzata.
L'unico parametro da passare e' il numero della finestra.
Possibili valori di ritorno sono:
ILLPAR : Parametro illegale.
NOTDEF : Finestra non definita.
Un numero : il byte basso rappresenta la larghezza (0-79) e il byte
alto l'altezza (0-24).
Manuale d'uso PcWindow - pag. 38
Funzione first_free: first_free:
int Pcw_first_free(void) int Pcw_first_free(void)
Questa funzione ritorna il primo numero di finestra disponibile per
una eventuale definizione. Puo' essere utile nel caso in cui si
debba scrivere una funzione di tipo "alarm" ovvero una funzione che
visualizza un unico messaggio e attende la pressione di un tasto.
In questi casi infatti non conviene usare un numero di finestra
statico ma sceglierlo dinamicamente in modo da poterlo rilasciare
mediante la funzione undef.
Possibili valori di ritorno sono:
NOWIND: Nessun numero disponibile.
Un numero : rappresenta il numero disponibile e sfruttabile.
Manuale d'uso PcWindow - pag. 39
Funzione is_open: is_open:
int Pcw_is_open(num) int Pcw_is_open(num)
unsigned int num; unsigned int num;
Questa funzione permette di sapere se una finestra e' aperta o no.
L'unico parametro da passare e' il numero della finestra.
Possibili valori di ritorno sono:
ILLPAR : Parametro illegale.
NOTDEF : Finestra non definita.
TRUE : La finestra e' aperta.
FALSE : La finestra e' chiusa.
Manuale d'uso PcWindow - pag. 40
Funzione write_25: write_25:
int Pcw_write_25(string, attr) int Pcw_write_25(string, attr)
char *string; char *string;
ATTR attr; ATTR attr;
Con questa funzione e' possibile scrivere una stringa in 25esima
riga.
I parametri da passare sono: la stringa e l'attributo. Ovviamente
la stringa non puo' essere piu' lunga di 80 caratteri. Nel caso in
cui sia piu' corta, viene riempita a destra di blank con lo stesso
attributo attr. Per cancellare la stringa in seguito basta
richiamare di nuovo la funzione passando come parametri una stringa
nulla e l'attributo dello sfondo, oppure chiamare la funzione
clear_25. clear_25
Possibili valori di ritorno sono:
OK : Stringa scritta correttamente.
ILLPAR : Parametro illegale (stringa troppo lunga).
NOTA NOTA
Questa funzione scrive direttamente nella 25esima linea che
pertanto deve essere libera. Qualunque cosa e' scritta su questa
linea viene irrimediabilmente cancellata.
Manuale d'uso PcWindow - pag. 41
Funzione clear_25: clear_25:
void Pcw_clear_25(void) void Pcw_clear_25(void)
Questa funzione cancella la 25esima riga dello schermo con
l'attributo esistente nel primo carattere della stessa riga prima
dell'invocazione della funzione Pcw_write_25, oppure con Pcw_write_25
l'attributo usato nell'ultima invocazione della funzione
Pcw_clear_screen. Pcw_clear_screen
La funzione non accetta parametri e non restituisce alcun valore.
Manuale d'uso PcWindow - pag. 42
Funzione cpu_type: cpu_type:
int Pcw_cpu_type(void) int Pcw_cpu_type(void)
Questa funzione consente di determinare il tipo di processore
montato nel calcolatore su cui sta girando il programma.
Possibili valori di ritorno sono:
CPU_UNKNOWN : La funzione non e' in grado di determinare il tipo
di CPU.
CPU_8088, CPU_8086, CPU_80188, CPU_80186, CPU_V20, CPU_V30,
CPU_80286, CPU_80386 : con ovvio significato.
NOTA NOTA
E' probabile che in taluni ambienti particolari la funzione non sia
in grado di determinare correttamente il tipo di CPU. In tal caso
segnalatemi il fatto con le caratteristiche precise della macchina
in modo da modificare la funzione.
Manuale d'uso PcWindow - pag. 43
Funzione video_card: video_card:
int Pcw_video_card(void) int Pcw_video_card(void)
Questa funzione consente di determinare la scheda video montata nel
calcolatore su cui gira il programma.
Possibili valori di ritorno sono:
VIDEO_UNKNOWN : La funzione non e' in grado di determinare il
tipo di scheda video.
VIDEO_MONO, VIDEO_HERC, VIDEO_CGA, VIDEO_EGA, VIDEO_MCGA,
VIDEO_VGA: con ovvio significato.
NOTA NOTA
E' probabile che in taluni ambienti particolari la funzione non sia
in grado di determinare correttamente il tipo di scheda video
montata. In tal caso segnalatemi il fatto con le caratteristiche
precise della macchina in modo da modificare la funzione.
Manuale d'uso PcWindow - pag. 44
Funzione is_color: is_color:
BOOLEAN Pcw_is_color(void) BOOLEAN Pcw_is_color(void)
Questa funzione consente di stabilire se la scheda video del
calcolatore su cui gira il programma e' a colori o no.
Possibili valori di ritorno sono:
TRUE : Scheda video a colori.
FALSE : Scheda video monocromatica.
Manuale d'uso PcWindow - pag. 45
Funzione make_curremt: make_curremt:
int Pcw_make_current(num) int Pcw_make_current(num)
unsigned int num; unsigned int num;
Questa funzione consente di rendere corrente una finestra
sovrapposta da altre. Attualmente il tutto viene effettuato in un
modo alquanto lento e cioe' chiudendo le finestre sovrapposte e
riaprendole in ordine inverso, ma in futuro la funzione sara'
ottimizzata. L'importante per il momento e' che questa esiste e
funziona.
L'unico parametro da passare e' num che deve essere il numero della ___
finestra che si vuole rendere corrente. Ovviamente la finestra deve
essere aperta.
Possibili valori di ritorno sono:
OK : Operazione effettuata correttamente.
ILLPAR : Parametro illegale.
NOTDEF : Finestra non definita.
NOWIND : Finestra non aperta.
Manuale d'uso PcWindow - pag. 46
Funzione set_option: set_option:
int Pcw_set_option(cmd) int Pcw_set_option(cmd)
char *cmd; char *cmd;
Questa funzione permette di modificare una serie di parametri
globali all'ambiente Pcw.
Occorre passare una stringa che rispecchia la seguente sintassi:
"PARAMETER=VALUE{;PARAMETER=VALUE}", dove PARAMETER e' il nome
simbolico del parametro globale e VALUE e il valore da assegnare.
Possono essere fatte piu' assegnazioni nella stessa stringa
separandole con il carattere ';'. Attenzione a non inserire spazi
tra i parametri o tra i valori.
I parametri attualmente accettati sono:
BEEP_ON_ERROR : Puo' valere YES oppure NO a seconda se si vuole
abilitare o meno la segnalazione di errore durante
l'input.
PAD_FIELD: Se messo a YES, i campi in uscita dalla funzione
Pcw_input sono riempiti di blank (nel caso in cui la
lunghezza sia minore della dimensione massima). I blank
sono inseriti a sinistra per i campi numerici e a destra
per i campi alfanumerici.
LEFT_TITLE : Ridefinizione del carattere a sinistra del titolo
delle finestre. Un numero intero che indica il codice ASC
II del carattere.
RIGHT_TITLE : Analogo al caso precedente, ma a destra.
DECIMAL_SEP : Il codice Ascii del carattere di separazione tra i
numeri decimali.
ENABLE_CHAR : Il codice Ascii del carattere identificativo degli
elementi abilitati nei submenu.
Possibili valori di ritorno sono:
OK : Operazione effettuata correttamente.
ILLPAR : Parametro illegale.
Esempi d'uso della funzione:
Pcw_set_option("BEEP_ON_ERROR=NO");
Pcw_set_option("LEFT_TITLE=91;RIGHT_TITLE=93;BEEP_ON_ERROR=YES
;DECIMAL_SEP=44");
Manuale d'uso PcWindow - pag. 47
Funzioni per la gestione dei menu' pull-down. Funzioni per la gestione dei menu' pull-down.
Quando l'utente deve effettuare una scelta tra varie possibili
organizzate secondo una struttura ad albero e' molto comodo
organizzare il tutto secondo lo stile pull-down, ovvero le scelte
principali sono visualizzate in una riga orizzontale in alto sullo
schermo e l'utente puo' selezionarle mediante pressione
contemporanea del tasto Alt e della prima lettera del nome della
scelta che si vuole effettuare. A questo punto viene visualizzata
una box verticale, in corrispondenza della scelta effettuata,
contenente le opzioni di secondo livello, delle quali la prima e'
evidenziata. L'utente puo' allora effettuare la sua scelta battendo
l'iniziale del nome (senza il tasto ALT) oppure muoversi nelle
quattro direzioni mediante i tasti cursore. In ogni caso in
appendice e' riportata un'apposita sezione dedicata all'utente dove
vengono descritti i comandi. Le scelte selezionabili sono
identificate dalla presenza alla loro sinistra di un carattere
particolare (carattere di abilitazione: vedi Pcw_set_option). Pcw_set_option
Parametri caratteristici di un menu pull-down sono:
- Il numero dei sub-menu, ovvero il numero di scelte di primo
livello che compaiono sulla linea orizzontale.
- Il numero di elementi, ovvero il numero di scelte di secondo
livello o definitive che compaiono in seguito ad una
selezione di un sub-menu.
I nomi di queste funzioni seguono la convenzione di essere
preceduti dal prefisso Pcm_.
Manuale d'uso PcWindow - pag. 48
Funzione init: init:
int Pcm_init(maxmen) int Pcm_init(maxmen)
unsigned int maxmen; unsigned int maxmen;
Questa e' la prima funzione che occorre chiamare per inizializzare
il sottoprogramma per la gestione dei menu' pull-down. E'
necessario chiamare questa funzione DOPO aver chiamato Pcw_init. Pcw_init
L'unico parametro da passare e':
maxmen : il numero di menu' da definire (nella maggior parte delle ______
applicazioni e' 1).
Possibili valori di ritorno sono:
OK : inizializzazione effettuata.
ALRDEF : Il gestore e' gia' stato inizializzato precedentemente.
OUTMEM : Non esiste memoria a sufficienza.
NOTDEF : non e' stata chiamata la funzione Pcw_init()
Manuale d'uso PcWindow - pag. 49
Funzione define: define:
int Pcm_define(num, len, subnum, itnum, wsize, menu_att, int Pcm_define(num, len, subnum, itnum, wsize, menu_att,
sel_sub_att, sub_att, sel_item_att, bord_att, bord_sub_att, descr, sel_sub_att, sub_att, sel_item_att, bord_att, bord_sub_att, descr,
menu_type, menu_line_type, sub_line_type, is_help) menu_type, menu_line_type, sub_line_type, is_help)
unsigned int num, len, subnum, itnum, wsize; unsigned int num, len, subnum, itnum, wsize;
ATTR menu_att, sel_sub_att, sub_att, sel_item_att, bord_att, ATTR menu_att, sel_sub_att, sub_att, sel_item_att, bord_att,
bord_sub_att; bord_sub_att;
CHAR **descr; CHAR **descr;
unsigned int menu_type, menu_line_type, sub_line_type; unsigned int menu_type, menu_line_type, sub_line_type;
BOOLEAN is_help; BOOLEAN is_help;
Questa funzione consente di definire un menu'.
Il significato dei parametri e' il seguente:
num : Numero del menu' da definire (si parte da 0). ___
len : Lunghezza in orizzontale del menu' (in colonne senza ___
comprendere l'eventuale bordo).
subnum : Numero di sub-menu' (scelte possibili in orizzontale). ______
itnum : Numero max di scelte verticali. _____
wsize : Ampiezza dell finestra per gli elementi di un sub-menu'. _____
Questa ampiezza puo' essere minore o uguale a itnum. Nel
caso in cui sia minore, si ha che la finestra che ospita
gli elementi e' piu' piccola e l'utente puo' scorrere le
varie scelte mediante i tasti cursore (basso e alto).
menu_att : Attributo del menu. ________
sel_sub_att: Attributo sub-menu' selezionato. ___________
sub_att: Attributo normale sub-menu'. _______
sel_item_att: Attributo elemento selezionato. ____________
bord_att : Attributo del bordo. ________
bord_sub_att : Attributo del bordo del pull-down. ____________
descr: puntatore all'array monodimensionale di stringhe checontiene _____
le voci del menu. Questo array deve avere dimensioni pari
a subnum * intnum. L'ordine di memorizzazione e' da
sinistra a destra e dall'alto in basso, cioe' e' del tipo:
"Voce_1", "sub_10", "sub_11", "sub_12", ______ ______ ______ ______
"Voce_2", "sub_20", "sub_21", "sub_22",..ecc. ______ ______ ______ ______
Manuale d'uso PcWindow - pag. 50
Tutte le voci inutilizzate devono essere poste pari a "\0"
e non e' possibile avere un submenu vuoto, cioe' con tutti
gli elementi nulli. Il programma considera come tasti di
attivazione per i sub-menu' e per gli elementi la prima
lettera maiuscola nel nome quando esiste, altrimenti
l'iniziale del nome.
Attenzione: per problemi con l'MS-DOS non usare come tasto Attenzione
di attivazione la lettera Q o la lettera R. Altra
avvertenza: l'array delle descrizioni deve essere allocato
staticamente in quanto la funzione memorizza solo il
puntatore ad esso.
menu_type : tipo di menu: valori ammessi SIMPLE, ONELINE, BORDER. _________
Dove con SIMPLE si intende un menu' in cui viene
visualizzata solo la riga orizzontale contenente i sub-
menu' senza bordi, ONELINE invece mette una linea
orizzontale di separazione sotto alla riga dei sub-menu,
BORDER racchiude tutta la riga dei sub-menu' con una
cornice.
menu_line_type : Tipo linea di delimitazione dei menu: LT_SINGLE o ______________
LT_DOUBLE.
sub_line_type : Tipo linea di delimitazione menu' pull-down : _____________
LT_SINGLE o LT_DOUBLE.
is_help : flag per la presenza o meno di help. L'help aggiunge come _______
primo carattere a sinistra sulla riga dei sub-menu' il car
attere di help.
Valori possibili di ritorno sono:
OK : Definizione eseguita correttamente.
NOTDEF : Inizializzazione non effettuata.
ALRDEF : Definizione gia' effettuata precedentemente.
ILLPAR : Parametri illegali.
Manuale d'uso PcWindow - pag. 51
Funzione open: e open:
int Pcm_open(num) int Pcm_open(num)
unsigned int num; unsigned int num;
Con questa funzione si ottiene la visualizzazione del menu' sul
video.
Parametri:
num: e' il numero del menu' da visualizzare. ___
I possibili valori di ritorno sono:
OK : Operazione effettuata correttamente.
ILLPAR : Numero di menu' illegale.
NOTDEF : Menu' non definito.
Manuale d'uso PcWindow - pag. 52
Funzione enter_menu: enter_menu:
int Pcm_enter_menu(key,exit_mode) int Pcm_enter_menu(key,exit_mode)
char key; char key;
unsigned int exit_mode; unsigned int exit_mode;
Con questa funzione si passa il controllo del programma al menu',
che si occupa di controllare la tastiera e aprire o chiudere i
relativi sub-menu'. Aprendo un sub-menu' ne viene automaticamente
selezionata la prima voce.
Parametri:
key : carattere di ingresso (ALT+char) o NOCHAR. Specificando ___
NOCHAR non si ha alcuna apertura di sub-menu' e si resta
in attesa che l'utente prema un tasto. Per specificare un
carattere in ingresso questo deve essere inviato come
codice di scansione della tastiera (ALT + carattere).
exit_mode : modo di uscita; valori ammessi sono NORMAL, FKEYS e _________
ALL. Con NORMAL, l'utente puo' uscire dal menu' solo
selezionando un'opportuna voce. Con FKEYS, l'utente puo'
uscire dal menu' anche con uno dei dieci tasti funzione.
Infine con l'opzione ALL e' possibile uscire anche con le
combinazioni Shift + tasti funzione, Ctrl + Tasti
funzione, Alt + Tasti funzione. In ogni caso l'utente puo'
sempre abortire le scelte premendo il tasto ESC.
Come valore di ritorno la funzione fornisce un codice numerico che
indica il tipo di uscita dal menu' con i seguenti significati:
Se il valore di ritorno e' positivo, questo rappresenta la scelta
effettuata dall'utente che e' codificata come segue: Il byte alto
rappresenta il numero di sub-menu' [1..n] e il byte basso il numero
di elemento all'interno del sub-menu' [0..m].
Un valore di ritorno pari a 0x0000 indica che l'utente ha abortito
la fase con la pressione del tasto ESC.
Un valore negativo rappresenta l'uscita con uno dei tasti funzione
per cui dopo averlo cambiato di segno, esso rappresenta la somma di
una costante predefinita e di un numero da 1 a 10. Le costanti
predefinite sono:
IN_FKEY : Tasti funzione da F1 a F10.
IN_SHFKEY : Tasti funzione da Shift + F1 a Shift + F10.
IN_CTRLFKEY : Tasti funzione da Ctrl + F1 a Ctrl + F10.
IN_ALTFKEY : Tasti funzione da Alt + F1 a Alt + F10.
Ad esempio, se la funzione ritorna il valore -(IN_SHFKEY+4), vuol
dire che dal menu l'utente e' uscito con Shift F4.
Manuale d'uso PcWindow - pag. 53
Funzione close: close:
int Pcm_close(void) int Pcm_close(void)
Chiude il menu' precedentemente visualizzato, ripristinando lo
stato del video precedente all'apertura del menu' e permettendo
cosi' l'apertura di altri menu'.
Valori ritornati:
OK : chiusura effettuata.
NOTDEF : non c'e' un menu' correntemente aperto.
Manuale d'uso PcWindow - pag. 54
Funzione ext_desc: ext_desc:
int Pcm_ext_desc(num, attr, desc) int Pcm_ext_desc(num, attr, desc)
unsigned int num; unsigned int num;
ATTR attr; ATTR attr;
char **desc; char **desc;
Questa funzione consente di abbinare ad un menu pull-down una riga
di descrizioni. In questo modo l'utente che entra nel menu quando
va a selezionare una voce vede anche in 25esima riga una
indicazione della funzione piu' dettagliata di quanto non possa
essere il solo nome della funzione. Ovviamente se questa funzione
non viene invocata, i menu saranno visualizzati normalmente.
Parametri:
num:Il numero del menu a cui agganciare le descrizioni aggiuntive. ___
attr: L'attributo con cui visualizzare le informazioni aggiuntive. ____
desc: Un array di stringhe in un formato simile a quello usato per ____
la funzione Pcm_define, con la differenza che non vanno
inserite le descrizioni per i sub-menu, ma solo per gli
elementi.
Possibili valori di ritorno sono:
OK : Abbinamento effettuato.
ILLPAR : Parametro illegale.
NOTDEF : Menu non definito.
NOTA NOTA ____
La funzione memorizza solo il puntatore alle stringhe e quindi
queste devono essere allocate staticamente. La lunghezza massima
delle stringhe e' ovviamente 80 caratteri.
Manuale d'uso PcWindow - pag. 55
Funzione enable & disable: e enable & disable:
int Pcm_enable(item) int Pcm_enable(item)
unsigned int item; unsigned int item;
int Pcm_disable(item) int Pcm_disable(item)
unsigned int item; unsigned int item;
Mediante queste due funzioni e' possibile abilitare e disabilitare
degli elementi all'interno del menu corrente. All'atto
dell'apertura del menu, tutti gli elementi sono automaticamente
abilitati. Un elemento abilitato e' caratterizzato dalla presenza
alla sua sinistra di un carattere particolare, di solito il blocco
tondo, ma ridefinibile mediante la funzione Pcw_set_option e il Pcw_set_option
parametro ENABLE_CHAR. Gli elementi non abilitati, se selezionati
dall'utente non fanno uscire dal menu, ma portano alla segnalazione
dell'errore (sempre che sia abilitata la funzione BEEP_ON_ERROR).
L'unico parametro da passare e':
item: e' un numero composto dal numero del submenu (a partire da 1) ____
nel byte alto e dal numero dell'elemento all'interno del
submenu (a partire da 0) nel byte basso.
I possibili valori di ritorno sono:
OK : Operazione effettuata correttamente.
ILLPAR : Parametri illegali.
NOTDEF : Menu' non definito.
Manuale d'uso PcWindow - pag. 56
Funzioni per la gestione dell'input controllato. Funzioni per la gestione dell'input controllato.
La gestione dell'input controllato rientra nella categoria dei
problemi legati alla necessita' di rendere un programma sicuro nei
confronti dell'utente come consistenza dei dati, ovvero fare in
modo che l'utente possa inserire negli appositi campi di input solo
ed esclusivamente i dati del tipo richiesto. Un campo di input
pertanto e' caratterizzato fondamentalmente da una lunghezza
espressa in caratteri e da un tipo dei dati da esso ospitabili. In
appendice e' riportata un'apposita sezione con le modalita' di
editing per l'input.
Manuale d'uso PcWindow - pag. 57
Funzione input: input:
int Pcw_input(type, x, y, l, def, val) int Pcw_input(type, x, y, l, def, val)
unsigned int type, x, y, l; unsigned int type, x, y, l;
char *def, *val; char *def, *val;
La funzione consente di effettuare l'input controllato all'interno
della finestra corrente (e' anche possibile solo la visualizzazione
di un valore: vedi set_input_flag e set_input_mode). set_input_flag set_input_mode
Il funzionamento dell'input dal punto di vista dell'utente e'
descritto in appendice.
I parametri da passare sono:
type : Tipo del dato da leggere fra i seguenti: ____
IT_ALFANUM: sono accettati tutti i caratteri ASCII.
IT_ALFAB: sono accettate solo le lettere e lo spazio.
IT_ALFABUPP: come IT_ALFAB, ma con conversione in maiuscolo.
IT_ALFANUPP: come IT_ALFANUM, ma con conversione in maiuscolo.
IT_INTEGER: solo le cifre da 0 a 9.
IT_CODE: Come IT_INTEGER, ma con la differenza che il
campo e' riempito a sinistra con caratteri '0'.
IT_FIXED?: (?=1,2,3) numero in virgola fissa con 1,2 o 3
decimali.
IT_DATE: Una data con controllo di validita'.
IT_LOGICAL: Un unico carattere che puo' essere S o N.
IT_HOUR: Ora nel formato hh:mm, con controllo di validita'.
IT_HEX: Un valore esadecimale.
IT_REAL: Un numero in virgola mobile opzionalmente
preceduto dal segno .
x, y : Coordinate all'interno della finestra del primo carattere ____
del campo.
l : Lunghezza del campo. Per alcuni tipi questo parametro non ha _
importanza in quanto viene assunto il valore di default:
IT_DATE 8 caratteri
IT_LOGICAL 1 carattere
IT_HOUR 5 caratteri.
def : Stringa di caratteri da passare come default per consentire ___
la modifica da parte dell'operatore. Eventuali blank in
eccesso sono automaticamente rimossi. Per il campo IT_DATE
non e' possibile passare stringhe incomplete del tipo " /
"; la funzione accetta invece stringa nulla, stringa
contenente un numero variabile di blank da 1 a 8 e la
Manuale d'uso PcWindow - pag. 58
stringa " / / ". Discorso analogo e' quello che
riguarda il tipo IT_HOUR.
val : Stringa in uscita dalla funzione contenente il dato letto.Que ___
sta stringa deve essere allocata a cura del programma
chiamante e deve avere una lunghezza minima pari al valore
del parametro l aumentato di 1 e questo per permettere la
memorizzazione del carattere \0 come terminatore.
Per i campi numerici, se l'utente immette degli zeri a
sinistra del numero questi sono automaticamente eliminati.
Un eventuale valore nullo viene covertito a "0"; ad
esempio "000", "0.00", ".00", "0." diventano tutti "0".
Invece "000.05", ".05" diventano "0.05".
Se viene usata l'opzione PAD_FIELD (vedi funzione
Pcw_set_option), la stringa in uscita viene sempre resa di Pcw_set_option
lunghezza pari ad l mediante inserimento di blank (a _
sinistra per i campi IT_INTEGER, IT_REAL, IT_HEX,
IT_FIXED? o a destra per i campi IT_ALFANUM, IT_ALFABUPP,
IT_ALFANUPP).
Possibili valori di ritorno sono:
OK : L'input e' avvenuto ed e' stato terminato con il RETURN.
ILLPAR : Parametri illegali.
NOWIND : Nessuna finestra aperta.
IN_CRU : Input terminato con il tasto Cursor Up.
IN_CRD : Input terminato con il tasto Cursor Down.
IN_CPU : Input terminato con il tasto Page Up.
IN_CPD : Input terminato con il tasto Page Down.
IN_ESC : Input terminato con il tasto ESC.
IN_CCPU : Input terminato con il tasto Control+Page Up.
IN_CCPD : Input terminato con il tasto Control+Page Down.
Per l'uscita mediante tasti funzione, il codice e' formato dalla
somma di una costante predefinita e un numero da 1 a 10.
Le costanti sono:
IN_FKEY : Input terminato con un tasto funzione da F1 a F10.
IN_SHFKEY : Input terminato con un tasto funz. da Shift+F1 a
Shift+F10.
IN_CTRLFKEY : Input term. con un tasto funz. da Ctrl+F1 a
Ctrl+F10.
IN_ALTFKEY : Input term. con un tasto funz. da Alt+F1 a
Alt+F10.
NOTA NOTA ____
Nelle versioni precedenti di PcWindow, le costanti che definivano i
possibili tipi di input erano diverse dalle attuali. Occorre
Manuale d'uso PcWindow - pag. 59
pertanto provvedere a modificare eventuali programmi scritti prima
dell'attuale versione di PcWindow. E' comunque possibile continuare
ad usare la vecchia nomenclatura definendo la macro OLD_PCW o
nell'invocazione al compilatore o mettendo in testa ai programmi la
direttiva #define OLD_PCW appena prima di #include <pcw.h> _______________ ________________
Manuale d'uso PcWindow - pag. 60
Funzione set_input_mode: set_input_mode:
int Pcw_set_input_mode(fchar, inpatt, visatt, endmode) int Pcw_set_input_mode(fchar, inpatt, visatt, endmode)
char fchar; char fchar;
ATTR inpatt, visatt; ATTR inpatt, visatt;
unsigned int endmode; unsigned int endmode;
Questa funzione consente di impostare una serie di parametri che
influenzano il comportamento della funzione input.
I parametri da passare sono i seguenti:
fchar : Carattere da usare per riempire il campo nelle posizioni in _____
cui non vi sono caratteri durante la fase di input. Si
puo' passare un qualunque carattere stampabile o si puo'
usare uno dei caratteri predefiniti che sono:
BLANK spazio vuoto
POINT punto
UNDERLINE sottolineatura
STAR asterisco
DIAMOND diamantino
BLOCK blocco (punto quadrato).
inpatt : Attributo da usarsi durante l'input. ______
visatt : Attributo da usarsi dopo l'input. ______
endmode : Modalita' con cui deve terminare l'input fra le seguenti: _______
NORMAL : l'input puo' terminare solo con il tasto RETURN.
FKEYS : l'input puo' terminare con il tasto RETURN o con
i tasti funzione (da soli, con Shift, con Alt e con
Ctrl).
CURS : l'input puo' terminare con il tasto RETURN o con i
tasti: Crsr Up, Crsr Down, PgUp, PgDn, Ctrl+PgUp,
Ctrl+PgDn, Esc.
ALL : Combina FKEYS e CURS.
Se la funzione non viene chiamata, vengono assunti i seguenti
default: fchar=BLANK, inpatt=attrib(WHITE,NORMAL,BLACK,FIX),
visatt=attrib(BLACK,NORMAL,WHITE,FIX), endmode=NORMAL.
Possibili valori di ritorno sono:
OK : settaggio effettuato.
ILLPAR : Parametri illegali.
Manuale d'uso PcWindow - pag. 61
Funzione set_input_flag: set_input_flag:
int Pcw_set_input_flag(mode) int Pcw_set_input_flag(mode)
unsigned int mode; unsigned int mode;
Questa funzione serve per stabilire se la funzione input deve
effettuare l'input vero e proprio o solamente visualizzare il dato
di default. L'utilita' di questa modalita' sta nel fatto che in una
maschera di input conviene prima far comparire tutti i campi e poi
effettuare l'input.
L'unico parametro da passare e':
mode : INP per input e VIS per visualizzazione. ____
Se la funzione non viene invocata, viene assunto per default il
valore INP.
Possibili valori di ritorno sono:
OK : Settaggio effettuato.
ILLPAR : Parametro illegale.
Manuale d'uso PcWindow - pag. 62
Funzione get_date: get_date:
char *Pcw_get_date(string) char *Pcw_get_date(string)
char *string; char *string;
Questa funzione legge la data attuale dal DOS e la ritorna nella
stringa string nel formato GG/MM/AA. ______
L'unico parametro da passare e' la stringa string che deve essere ______
capiente almeno 9 caratteri (8 + il '\0').
La funzione ritorna un puntatore a string. ______
Manuale d'uso PcWindow - pag. 63
Funzione get_time: get_time:
char *Pcw_get_time(string) char *Pcw_get_time(string)
char *string; char *string;
Questa funzione legge l'ora attuale dal DOS e la ritorna nella
stringa string nel formato HH:MM. ______
L'unico parametro da passare e' la stringa string che deve essere ______
capiente almeno 6 caratteri (5 + il '\0').
La funzione ritorna un puntatore a string. ______
Manuale d'uso PcWindow - pag. 64
Funzione select: select:
int Pcw_select(x, y, size, def, count, desc, line_type, bord_att, int Pcw_select(x, y, size, def, count, desc, line_type, bord_att,
wind_att, sel_att, effect) wind_att, sel_att, effect)
unsigned int x; unsigned int x;
unsigned int y; unsigned int y;
unsigned int size; unsigned int size;
unsigned int def; unsigned int def;
unsigned int count; unsigned int count;
char **desc; char **desc;
unsigned int line_type; unsigned int line_type;
ATTR bord_att; ATTR bord_att;
ATTR wind_att; ATTR wind_att;
ATTR sel_att; ATTR sel_att;
unsigned int effect; unsigned int effect;
Questa funzione consente di selezionare un elemento tra una lista.
In effetti viene aperta una piccola finestra in cui sono elencati
verticalmente i vari elementi selezionabili e da qui con lo stesso
procedimento adottato per la selezione di un elemento in un sub-
menu e' possibile selezionare una delle scelte possibili. Premendo
ESC, viene annullata la selezione e la funzione ritorna lo stesso
valore passato come default.
I parametri da passare sono:
x, y : Coordinate dell'angolo in alto a sinistra della finestra da ____
aprire.
size : Ampiezza in verticale della finestra. ____
def : Selezione iniziale. ___
count : Numero di elementi nella lista. Puo' essere maggiore di _____
size con conseguente scrolling degli elementi nella
finestra.
desc : Array di stringhe contenenti le descrizioni. ____
line_type: Tipo di linea (LT_SINGLE o LT_DOUBLE o NO_BORDER) del _________
bordo.
bord_att : Attributo del bordo. ________
wind_att : Attributo della finestra. ________
sel_att : Attributo dell'elemento selezionato. _______
effect : Effetto per l'apertura e la chiusura della finestra ______
(ISTANT, FADELEFT, FADERIGHT, FADEUP, FADEDOWN, FADEHORIZ,
FADEVERT).
Manuale d'uso PcWindow - pag. 65
Al posto di uno o entrambi i parametri x e y e' possibile _ _
mettere uno dei seguenti valori predefiniti:
ALIGN_CENTER : La finestra viene aperta al centro dello
schermo (rispetto a x o rispetto a y). L'allineamento _ _
si riferisce all'intera finestra e non alla sola area
visibile.
ALIGN_CENTER_VIEW : Come il precedente, ma riferito alla
sola area visibile.
ALIGN_BEGIN : La finestra viene aperta sul lato sinistro
dello schermo (o in alto se lungo y). L'allineamento _
e' riferito rispetto all'intera finestra.
ALIGN_BEGIN_VIEW : Come il precedente, ma relativo
all'area visibile.
ALIGN_END : Come ALIGN_BEGIN, ma per il lato destro o
inferiore.
ALIGN_END_VIEW : Come il precedente, ma relativo all'area
visibile.
Possibili valori di ritorno:
NOWIND : Non c'e' nessun numero di finestra disponibile.
ILLPAR : Parametri illegali.
Numero da 0 a count - 1 : Indica la scelta effettuata.
NOTA NOTA ____
Questa funzione necessita di un numero di finestra disponibile,
infatti si appropria di un numero, definisce una finestra, la apre
e dopo la selezione la richiude e libera il numero. Pertanto
occorre tenere presente questo fatto quando si chiama all'inizio la
funzione init.
Manuale d'uso PcWindow - pag. 66
Funzione ext_sel: ext_sel:
int Pcw_ext_sel(x, y, xsize, ysize, line_type, bord_att, wind_att, int Pcw_ext_sel(x, y, xsize, ysize, line_type, bord_att, wind_att,
sel_att, effect, firstline, topfun, botfun) sel_att, effect, firstline, topfun, botfun)
unsigned int x; unsigned int x;
unsigned int y; unsigned int y;
unsigned int xsize; unsigned int xsize;
unsigned int ysize; unsigned int ysize;
unsigned int line_type; unsigned int line_type;
ATTR bord_att; ATTR bord_att;
ATTR wind_att; ATTR wind_att;
ATTR sel_att; ATTR sel_att;
unsigned int effect; unsigned int effect;
char *firstline; char *firstline;
BOOLEAN (* topfun)(char *); BOOLEAN (* topfun)(char *);
BOOLEAN (* botfun)(char *); BOOLEAN (* botfun)(char *);
Questa funzione e' molto simile alla precedente con la differenza
che, mentre la precedente permette la selezione di un elemento in
una lista la cui lunghezza e' nota, questa invece non ha bisogno di
conoscerla. Una tipica applicazione di questa funzione e' la
ricerca di un elemento all'interno di un archivio: innanzitutto
viene effettuata una ricerca dei primi caratteri della chiave
dell'elemento, e poi viene invocata la funzione Pcw_ext_sel Pcw_ext_sel
passando al posto di first_line il nome della chiave trovata e al __________
posto di topfun e botfun i puntatori a due funzioni che cercano ______ ________
rispettivamente il record precedente e il record successivo secondo
la chiave nell'archivio. In tal modo l'utente puo' scorrere
l'archivio avanti e indietro fino a trovare il record cercato. Dal
punto di vista del funzionamento, la funzione invoca botfun per ______
cercare l'elemento successivo e la funzione topfun per cercare il ______
precedente. Quando viene premuto il RETURN si esce dalla funzione e
ci si trova automaticamente posizionati sull'elemento scelto. Se
invece si preme ESC, la funzione si riposiziona sull'elemento
iniziale all'atto dell'invocazione.
I parametri da passare sono:
x, y : Coordinate dell'angolo in alto a sinistra della finestra da ____
aprire.
xsize : Ampiezza in orizzontale della finestra. _____
ysize : Ampiezza in verticale della finestra. Se nella ricerca non _____
viene trovato un numero sufficiente di elementi la
finestra viene ristretta.
line_type: Tipo di linea (LT_SINGLE o LT_DOUBLE) del bordo. _________
bord_att : Attributo del bordo. ________
Manuale d'uso PcWindow - pag. 67
wind_att : Attributo della finestra. ________
sel_att : Attributo dell'elemento selezionato. _______
effect : Effetto per l'apertura e la chiusura della finestra ______
(ISTANT, FADELEFT, FADERIGHT, FADEUP, FADEDOWN, FADEHORIZ,
FADEVERT).
first_line : Descrizione della prima linea. __________
topfun e botfun : puntatori alle due funzioni di ricerca per ______ ______
l'elemento precedente e per il successivo. Le funzioni
devono ritornare un valore di tipo BOOLEAN indicante con
TRUE che l'elemento e' stato trovato e con FALSE che
l'elemento non e' stato trovato (es.: fine file o inizio
file). Inoltre Pcw_ext_sel passa a botfun e a topfun un Pcw_ext_sel
puntatore a carattere in cui queste due devono copiare la
descrizione relativa all'elemento trovato. Pcw_ext_sel Pcw_ext_sel
alloca dinamicamente spazio per le stringhe di lunghezza
pari a xsize ed e' compito delle due funzioni non scrivere _____
piu' di xsize caratteri. _____
Al posto di uno o entrambi i parametri x e y e' _ _
possibilemettere uno dei seguenti valori predefiniti:
ALIGN_CENTER : La finestra viene aperta al centro
dello schermo (rispetto a x o rispetto a y). _ _
L'allineamento si riferisce all'intera
finestra e non alla sola area visibile.
ALIGN_CENTER_VIEW : Come il precedente, ma riferito
alla sola area visibile.
ALIGN_BEGIN : La finestra viene aperta sul lato
sinistro dello schermo (o in alto se lungo y). _
L'allineamento e' riferito rispetto all'intera
finestra.
ALIGN_BEGIN_VIEW : Come il precedente, ma relativo
all'area visibile.
ALIGN_END : Come ALIGN_BEGIN, ma per il lato destro o
inferiore.
ALIGN_END_VIEW : Come il precedente, ma relativo
all'area visibile.
Possibili valori di ritorno:
IN_RET : Selezione avvenuta con pressione del tasto RETURN.
IN_ESC : Selezione abortita con pressione del tasto ESCAPE.
NOWIND : Non c'e' nessun numero di finestra disponibile.
ILLPAR : Parametri illegali.
OUTMEM : Non c'e' memoria a sufficienza per allocare le stringhe.
Manuale d'uso PcWindow - pag. 68
NOTA NOTA ____
Questa funzione necessita di un numero di finestra disponibile,
infatti si appropria di un numero, definisce una finestra, la apre
e dopo la selezione la richiude e libera il numero. Pertanto
occorre tenere presente questo fatto quando si chiama all'inizio la
funzione init.
Manuale d'uso PcWindow - pag. 69
Funzione toggle: toggle:
int Pcw_toggle(x, y, val, true_char, true_attr, false_char, int Pcw_toggle(x, y, val, true_char, true_attr, false_char,
false_attr) false_attr)
unsigned int x; unsigned int x;
unsigned int y; unsigned int y;
BOOLEAN *val; BOOLEAN *val;
char true_char; char true_char;
ATTR true_attr; ATTR true_attr;
char false_char; char false_char;
ATTR false_attr; ATTR false_attr;
Questa funzione consente di effettuare una scelta fra i due valori
logici TRUE e FALSE. L'utente puo' selezionare tra le due opzioni
con il tasto SPACE e accettare la scelta con uno dei seguenti
tasti: RETURN, TAB, SHIFT+TAB.
I parametri da passare sono:
x, y: Coordinate all'interno della finestra corrente. ____
val: Puntatore alla variabile che contiene il valore di default ___
iniziale e che poi serve da destinazione al valore finale.
true_char: Il carattere da visualizzare per indicare la condizione _________
TRUE.
true_attr: Attributo con cui visualizzare il carattere precedente. _________
false_char: Il carattere da visualizzare per indicare la condizione __________
FALSE.
false_attr: Attributo con cui visualizzare il carattere precedente. __________
Possibili valori di ritorno:
IN_RET : Input terminato con il tasto RETURN.
IN_TAB : Input terminato con il tasto TAB.
IN_SHTAB : Input terminato con il tasto SHIFT+TAB.
ILLPAR : Parametri illegali.
NOWIND : Nessuna finestra aperta.
Manuale d'uso PcWindow - pag. 70
Tipi predefiniti. Tipi predefiniti.
Nel nel file di header sono predefiniti dei tipi di dati che sono
usati anche nella definizione delle funzioni. Eccone una
descrizione:
ATTR: Questo e' il tipo adatto per la rappresentazione degli
attributi video. Correlata a questo tipo vi e' la macro
attrib.
BOOLEAN: Valore booleano. Una variabile di questo tipo puo' valere
solo TRUE o FALSE.
Manuale d'uso PcWindow - pag. 71
Macro. Macro.
Quelle che seguono sono delle macro e delle definizioni per
facilitare la generazione di attributi video, senza impegnarsi
nella manipolazione dei bit e per altre funzioni di controllo.
Manuale d'uso PcWindow - pag. 72
Macro attrib: attrib:
attrib(FORE,HIL,BACK,BLI) attrib(FORE,HIL,BACK,BLI)
La macro calcola il valore numerico corrispondente all'attributo
specificato.
I parametri sono:
FORE: Colore di primo piano (scegliere tra BLACK, BLUE, GREEN, ____
CYAN, RED, MAGENTA, YELLOW, WHITE).
HIL: Puo' valere NORMAL oppure HILIGHT a seconda che si voglia la ___
scrittura normale o l'evidenziato.
BACK: Colore di sfondo (come per FORE). ____ ____
BLI: Puo' valere STEADY per caratteri fissi o BLINK per caratteri ___
lampeggianti.
NOTA NOTA ____
Nelle versioni precedenti di PcWindow, le costanti che definivano i
possibili attributi erano diverse dalle attuali. Occorre pertanto
provvedere a modificare eventuali programmi scritti prima
dell'attuale versione di PcWindow. E' comunque possibile continuare
ad usare la vecchia nomenclatura definendo la macro OLD_PCW o
nell'invocazione al compilatore o mettendo in testa ai programmi la
direttiva #define OLD_PCW appena prima di #include <pcw.h> _______________ ________________
Manuale d'uso PcWindow - pag. 73
Macro reverse: reverse:
reverse(att) reverse(att)
La macro serve per invertire un codice di attributo generato da
attrib, ovvero caratteri in negativo. attrib
In pratica effette lo scambio tra BACK e FORE. ____ ____
Manuale d'uso PcWindow - pag. 74
Definizione __PCW__: __PCW__:
__PCW__ __PCW__
Questa e' una definizione riportata nel file pcw.h ed e'
inizializzata ad un valore pari alla versione di PcWindow x 100
(ovvero: 130 equivale a 1.30). In questo modo e' possibile
effettuare delle compilazioni condizionate.
Osservare che nel toolkit e' presente anche la funzione Pcw_version Pcw_version
che ritorna il numero della versione, ma ovviamente va bene solo a
run-time, ma non a compile-time.
Manuale d'uso PcWindow - pag. 75
APPENDICE A APPENDICE A
Elenco delle figure fuori testo.
Fig. 1 : schermo e coordinate.
Fig. 2 : finestra e area visibile.
Fig. 3 : effetti per le funzioni open e open_pos.
Fig. 4 : effetti per la funzione close
Fig. 5 : effetti per la funzione move_abs
Fig. 6 : direzioni per la funzione scroll
Fig. 7 : effetti per la funzione size
Fig. 8 : effetti per la funzione size
Manuale d'uso PcWindow - pag. 76
APPENDICE B APPENDICE B
Modalita' di uso della funzione input da parte dell'operatore. Modalita' di uso della funzione input da parte dell'operatore.
Quando si entra in modalita' input viene visualizzato il campo in
cui si puo' immettere il dato ed eventualmente un valore
preesistente che puo' essere modificato. Il cursore viene
posizionato all'inizio del campo se questo e' vuoto o appena dopo
l'ultimo carattere dell'eventuale valore preesistente.
E' possibile spostarsi a destra e sinistra lungo il campo
servendosi delle due frecce destra e sinistra pero' solo lungo i
caratteri gia' presenti o, nel caso in cui il campo non sia pieno,
sul primo posto libero a destra dei caratteri presenti. Osservare
che se il tipo del dato da leggere e' una IT_DATE, muovendosi con
il cursore vengono automaticamente saltati i caratteri "/". Analogo
discorso vale per il campo IT_HOUR in cui il separatore e'
rappresentato da ":". Per il campo IT_LOGICAL non e' possibile
muoversi in quanto la lunghezza del campo e' unitaria.
Battendo un carattere (tra quelli permessi per il tipo), questo va
a posizionarsi alla posizione del cursore spostando quest'ultimo a
destra di una posizione (saltando sempre l'eventuale "/" per un
campo IT_DATE o il ":" per il campo IT_HOUR e non muovendosi per un
campo logico); se il cursore si trova su un carattere questo viene
sostituito.
Premendo il tasto INS si entra in modalita' inserimento per cui i
caratteri battuti si faranno posto fra quelli preesistenti alla
posizione del cursore con eventuale perdita di caratteri a destra
del campo (non vale per i tipi IT_DATE, IT_HOUR e IT_LOGICAL); la
modalita' di inserimento viene annullata ripremendo il tasto INS o
uscendo dal campo.
Per i soli campi IT_ALFANUM, IT_ALFABUPP, IT_ALFAB (quelli che
accettano lo spazio) e' possibile spostarsi alla parola successiva
premendo Ctrl+Cursor Right o alla parola precedente premendo
Ctrl+Cursor Left, o ancora spostarsi alla successiva posizione di
tabulazione (0 - 8 - 16 ...) premendo il tasto TAB o alla
precedente servendosi di Shift + Tab.
Il tasto DEL cancella il carattere sotto il cursore trascinando
eventuali caratteri presenti alla sua destra, verso sinistra; il
tasto BACKSPACE cancella il carattere alla sinistra del cursore
trascinando il carattere sotto il cursore ed eventuali successivi
verso sinistra.
Il tasto DEL non funziona per i tipi IT_DATE, IT_HOUR, e
IT_LOGICAL.
Il tasto BACKSPACE non funziona per il tipo IT_LOGICAL, mentre per
i tipi IT_HOUR e IT_DATE funziona allo stesso modo di Cursor Left.
Per i campi IT_DATE e IT_HOUR e' possibile cancellare il carattere
sotto il cursore con la barra spaziatrice.
Manuale d'uso PcWindow - pag. 77
Il tasto HOME posiziona il cursore all'inizio del campo, mentre il
tasto END posiziona il cursore alla fine dei caratteri immessi.
E' possibile cancellare dalla posizione del cursore fino all'inizio
del campo con conseguente allineamento dei caratteri rimanenti con
il tasto Ctrl+HOME e analogamente troncare dalla posizione del
cursore verso destra con il tasto Ctrl+END (questi due comandi non
valgono per i tipi IT_LOGICAL, IT_HOUR e IT_DATE).
La terminazione puo' avvenire con il tasto RETURN oppure con uno
dei tasti abilitati dalla funzione set_input_mode. Osservare che set_input_mode
per il campo IT_DATE, viene effettuato un controllo sulla validita'
della data immessa e quindi si esce dall'input solo se la data e'
legale (viene anche accettata la data nulla " / / " che peraltro
deve essere passata solo come default). Stesso discorso vale per il
campo IT_HOUR in cui viene effettuata la validita' dell'ora e viene
eventualmente accettata l'ora nulla " : ".
Per i campi IT_FIXED?c'e' da aggiungere che indipendentemente dal
loro valore, il dato viene sempre rappresentato con la
formattazione prevista.
Per il campo IT_HEX sono accettati i soli valori esadecimali
automaticamente convertiti in maiuscolo.
Per il campo IT_REAL sono accettati i numeri, opzionalmente un
punto e un segno ma solo in prima posizione.
Manuale d'uso PcWindow - pag. 78
APPENDICE C APPENDICE C
Modalita' d'uso dei menu' pull-down. Modalita' d'uso dei menu' pull-down.
Quando e' presente la riga orizzontale dei menu', e' possibile
effettuare la propria scelta tenendo premuto il tasto ALT e
battendo contemporaneamente l'iniziale del nome presente sulla riga
o la prima lettera maiuscola nel nome (se c'e' e se l'iniziale del
nome non e' maiuscola). Ad esempio se compaiono le seguenti
scritte:
File Stampa Opzioni sElezione
e si vuole selezionare la funzione "Opzioni" basta premere ALT+O,
mentre se si vuole selezionare "Selezione" basta premere ALT+E.
Si nota a questo punto l'apertura di una finestra in corrispondenza
della scelta con le relative scelte di secondo livello con la prima
scelta a partire dall'alto evidenziata. A questo punto si puo'
effettuare la scelta finale premendo la prima lettera maiuscola
presente nel nome della funzione desiderata oppure, quando non
c'e', l'iniziale del nome (senza premere il tasto ALT) e confermare
con il tasto RETURN. E' possibile scegliere fra le scelte di primo
livello (orizzontali) anche mediante i tasti cursore (destra e
sinistra) e questo e' utile quando si hanno piu' scelte che
iniziano con la stessa lettera. Cosi' e' anche possibile scorrere
lungo le scelte verticali (di secondo livello) con i tasti cursore
(basso e alto). E' possibile in ogni caso eseguire movimenti misti
con i tasti cursore.
A volte per un determinato sub-menu' sono presenti molte scelte che
non comparirebbero tutte nella box e pertanto ne vengono presentate
solo alcune. Le altre si ottengono muovendosi con il cursore verso
il basso forzando cosi' uno scorrimento delle scelte verso l'alto.
E in senso inverso si puo' andare verso l'alto forzando uno
scorrimento delle scritte verso il basso.
La conferma della scelta effettuata avviene mediante pressione del
tasto RETURN.
Si puo' interrompere la scelta premendo in qualunque momento il
tasto ESC.
Sono selezionabili solo le scelte evidenziate da un carattere
particolare alla sinistra della stringa.
Manuale d'uso PcWindow - pag. 79
APPENDICE D APPENDICE D
Future espansioni. Future espansioni.
Il programma PcWindow non e' un prodotto finito nel senso che e'
privo di futuro, ma si presta a successive modifiche, espansioni,
migliorie, ed altro che verra' in seguito al riscontro che possono
fornire gli utenti. Qualcosa e' gia' in cantiere, altro e' solo a
livello di idea. In ogni caso tutto quello che e' da venire avra'
ragione di essere solo se ci saranno persone che forniranno
critiche, consigli e rileveranno gli inevitabili errori contenuti
nel programma. Di seguito riporto una lista delle modifiche che
saranno attuate nelle successive versioni. L'ordine non e'
indicativo:
- Sara' prevista la gestione del mouse.
- Sara' creata una interfaccia a piu' alto livello per la gestione
dell'input controllato non piu' a livello del singolo campo, ma
a livello dell'intera maschera.
- Sara' fornito un ambiente di sviluppo interattivo che generera'
le linee di codice a partire dalle indicazioni grafiche fornite
dall'utente. (Progetto piuttosto ambizioso!).
- Saranno aggiunte altre funzioni per l'interfacciamento con le
altre librerie che sto scrivendo (di cui per il momento non vi
dico niente, ma se vi interessa saperne di piu' basta
contattarmi).
- Sara' generata una versione multi-thread di Pcw contenuta in una
libreria di tipo DLL (per l'ambiente OS/2).
- Tutto quello che mi verra' in mente o che mi sara' proposto.
- Probabilmente non curero' piu' la versione per TurboC, in quanto
non sono in grado di provarla bene, non avendo il compilatore e
non avendo l'intenzione di comprarlo. Se c'e' qualcuno che si
sente in grado di fare il beta-tester per la versione TurboC,
si faccia avanti.
Manuale d'uso PcWindow - pag. 80
APPENDICE E APPENDICE E
Collaborazione. Collaborazione.
Quanto sto per dirvi viene fuori da una considerazione pratica:
quasi tutti coloro che scrivono programmi si sono sempre
preoccupati di creare un interfaccia utente sofisticata e al tempo
stesso quanto piu' semplice possibile nell'uso, come anche sistemi
di help "context sensitive" e altre cose del genere per rendere i
programmi sempre piu' "user friendly".
E in effetti anche per questo e' nato PcWindow, per fare in modo da
rendere piu' simpatica la presentazione di dati e la esecuzione di
operazioni per l'operatore. Ma non e' solo questo lo scopo, infatti
uno dei motivi che stanno alla base del tool e' quello di
semplificare la vita al programmatore perche' in verita' la
situazione e' questa: mentre dal punto di vista dell'utente si sono
fatti passi da gigante fino al punto in cui si riesce a lavorare
solo con il mouse, per quanto riguarda noi programmatori siamo
rimasti ancora con i metodi dei pionieri e infatti usiamo un editor
e un compilatore che lavorano quasi con modalita' batch. Gia' i
debugger tipo CodeView sono una grande innovazione, come anche i
prodotti con help in linea tipo QuickC oppure le Norton Guides o
ancora il QuickHelp annesso al Microsoft Editor sotto OS/2 o le
utility tipo Make, ma e' ancora poco. C'e' molto da fare e proprio
a questo proposito che si inserisce un discorso di collaborazione
reciproca fra programmatori.
In effetti si tratterebbe di sviluppare tutto un insieme di
prodotti, di tool di utility e di librerie adatte a semplificare la
vita a noi programmatori che siamo costretti a rimanere ore davanti
ad un calcolatore per cercare di tradurre quello che abbiamo in
mente proprio perche' non esiste un tramite veloce tra la nostra
idea e il prodotto finito.
Pertanto, chiunque si sente in grado di intraprendere questa strada
e ritiene di avere valide idee si puo' fare benissimo avanti e
contattarmi. Ci sono gia' altre persone che stanno dedicando il
loro tempo a progetti del genere e che quindi sono ansiosi di
collaborare e di sentirsi meno soli in queste imprese.
Ecco di seguito delle indicazioni di base per scrivere altre
funzioni, librerie o moduli da usarsi con PcW:
- Fondamentale: registrarsi all'uso di PCW mediante l'apposita
registration Card.
- Usare esclusivamente linguaggio C, cercando di attenersi alla
proposta di standard ANSI in modo da poter compilare sia con
Microsoft C, sia con TurboC.
Manuale d'uso PcWindow - pag. 81
- Il formato migliore per un prodotto di questo tipo e' la
libreria, o al piu' il file .OBJ. Solo in casi particolari il
sorgente.
- Non usare nomi simbolici che inizino con Pcw, Pcm o Pci (questi
sono riservati per un uso interno di PcWindow).
- Generare un file di header con tutte le definizioni e tutti i
prototipi delle funzioni.
- Corredare il programma di un apposito manuale.
- Specificare la versione minima di PCW richiesta. A tal scopo i
programmi devono prevedere un controllo della versione di PCW
per verificare che questa sia almeno la minima richiesta.
- Garantire sempre la compatibilita' verso l'alto. Quando questo
non sia possibile, mantenere per un certo periodo di
transizione sia la nuova che la vecchia forma, specificando
bene nel manuale la cosa. (vedi esempio in PCW del file
pcwdef.c sostituito da pcw.h).
- Corredare il programma di almeno un esempio globale che mostri
l'uso di tutte le funzioni (non fate come il sottoscritto che
ancora non ha scritto un dimostrativo valido).
- Menzionare bene il vostro nome, indirizzo, recapito telefonico,
recapito BBS (quando c'e').
- Non numerate subito le versioni con 1.00, 2.00, 3.00, ma
proseguite gradualmente (vedere il mio file PCW.VER). Se vi e'
possibile allegate anche voi un file con la storia evolutiva.
- Inviate il tutto al sottoscritto solo dopo aver testato il tutto
ben bene. Successivamente dopo aver verificato la
compatibilita' con PCW, mi occupero' di darvi la giusta
pubblicita', le critiche e i consigli e vi segnalero' a tutti
gli altri utenti di PCW.
- Partecipate all'area messaggi apposita aperta su SMCVBBS.
Come segnalare errori in PCW o in un programma annesso: Come segnalare errori in PCW o in un programma annesso:
- Scrivere un programma dimostrativo dell'errore che sia il piu'
corto possibile e mandarmi il sorgente (ovviamente in C).
- Specificare la versione di PCW, la versione del compilatore, la
marca e il modello del calcolatore e tutti i suoi dati (RAM,
Hard Disk, scheda video).
Manuale d'uso PcWindow - pag. 82
- Specificare il nome e la versione dei programmi aggiuntivi a
PcWindow.
- Aggiungere una spiegazione quanto piu' esauriente possibile del
difetto e/o degli errori.
- Mettere il tutto in un file e inviarmelo direttamente sul mio BBS
o tramite posta. Nel caso in cui l'errore non riguardi PCW, ma
un'altra libreria che sfrutta PcW, mi occupero' personalmente
di contattare l'autore per far provvedere alla correzione e in
seguito avvisero' tutti gli utenti registrati della avvenuta
correzione.
Manuale d'uso PcWindow - pag. 83
APPENDICE F APPENDICE F
Note per chi usa Clipper. Note per chi usa Clipper.
La libreria Large Memory Model, MS-C, Ms-Dos puo' benissimo essere
adoperata anche con il compilatore Clipper senza alcuna
difficolta'. L'unica cosa di cui occorre tenere conto e' la
seguente:
Chi lavora con Clipper sa che non e' possibile avere nomi delle
funzioni lunghi come quelli usati in PcW, come anche sa della
limitazione sul numero e sul tipo di parametri da passare alle
funzioni. Per usare quindi il toolkit con Clipper occorre servirsi
di funzioni intermedie. Ad esempio, se io devo definirmi quattro
finestre mi scrivo una funzione in C che definisce le quattro
window e poi dal Clipper vado solo a richiamare questa funzione.
/* Esempio di funzione di tramite */
CLIPPER Init()
{
Pcw_init(.......); /* I puntini vanno sostituiti con */
Pcw_define(......); /* quello che serve */
Pcw_define(......);
}
Altra cosa da tener presente con Clipper e' quella di usare
l'opzione PAD_FIELD (vedi funzione Pcw_set_option) in modo da
ritrovarsi sempre campi pieni in uscita dalla funzione Pcw_input.
Manuale d'uso PcWindow - pag. 84
APPENDICE G APPENDICE G
Note per il sistema operativo OS/2. Note per il sistema operativo OS/2.
La versione attuale di PcWindow per il sistema operativo OS/2 e
soltanto una conversione dell'analoga versione per Ms-Dos e
pertanto per il suo uso occorre tenere presente che:
- Non e' ottimizzata, per cui alcuni effetti sono piu' lenti degli
analoghi per Ms-Dos.
- Se piu' programmi usano PcWindow contemporaneamente, ognuno dei
due avra' la propria copia privata con conseguente duplicazione
dello spazio occupato in memoria.
- Se due thread di uno stesso programma effettuano in simultaneo
chiamate a funzioni di PcWindow, il risultato non e' definito e
pertanto occorre che un unico thread si occupi
dell'interfacciamento con PcWindow (si puo' anche serializzare
l'accesso a Pcw mediante un semaforo di mutua esclusione).
Futuri sviluppi di PcWindow per OS/2 riguarderanno la scrittura
della libreria in modo tale da eliminare tali inconvenienti e
magari crearne una versione DLL.
Manuale d'uso PcWindow - pag. 85
APPENDICE H APPENDICE H
Indice alfabetico delle funzioni e delle macro Indice alfabetico delle funzioni e delle macro ______________________________________________
ATTR............................................70
attrib..........................................72
BOOLEAN.........................................70
Pcm_close.......................................53
Pcm_define......................................49
Pcm_disable.....................................55
Pcm_enable......................................55
Pcm_enter_menu..................................52
Pcm_ext_desc....................................54
Pcm_init........................................48
Pcm_open........................................51
Pcw_beep........................................32
Pcw_clear_25....................................41
Pcw_clear_screen................................19
Pcw_close.......................................20
Pcw_cls.........................................18
Pcw_copyright...................................29
Pcw_cpu_type....................................42
Pcw_cursor......................................34
Pcw_cursor_type.................................35
Pcw_define......................................11
Pcw_dim.........................................37
Pcw_ext_sel.....................................66
Pcw_first_free..................................38
Pcw_get_date....................................62
Pcw_get_time....................................63
Pcw_how_many_windows............................26
Pcw_init........................................10
Pcw_input.......................................57
Pcw_is_color....................................44
Pcw_is_open.....................................39
Pcw_make_current................................45
Pcw_move_abs....................................21
Pcw_move_rel....................................22
Pcw_no_flick....................................31
Pcw_open........................................14
Pcw_open_pos....................................14
Pcw_pos.........................................36
Pcw_printat.....................................16
Pcw_scroll......................................23
Pcw_select......................................64
Pcw_set_input_flag..............................61
Pcw_set_input_mode..............................60
Pcw_set_option..................................46
Pcw_set_speed...................................30
Pcw_set_view....................................24
Pcw_size........................................25
Pcw_sprintat....................................16
Manuale d'uso PcWindow - pag. 86
Pcw_toggle......................................69
Pcw_tone........................................33
Pcw_undef.......................................13
Pcw_version.....................................28
Pcw_video_card..................................43
Pcw_which_window................................27
Pcw_write_25....................................40
reverse.........................................73
__PCW__.........................................74
Manuale d'uso PcWindow - pag. 87
Indice Generale Indice Generale _______________
Trademarks............................................2 Trademarks
Ringraziamenti........................................2 Ringraziamenti
Avvertenze............................................3 Avvertenze
Tipi di pacchetto................................3
Registrazione....................................3
Introduzione.....................................5
Struttura della libreria.........................5
Funzioni di finestra..................................8 Funzioni di finestra
Pcw_init........................................10
Pcw_define......................................11
Pcw_undef.......................................13
Pcw_open........................................14
Pcw_open_pos....................................14
Pcw_printat.....................................16
Pcw_sprintat....................................16
Pcw_cls.........................................18
Pcw_clear_screen................................19
Pcw_close.......................................20
Pcw_move_abs....................................21
Pcw_move_rel....................................22
Pcw_scroll......................................23
Pcw_set_view....................................24
Pcw_size........................................25
Pcw_how_many_windows............................26
Pcw_which_window................................27
Pcw_version.....................................28
Pcw_copyright...................................29
Pcw_set_speed...................................30
Pcw_no_flick....................................31
Pcw_beep........................................32
Pcw_tone........................................33
Pcw_cursor......................................34
Pcw_cursor_type.................................35
Pcw_pos.........................................36
Pcw_dim.........................................37
Pcw_first_free..................................38
Pcw_is_open.....................................39
Pcw_write_25....................................40
Pcw_clear_25....................................41
Pcw_cpu_type....................................42
Pcw_video_card..................................43
Pcw_is_color....................................44
Pcw_make_current................................45
Pcw_set_option..................................46
Menu pull-down.......................................47 Menu pull-down
Pcm_init........................................48
Pcm_define......................................49
Pcm_open........................................51
Manuale d'uso PcWindow - pag. 88
Pcm_enter_menu..................................52
Pcm_close.......................................53
Pcm_ext_desc....................................54
Pcm_enable......................................55
Pcm_disable.....................................55
Input controllato....................................56 Input controllato
Pcw_input.......................................57
Pcw_set_input_mode..............................60
Pcw_set_input_flag..............................61
Pcw_get_date....................................62
Pcw_get_time....................................63
Pcw_select......................................64
Pcw_ext_sel.....................................66
Pcw_toggle......................................69
Tipi predefiniti.....................................70 Tipi predefiniti
ATTR............................................70
BOOLEAN.........................................70
Macro................................................71 Macro
attrib..........................................72
reverse.........................................73
__PCW__.........................................74
Appendici............................................75 Appendici
Appendice A. Elenco figure fuori testo..........75
Appendice B. Uso Input..........................76
Appendice C. Uso menu' pull-down................78
Appendice D. Future espansioni..................79
Appendice E. Collaborazione.....................80
Appendice F. Note per chi usa Clipper...........83
Appendice G. Note per il sistema operativo OS/2.84
Appendice H. Elenco alfabetico dei nomi.........85