home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-04-07 | 137.6 KB | 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