home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / PCWO131.ZIP / PCW.MAN < prev    next >
Text File  |  1989-04-07  |  141KB  |  3,129 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                                       
  8.                                       
  9.                                       
  10.                                       
  11.                                       
  12.                                       
  13.                                       
  14.                                       
  15.                                       
  16.                                       
  17.                                       
  18.                                       
  19.                                   PcWindow                                  PcWindow                                  ________
  20.                                       
  21.                  Personal Computer Window management toolkit
  22.                     Copyright (c) 1988 Pasquale Cantiello
  23.                         Versione 1.31 - 7 Aprile 1989
  24.                             Ms-Dos & OS/2 Support
  25.                                       
  26.                                       
  27.  
  28.                         Manuale d'uso PcWindow - pag. 2
  29.  
  30.  
  31.  
  32.      Trademarks     Trademarks     __________
  33.      Nel corso  del seguente  manuale si  fa' riferimento  a dei  nomi e
  34.      delle sigle  che sono  marchi registrati  dei relativi  autori come
  35.      appresso indicati:
  36.      
  37.      Microsoft, MS-DOS,  OS/2, CodeView, QuickC: marchi registrati della
  38.          Microsoft Corporation.
  39.      IBM:  marchio  registrato  della  International  Business  Machines
  40.          Corporation.
  41.      Borland, Turbo C: marchi registrati della Borland International.
  42.      Norton Guides: Marchio registrato di Peter Norton.
  43.      Clipper: Marchio registrato della Nantucket software.
  44.      FidoNet: marchio registrato di Tom Jennings.
  45.      
  46.      
  47.      Ringraziamenti     Ringraziamenti     ______________
  48.      Ringrazio le  seguenti persone che hanno collaborato attivamente al
  49.      programma:
  50.      
  51.      Carlo Adami:  per le  sue revisioni  alle bozze  del manuale, come
  52.          anche per i suoi consigli e per il lavoro come beta-tester.
  53.      Michele Liguori:  per i  suoi suggerimenti  e per  aver collaborato
  54.          come beta-tester a trovare i vari bug nascosti.
  55.      Johann Sebastian  Bach e Miles Davis: per avermi dato il necessario
  56.          supporto  morale  durante  le  innumerevoli  notti  passate  ad
  57.          editare e compilare il programma.
  58.      
  59.      
  60.      Note:     Note:     _____
  61.      Il nome PcWindow come si puo' capire e' composto da due parti:
  62.      Window che  significa finestra  ed indica  chiaramente lo scopo del
  63.      programma,  e   Pc  che  e'  l'abbreviazione  solita  di  "personal
  64.      computer" ma anche le iniziali del mio nome.
  65.  
  66.                         Manuale d'uso PcWindow - pag. 3
  67.  
  68.  
  69.  
  70.      Avvertenze     Avvertenze     __________
  71.      Alcune  versioni  di  questo  programma  sono  da  considerarsi  di
  72.      pubblico dominio  e pertanto  possono essere  liberamente copiate e
  73.      distribuite senza  alcun obbligo nei miei confronti oltre quello di
  74.      non modificare  ne' il  programma, ne' la documentazione associata,
  75.      ne' il  formato e  il numero dei files. Di seguito sono indicate le
  76.      versioni di pubblico dominio e quelle a pagamento.
  77.      
  78.      Chiunque usera'  questa libreria  in proprie  applicazioni, sia  di
  79.      pubblico dominio  che commerciali,  e' pregato  di aggiungere nella
  80.      relativa documentazione una nota del tipo :"Questo programma fa uso
  81.      della libreria PcWindow sviluppata da Pasquale Cantiello".
  82.      Questa e' l'unica condizione che pongo per l'uso del tool.
  83.      Il rovescio  della medaglia e' che non rispondo di eventuali errori
  84.      nel  programma   o  nella   documentazione.  Peraltro  chiunque  ne
  85.      riscontrasse e'  pregato di comunicarmeli tempestivamente affinche'
  86.      possano essere effettuate le dovute correzioni nel piu' breve tempo
  87.      possibile.
  88.      
  89.      Tipi di pacchetto     Tipi di pacchetto     _________________
  90.      La distribuzione  di PcWindow  avviene in diversi tipi di formato a
  91.      seconda del  modello  di  memoria,  del  sistema  operativo  e  del
  92.      compilatore usato.  Alcuni di  essi non  sono public domain per cui
  93.      essi sono  distribuiti solo  in cambio  di un piccolo contributo di
  94.      supporto allo sviluppo. Ecco i possibili nomi dei pacchetti:
  95.      
  96.          -----Versioni public domain-------
  97.      PCWMxxx  : Small memory model, Microsoft C, Ms-Dos.
  98.      PCWTxxx  : Small memory model, Borland Turbo C, Ms-Dos.
  99.      PCWOxxx  : Small memory model, Microsoft C, OS/2.
  100.      PCWCxxx  : Small memory model, Microsoft C & Borland Turbo C,
  101.                 Ms-Dos & OS/2.
  102.      
  103.          -----Versioni a pagamento---------
  104.      PCWXMxxx : Large & Small memory model, Microsoft C, Ms-Dos.
  105.      PCWXTxxx : Large & Small memory model, Borland Turbo C,  Ms-Dos.
  106.      PCWXOxxx : Large & Small memory model, Microsoft C, OS/2.
  107.      PCWXCxxx : Large & Small memory model, Microsoft C & Borland Turbo
  108.                 C, Ms-Dos & OS/2.
  109.      
  110.      Al posto  dei tre  caratteri xxx  va  sostituito  il  numero  della
  111.      versione (esempio:  small memory  model, MS-C,  Ms-Dos vers. 1.30 =
  112.      PCWM130)
  113.      
  114.      Qualcuno si  chiedera' il  perche' di  tutte queste edizioni quando
  115.      bastavano le  due PCWCxxx  e PCWXCxxx.  Ebbene nel  primo caso sono
  116.      versioni distribuite via BBS per cui piu' sono corti i files e meno
  117.      costoso e'  il loro  prelievo, oltretutto  ad uno che usa il TurboC
  118.      non servira'  la versione  per OS/2  e viceversa.  Nel  caso  delle
  119.      versioni a  pagamento distribuite tramite dischetto la suddivisione
  120.      e' stata fatta per diversificare i prezzi.
  121.  
  122.                         Manuale d'uso PcWindow - pag. 4
  123.  
  124.  
  125.  
  126.      
  127.      Registrazione     Registrazione     _____________
  128.      Gradirei che  chiunque  abbia  intenzione  di  utilizzare  il  tool
  129.      registrasse  il   proprio   nominativo,   o   inviando   l'apposito
  130.      questionario presente  in coda al manuale  debitamente compilato, o
  131.      contattandomi   direttamente.   La   registrazione   (assolutamente
  132.      gratuita) mi  serve da  un lato  per un'indagine  statistica  sugli
  133.      utenti (leggi curiosita') e dall'altro da' diritto a ricevere tutti
  134.      gli aggiornamenti.
  135.      Tutti gli  utenti registrati  possono quindi  prendere parte attiva
  136.      allo sviluppo  e  al  collaudo  del  programma  e  possono  fornire
  137.      commenti, consigli  e segnalare  eventuali errori.  Al rilascio  di
  138.      nuove versioni  tutti gli  utenti registrati saranno immediatamente
  139.      avvertiti e sara' loro inviata l'update, se lo desiderano.
  140.      
  141.      Potete contattarmi scrivendomi al seguente indirizzo:
  142.      
  143.                Pasquale Cantiello
  144.                c/o I.D.M. srl
  145.                Viale Kennedy, 33
  146.                81055 S.Maria C.V. (CE)
  147.                
  148.      oppure, ed  e' preferibile  per il  minore  tempo  di  turn-around,
  149.      collegandosi via modem al "S.Maria C.V. BBS", FidoNet 2:335/2, tel.
  150.      0823-812533, velocita' 1200/2400 baud, 8/N/1 nei seguenti orari:
  151.      
  152.      Lunedi-Venerdi:         dalle 20:00 alle 08:00
  153.      Sabato:                 dalle 14:00 alle 24:00
  154.      Domenica e festivi:     24 ore
  155.      
  156.      Su tale  BBS, oltre a poter "parlare" direttamente con me per tutto
  157.      quello che  concerne l'uso del programma, e' possibile prelevare la
  158.      versione aggiornata del programma, conoscere l'elenco delle persone
  159.      che lo  utilizzano, e prelevare esempi e programmi che sfruttano il
  160.      toolkit.
  161.      E' possibile  servirsi del  BBS  anche  per  la  registrazione  del
  162.      nominativo  utente   uploadando  il   file  CARD.PCW,  dopo  averlo
  163.      compilato con un qualsiasi editor.
  164.      
  165.      Buon lavoro !
  166.                               Pasquale Cantiello
  167.  
  168.                         Manuale d'uso PcWindow - pag. 5
  169.  
  170.  
  171.  
  172.      Introduzione     Introduzione     ____________
  173.      
  174.      Questa libreria  di funzioni  "C" nasce  per soddisfare le esigenze
  175.      dei programmatori che desiderano dare una veste grafica e d'effetto
  176.      ai loro  programmi senza  per  questo  impegnarsi  in  tecniche  di
  177.      programmazione differenti  da quelle  del programma  in sviluppo  e
  178.      inoltre per  potersi slegare dall'hardware per quel che riguarda la
  179.      gestione degli effetti video.
  180.      La libreria  e' stata  realizzata per  poter funzionare  sia con il
  181.      compilatore Microsoft (vers. 5.10 e successive), sia con il Borland
  182.      Turbo C  (vers. 1.00  e successive).  Ovviamente le  librerie  sono
  183.      diverse in  nome e  formato, ma  sono completamente equivalenti dal
  184.      punto  di   vista  funzionale,  e  sono  distribuite  in  pacchetti
  185.      differenti in  modo che  chi deve  prelevare i file via modem, puo'
  186.      anche prendere  solo quelli  per il  compilatore che gli interessa,
  187.      trascurando gli  altri. Di  seguito tutto  quello che  si dira' nel
  188.      presente manuale  sara' valido  per entrambi  i compilatori,  salvo
  189.      quando espressamente menzionato.
  190.      
  191.      Il modello  di memoria  da utilizzare per tutte le versioni public-
  192.      domain e'  lo small.  Non e'  possibile l'uso  con Clipper  con  la
  193.      versione public-domain.
  194.      
  195.      Per la  extended version  e' possibile  usare anche il large memory             ________________                                           
  196.      model ed e' possibile usare la libreria anche per altri compilatori
  197.      della  famiglia   Microsoft  seguendo  le  specifiche  fornite  nei
  198.      relativi  manuali   nel  capitolo   dedicato  al   "mixed  language
  199.      programming", come  anche e'  possibile usarla  con il  compilatore
  200.      Clipper (vedi l'apposita appendice).
  201.      
  202.      La libreria  si puo'  vedere divisa  in tre  parti fondamentali: la
  203.      gestione  delle   finestre  (windows)   che  e'   anche  il  nucleo
  204.      principale, la gestione dei menu pull-down e la gestione dell'input
  205.      controllato .
  206.      
  207.      Struttura della libreria     Struttura della libreria     ________________________
  208.      La libreria e' formata da un insieme di file:
  209.      
  210.      
  211.      PCW.       H     Comprende definizioni di macro e di strutture dati
  212.                     indispensabili  per   l'uso  della   libreria  e   i
  213.                     prototipi delle  funzioni di  PCW.LIB,  in  modo  da
  214.                     poter avere  uno "strong type checking" da parte del
  215.                     compilatore. Pertanto  occorre inserire  in testa al
  216.                     programma applicativo  che  si  sta  realizzando  la
  217.                     direttiva:
  218.                     #include  <pcw.h>
  219.      
  220.      PCWDEF.  C     Questo file non e' piu' necessario per PcWindow, ma
  221.                     viene mantenuto  perche' nelle  versioni  precedenti
  222.                     esso sostituiva  pcw.h. Si consiglia di modificare i
  223.                     sorgenti dei  programmi scritti  per PcW  usando  il
  224.                     nuovo nome.
  225.      
  226.  
  227.                         Manuale d'uso PcWindow - pag. 6
  228.  
  229.  
  230.  
  231.      PCW.     MAN   Questo  e' il  manuale  che  state  leggendo  e  va
  232.                     stampato con  il comando:  "copy pcw.man prn" su una                                               __________________       
  233.                     qualunque stampante anche non grafica.
  234.      
  235.      PCWGR.   MAN   Questo  e' il  manuale come  il precedente,  ma  in
  236.                     formato  grafico   adatto  per  stampanti  EPSON  FX
  237.                     compatibili e  va  stampato  con  il  comando  "copy                                                                   _____
  238.                     pcwgr.man prn /b".                    _________________ 
  239.                     Nota:  questo file  non e'  presente nel  pacchetto                    ____                                               
  240.                     distribuito  tramite  BBS,  ma  fa  parte  del  file
  241.                     PCWGRMAN.ARC prelevabile  separatamente e questo per
  242.                     far si  che chi  non ha  stampante grafica  non  sia
  243.                     costretto a  fare download  enormi. Per  i pacchetti
  244.                     non public-domain  il  manuale  viene  fornito  gia'
  245.                     stampato e rilegato.
  246.      
  247.      LEGGIMI. DOC   File  di testo  con indicazioni  che non  e'  stato
  248.                     possibile inserire nel manuale (da leggere!!).
  249.      
  250.      CARD.    PCW   Registration card, ovvero un documento da compilare
  251.                     e da  inviare  per  poter  essere  aggiornato  sugli
  252.                     sviluppi del programma.
  253.      
  254.      PCW.    VER    Questo  file di  testo contiene la storia evolutiva
  255.                     del programma  ovvero le  differenze e  le modifiche
  256.                     apportate alle varie versioni.
  257.      
  258.      PCW*.    GEM   Insieme  di figure nel formato GEM Draw allegate al
  259.                     manuale.
  260.      
  261.      PCW.    LIS    File di comando per lo spooler di stampa di GEM per
  262.                     stampare le figure.
  263.      
  264.      PCWDEMO. C     Programma dimostrativo globale. Sorgente.
  265.      
  266.      PCWDEMO. EXE   Il precedente compilato e linkato.
  267.      
  268.      PCWDEMOP.EXE   Il precedente, ma per OS/2.
  269.      
  270.      DEMOWIN. C    Programma dimostrativo delle funzioni per la gestione
  271.                     delle window. Sorgente.
  272.      
  273.      DEMOWIN. EXE   Programma gia' compilato e linkato.
  274.      
  275.      DEMOWINP.EXE   Come il precedente, ma per l'ambiente OS/2.
  276.      
  277.      ESEMPIO. DOC   Note esplicative del programma dimostrativo.
  278.      
  279.      Il file  principale e'  la libreria  e puo' assumere nomi diversi a
  280.      seconda del  compilatore, del  sistema operativo  e del  modello di
  281.      memoria. In ogni caso e' contraddistinto dall'estensione .LIB
  282.      Di seguito sono elencati i possibili nomi delle librerie. Come gia'
  283.      detto la loro presenza dipende dal tipo di pacchetto.
  284.      
  285.  
  286.                         Manuale d'uso PcWindow - pag. 7
  287.  
  288.  
  289.  
  290.      PCW.LIB       Small memory model, MS-C, Ms-Dos.
  291.      PCWT.LIB      Small memory model, TurboC, Ms-Dos.
  292.      PCWP.LIB      Small memory model, MS-C, OS/2.
  293.      PCWL.LIB      Large memory model, MS-C, Ms-Dos.
  294.      PCWTL.LIB     Large memory model, TurboC, Ms-Dos.
  295.      PCWLP.LIB     Large memory model, MS-C, OS/2.
  296.      
  297.      Il file  di header  pcw.h  andra'  copiato  nella  directory  degli
  298.      include files,  mentre la  libreria (o  le librerie)  in uso andra'
  299.      copiata nella directory o nel disco ove risiedono le altre librerie
  300.      del "C",  e bisognera'  linkarla ai  programmi  che  la  utilizzano
  301.      indicandone il  nome esplicitamente  nella  linea  di  comando  del
  302.      linker. Occorrera' anche aver settato correttamente le variabili di
  303.      environment  INCLUDE  e  LIB  per  l'MSC  o  generato  il  file  di
  304.      configurazione per il TC.
  305.      Ad esempio, dovendo generare il programma DEMOWIN.EXE a partire dal
  306.      programma DEMOWIN.C  con  il  compilatore  MSC  bisognera'  dare  i
  307.      comandi:
  308.      
  309.      C>cl /c demowin.c       (compila soltanto)                             __________________
  310.      C>link demowin,,nul,pcw;(linka alle librerie)                             _____________________
  311.      
  312.      Analogamente con il compilatore Borland:
  313.      
  314.      C>tcc -c demowin.c      (compila soltanto)                             __________________
  315.      C>tlink c0s+demowin,demowin,/x/c,emu+maths+cs+pcwt (linka alle                                                       ____________
  316.      librerie)     _________
  317.      
  318.      Il toolkit comprende una serie di funzioni richiamabili dall'utente
  319.      che saranno  di seguito descritte sintatticamente e semanticamente.
  320.      Nella descrizione  sono usati in maiuscolo dei nomi predefiniti nel
  321.      file di  definizioni che  quindi devono essere usati nel programma.
  322.      Le funzioni non sono elencate alfabeticamente, ma secondo un ordine
  323.      che  si  e'  ritenuto  favorevole  per  un  apprendimento  graduale
  324.      dell'uso della libreria.
  325.      
  326.      Si raccomanda  durante  la  scrittura  dei  programmi  come  regola
  327.      fondamentale di  non usare  mai nomi di variabili o di funzioni che
  328.      iniziano con i caratteri Pcw, Pcm o Pci e questo al fine di evitare
  329.      possibili conflitti  di nomi con le funzioni e le variabili interne
  330.      alla libreria.
  331.  
  332.                         Manuale d'uso PcWindow - pag. 8
  333.  
  334.  
  335.  
  336.      Funzioni di finestra     Funzioni di finestra     ____________________
  337.      
  338.      Che cosa  si intende per finestra? Ad un primo sguardo superficiale
  339.      potremmo dire  che una finestra e' una zona del video delimitata da
  340.      un bordo  e contenente  del testo  o dei  grafici, indipendente dal
  341.      video stesso, con dimensioni variabili e posizione variabile.
  342.      Volendo essere  piu' precisi  possiamo definire la finestra come un
  343.      ente logico  caratterizzato da un array bidimensionale di caratteri
  344.      di dimensioni  opportune, che puo' essere visualizzato per intero o
  345.      solo in  un parte,  all'interno di un'area, anch'essa di dimensioni
  346.      variabili, e posizionabile a piacere.
  347.      
  348.      
  349.      Parametri caratteristici di una finestra     Parametri caratteristici di una finestra     ________________________________________
  350.      Una   finestra    viene   individuata    dai   seguenti   parametri
  351.      caratteristici (Fig. 1 e Fig. 2):
  352.      
  353.      Limite  X  e  Limite  Y  (xlim,  ylim):  Dimensioni  dell'array  di     _______________________________________                            
  354.      caratteri (buffer). Valori minimi sono 1 e 1, mentre valori massimi
  355.      sono 78  per X  e 23 per Y (80 e 25 se la finsetra e' sporvvista di
  356.      bordo). E'  da osservare  che l'area visualizzata puo' essere anche
  357.      solo una parte del buffer.
  358.      
  359.      Locazione X  e Y  (xloc, yloc): Coordinate sul video dell'angolo in     _______________________________                                    
  360.      alto a  sinistra dell'area  visibile. Valori  minimi  sono  0  e  0
  361.      (corrispondenti all'angolo  in alto a sinistra del monitor), mentre
  362.      i valori massimi dipendono dalle dimensioni dell'area.
  363.      
  364.      Dimensioni area  X  e  Y  (xwidth,  ywidth):  Larghezza  e  altezza     ____________________________________________                       
  365.      dell'area visibile  espresse in caratteri. Valori minimi sono 1 e 1
  366.      mentre valori  massimi sono  i Limiti  X e  Y. Osservare  che se la
  367.      finestra e'  dotata di  bordo sul video viene occupata un'area piu'
  368.      larga e piu' lunga di 2 caratteri per contenere appunto il bordo.
  369.      
  370.      Punto di  vista X  e Y  (xpos, ypos):  Coordinate  all'interno  del     _____________________________________                              
  371.      buffer del  primo carattere  da  visualizzare  nell'area  visibile.
  372.      Valori minimi  sono 0  e 0  mentre i  valori massimi  dipendono dai
  373.      limiti X e Y e dalle dimensioni dell'area visibile.
  374.      
  375.      Tipo di bordo: Il bordo puo' essere costituito da una linea singola     ______________                                                     
  376.      o da una linea doppia, oppure puo' mancare compleatamente.
  377.      
  378.      Attributo del  bordo: Colore  e attributi  del bordo  (solo per  le     _____________________                                              
  379.      finestre con bordo).
  380.      
  381.      Titolo della  finestra: Titolo  che viene  visualizzato in  alto al     _______________________                                            
  382.      centro dell'area  visibile (sul  bordo). Non  vale per  le finestre
  383.      senza bordo.
  384.      
  385.      Attributo del  titolo: Codice  colore e  attributi del  titolo. Non     ______________________                                             
  386.      vale se la finestra e' sprovvista di bordo.
  387.      
  388.      
  389.  
  390.                         Manuale d'uso PcWindow - pag. 9
  391.  
  392.  
  393.  
  394.      Tutti questi  parametri caratterizzano  la finestra e vanno forniti
  395.      per la  maggior parte  in  fase  di  definizione.  E'  prevista  la
  396.      possibilita' di  alterare dinamicamente alcuni di questi parametri.
  397.      Tutto cio' sara' approfondito parlando delle funzioni relative.
  398.      
  399.      Ancora c'e'  da dire  che una  finestra puo'  trovarsi in tre stati
  400.      logici diversi:  (chiusa, aperta  corrente, aperta  normale) il cui
  401.      significato e' il seguente:
  402.      
  403.      - Finestra  chiusa: non  e' visibile sullo schermo (su di essa sono
  404.          possibili la maggior parte delle funzioni).
  405.      
  406.      - Finestra aperta corrente: la sua area visibile e' sullo schermo e
  407.          su di  essa non  sono state aperte altre finestre (e' possibile
  408.          usare tutte le funzioni).
  409.      
  410.      - Finestra  aperta non  corrente: la  sua area  visibile  e'  sullo
  411.          schermo, ma  c'e' almeno  un'altra finestra che e' stata aperta
  412.          dopo di  essa e non ancora chiusa. (Non e' possibile applicarvi
  413.          tutte le funzioni).
  414.  
  415.                         Manuale d'uso PcWindow - pag. 10
  416.  
  417.  
  418.  
  419.      Funzione    init:                 init:
  420.      
  421.      
  422.      int Pcw_init(windows, max_open, max_buf_size)     int Pcw_init(windows, max_open, max_buf_size)
  423.      unsigned int windows, max_open, max_buf_size;     unsigned int windows, max_open, max_buf_size;
  424.      
  425.      
  426.      Questa funzione  e' la  prima funzione che deve essere chiamata dal
  427.      programma che  usa il  toolkit e  serve  per  allocare  la  memoria
  428.      richiesta dai buffer e per inizializzare i valori di default.
  429.      Questa funzione cancella anche lo schermo.
  430.      
  431.      
  432.      Occorre passare i seguenti parametri:
  433.      
  434.      windows: Numero massimo di finestre da gestire (>= 1).     _______                                               
  435.      
  436.      max_open: Numero massimo di finestre aperte contemporaneamente     ________                                                      
  437.               (<=windows).                 _______  
  438.      
  439.      max_buf_size: Ampiezza massima in caratteri del buffer di finestra.     ____________                                                       
  440.          Per determinare  questo  valore,  basta  eseguire  il  prodotto
  441.          xlim*ylim di  tutte le  finestre che  si devono  definire (vedi         ____ ____                                                      
  442.          funzione seguente) e trovare il massimo.
  443.      
  444.      
  445.      La funzione puo' ritornare i seguenti valori:
  446.      
  447.      OK     : L'inizializzazione e' andata a buon fine.
  448.      ILLPAR : I parametri passati sono illegali.
  449.      OUTMEM : Non esiste memoria sufficiente.
  450.      ALRDEF : Sistema gia' inizializzato (impossibile reinizializzare).
  451.      
  452.      
  453.      NOTA     NOTA     ____
  454.      Non  tentare   di  usare  alcuna  funzione  senza  aver  effettuato
  455.      l'inizializzazione.  Durante   la  scrittura   del   programma   e'
  456.      necessario fare  in modo  che la  terminazione  dello  stesso  deve
  457.      avvenire tramite  la funzione  exit(), in  modo  da  consentire  al
  458.      toolkit di effettuare tutte le operazioni finali.
  459.      Inoltre occorre  tenere presente che qualche funzione di quelle del
  460.      toolkit necessita di una finestra ausiliaria, per cui se si usa una
  461.      di queste  funzioni occorre  determinare bene il numero di finestre
  462.      contemporaneamente definite e aperte (magari abbondare di una o due
  463.      finestre).
  464.  
  465.                         Manuale d'uso PcWindow - pag. 11
  466.  
  467.  
  468.  
  469.      Funzione    define:                 define:
  470.      
  471.      
  472.      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,
  473.      y_lim,title)     y_lim,title)
  474.      unsigned int num, x_wid, y_wid, lintyp;     unsigned int num, x_wid, y_wid, lintyp;
  475.      ATTR brdatt, wndatt, ttlatt;     ATTR brdatt, wndatt, ttlatt;
  476.      unsigned int  x_lim, y_lim;     unsigned int  x_lim, y_lim;
  477.      char *title;     char *title;
  478.      
  479.      
  480.      La funzione  permette la  definizione di  una finestra  fornendo le
  481.      informazioni necessarie. E' possibile anche ridefinire una finestra
  482.      usando prima la funzione undef.                              undef 
  483.      
  484.      
  485.      I parametri da passare sono i seguenti:
  486.          
  487.      num : Numero della finestra da definire (da 0 a windows-1, come     ___                                             _______        
  488.               dichiarato nella funzione init).                                        init  
  489.      
  490.      x_wid, y_wid  : Dimensioni  iniziali dell'area  visibile (x_wid  <=     ____________                                              _____    
  491.               x_lim e y_wid <= y_lim). (Vedi Fig. 2). Nel caso in cui la              _____   _____    _____                                    
  492.               finestra sia  dotata di  bordo, allora  l'ampiezza massima
  493.               per una finestra e' 78 lungo X e 23 lungo Y, altrimenti si
  494.               puo' arrivare a 80 e 25.
  495.      
  496.      lintyp :  Tipo di  linea del  bordo: LT_SINGLE  singola e LT_DOUBLE     ______                                                             
  497.               doppia, oppure NO_BORDER per eliminare il bordo.
  498.      
  499.      brdatt : Attributo del bordo (usare la macro attrib). Se lafunzione                                                  attrib                     ______                                                             
  500.               non e' provvista di bordo usare la macro NULLATT.
  501.      
  502.      wndatt : Attributo iniziale della finestra (attrib).                                                 attrib       ______                                              
  503.      
  504.      ttlatt : Attributo del titolo (attrib). Se la finestranon        e'                                    attrib                                   ______                                                             
  505.               provvista di bordo usare la macro NULLATT.
  506.      
  507.      x_lim, y_lim : Dimensioni della finestra (buffer).     ____________                                      
  508.      
  509.      title :  Array di  caratteri (max. 74) contenente il titolo. Questo     _____                                                              
  510.               array deve  essere inizializzato staticamente in quanto la
  511.               funzione memorizza  solo il  puntatore ad  esso. Puo anche
  512.               essere  passata   una  stringa   nulla,  in  modo  da  non
  513.               visualizzare il  titolo. Nel  caso in  cui la  finestra e'
  514.               sprovvista di  bordo,  l'eventuale  titolo  passato  viene
  515.               trascurato.
  516.      
  517.      
  518.      NOTA     NOTA     ____
  519.      Deve essere x_lim>=x_wid, y_lim>=y_wid e x_lim * y_lim <=                 _____  _____ ______  _____   _____   _____   
  520.      max_buf_size.     ____________ 
  521.  
  522.                         Manuale d'uso PcWindow - pag. 12
  523.  
  524.  
  525.  
  526.      
  527.      
  528.      I possibili valori di ritorno sono:
  529.      
  530.      OK     : definizione con esito positivo.
  531.      ILLPAR : i parametri sono illegali.
  532.      ALRDEF :  finestra gia'  definita (usare  prima  undef  se  occorre                                                      undef             
  533.               ridefinire).
  534.  
  535.                         Manuale d'uso PcWindow - pag. 13
  536.  
  537.  
  538.  
  539.      Funzione    undef:                 undef:
  540.      
  541.      
  542.      int Pcw_undef(num)     int Pcw_undef(num)
  543.      unsigned int num;     unsigned int num;
  544.      
  545.      
  546.      Elimina la  definizione di una finestra. Ovviamente la finestra non
  547.      deve essere  aperta e  inoltre deve  essere  stata  precedentemente
  548.      definita.
  549.      
  550.      L'unico parametro da passare e' il numero della finestra.
  551.      
  552.      
  553.      I possibili valori di ritorno sono:
  554.      
  555.      OK     : Operazione con esito positivo.
  556.      ILLPAR : Parametro illegale.
  557.      NOTDEF : Finestra non definita.
  558.      WINOPN : Finestra aperta.
  559.  
  560.                         Manuale d'uso PcWindow - pag. 14
  561.  
  562.  
  563.  
  564.      Funzioni    open_pos e open:                 open_pos e open:
  565.      
  566.      
  567.      int Pcw_open_pos(num, effect, x, y)     int Pcw_open_pos(num, effect, x, y)
  568.      unsigned int num, effect, x, y;     unsigned int num, effect, x, y;
  569.      
  570.      int Pcw_open(num, effect)     int Pcw_open(num, effect)
  571.      unsigned int num, effect;     unsigned int num, effect;
  572.      
  573.      
  574.      Queste due  funzioni aprono  una finestra visualizzando la relativa
  575.      area visibile  sul video.  La differenza fra le due e' che la prima
  576.      funzione specifica  la posizione  sul video  dell'area,  mentre  la
  577.      seconda sfrutta  l'ultima posizione  usata (per finestre mai aperte
  578.      viene assunto  per default  x =  y = 0). La finestra aperta diventa                               ___    _                                 
  579.      quella corrente.
  580.      
  581.      
  582.      I parametri da passare sono:
  583.      
  584.      num : numero della finestra da aprire.     ___                                   
  585.      
  586.      effect  :   effetto  speciale   per  l'apertura   tra  i  seguenti:     ______                                                             
  587.               ISTANT,FADEUP, FADEDOWN,  FADELEFT, FADERIGHT,  FADEHORIZ,
  588.               FADEVERT (vedi Fig. 3).
  589.      
  590.      x, y  (solo per  open_pos) :  coordinate xloc e yloc (vedi Fig. 1).     ____                                                               
  591.               (osservare che  x e y devono essere tali da permettere che
  592.               tutta l'area  visibile sia  sullo schermo  ricordando  che
  593.               l'area e' piu' larga e piu' lunga di due caratteri per via
  594.               del bordo se la finestra ne e' provvista). Al posto di uno
  595.               o entrambi  i parametri x e y e' possibile mettere uno dei
  596.               seguenti valori predefiniti:
  597.           
  598.               ALIGN_CENTER :  La finestra  viene aperta  al centro dello
  599.                    schermo (rispetto a x o rispetto a y). L'allineamento
  600.                    si riferisce all'intera finestra e non alla sola area
  601.                    visibile.
  602.               ALIGN_CENTER_VIEW :  Come il  precedente, ma riferito alla
  603.                    sola area visibile.
  604.               ALIGN_BEGIN :  La finestra  viene aperta sul lato sinistro
  605.                    dello schermo  (o in alto se lungo y). L'allineamento
  606.                    e' riferito rispetto all'intera finestra.
  607.               ALIGN_BEGIN_VIEW  :   Come  il   precedente,  ma  relativo
  608.                    all'area visibile.
  609.               ALIGN_END :  Come ALIGN_BEGIN,  ma per  il lato  destro  o
  610.                    inferiore.
  611.               ALIGN_END_VIEW :  Come il precedente, ma relativo all'area
  612.                    visibile.
  613.  
  614.                         Manuale d'uso PcWindow - pag. 15
  615.  
  616.  
  617.  
  618.               
  619.      
  620.      Possibili valori di ritorno sono:
  621.      
  622.      OK     : Apertura corretta.
  623.      ILLPAR : Parametri illegali.
  624.      NOTDEF : Finestra non definita.
  625.      WINOPN : Finestra gia' aperta.
  626.      OUTMEM : Troppe finestre aperte (limite stabilito dalla funzione
  627.               init).              init  
  628.  
  629.                         Manuale d'uso PcWindow - pag. 16
  630.  
  631.  
  632.  
  633.      Funzioni    printat e sprintat:                 printat e sprintat:
  634.      
  635.      
  636.      int Pcw_printat(num, x, y, car, attr, num_of_car)     int Pcw_printat(num, x, y, car, attr, num_of_car)
  637.      unsigned int num, x, y;     unsigned int num, x, y;
  638.      char car;     char car;
  639.      ATTR attr;     ATTR attr;
  640.      unsigned int num_of_car;     unsigned int num_of_car;
  641.      
  642.      int Pcw_sprintat(num, x, y, string, attr)     int Pcw_sprintat(num, x, y, string, attr)
  643.      unsigned int num, x, y;     unsigned int num, x, y;
  644.      char *string;     char *string;
  645.      ATTR attr;     ATTR attr;
  646.      
  647.      
  648.      Le due funzioni consentono di scrivere rispettivamente una serie di
  649.      caratteri uguali  e una  stringa  in  una  finestra.  E'  possibile
  650.      scrivere anche  in una  finestra che  sia parzialmente o totalmente
  651.      coperta da  altre finestre. Osservare che viene effettuato il wrap-
  652.      around alla  fine delle  linee,  pero'  le  parole  lunghe  vengono
  653.      spezzate senza sillabazione, ne' giustificazione.
  654.      
  655.      
  656.      I parametri da passare sono:
  657.      
  658.      num : numero della finestra.     ___                         
  659.      
  660.      x, y : coordinate a cui scrivere locali alla finestra (da 0,0 a     _  _                                                           
  661.               xlim, ylim: vedi Fig. 2).              ____  ____               
  662.      
  663.      car (solo per printat) : carattere da scrivere.                   printat                               ___                                            
  664.      
  665.      attr : attributo (attrib) del carattere o della stringa.                       attrib                                     ____                                                    
  666.      
  667.      num_of_car (solo per printat) : numero di caratteri uguali.                          printat                                    __________                                                 
  668.      
  669.      string (solo per sprintat) : stringa da scrivere.                      sprintat                             ______                                           
  670.      
  671.      
  672.      Al posto di uno o entrambi i parametri x e y e' possibile mettere    
  673.      uno dei seguenti valori predefiniti:
  674.      
  675.          ALIGN_CENTER  :   La  scritta  viene  centrata  nella  finestra
  676.               (rispetto a x o rispetto a y). L'allineamento si riferisce
  677.               all'intera finestra e non alla sola area visibile.
  678.          ALIGN_CENTER_VIEW :  Come il  precedente, ma riferito alla sola
  679.               area visibile.
  680.          ALIGN_BEGIN :  La scritta  allineata sul  lato  sinistro  della
  681.               finestra  (o  in  alto  se  lungo  y).  L'allineamento  e'
  682.               riferito rispetto all'intera finestra.
  683.          ALIGN_BEGIN_VIEW :  Come il  precedente, ma  relativo  all'area
  684.               visibile.
  685.          ALIGN_END  :   Come  ALIGN_BEGIN,  ma  per  il  lato  destro  o
  686.               inferiore.
  687.  
  688.                         Manuale d'uso PcWindow - pag. 17
  689.  
  690.  
  691.  
  692.          ALIGN_END_VIEW :  Come  il  precedente,  ma  relativo  all'area
  693.               visibile.
  694.           
  695.           
  696.      Possibili valori di ritorno sono:
  697.      
  698.      OK     : scrittura corretta.
  699.      ILLPAR : parametri illegali.
  700.      NOTDEF : Finestra non definita.
  701.  
  702.                         Manuale d'uso PcWindow - pag. 18
  703.  
  704.  
  705.  
  706.      Funzione    cls:                 cls:
  707.      
  708.      
  709.      int Pcw_cls(num, attr)     int Pcw_cls(num, attr)
  710.      unsigned int num;     unsigned int num;
  711.      ATTR attr;     ATTR attr;
  712.      
  713.      
  714.      Cancella il  contenuto di  una finestra. Vale per tutte le finestre
  715.      anche se parzialmente o totalmente sovrapposte da altre.
  716.      
  717.      
  718.      I parametri sono:
  719.      
  720.      num : numero della finestra.     ___                         
  721.      
  722.      attr : attributo da utilizzare per la cancellazione (attrib).                                                          attrib       ____                                                         
  723.      
  724.      
  725.      Possibili valori di ritorno sono :
  726.      
  727.      OK     : cancellazione eseguita.
  728.      ILLPAR : parametri illegali.
  729.      NOTDEF : finestra non definita.
  730.  
  731.                         Manuale d'uso PcWindow - pag. 19
  732.  
  733.  
  734.  
  735.      Funzione    clear_screen:                 clear_screen:
  736.      
  737.      
  738.      void Pcw_clear_screen(attr)     void Pcw_clear_screen(attr)
  739.      ATTR attr;     ATTR attr;
  740.      
  741.      
  742.      Cancella il  contenuto del  video. Non tiene conto delle finestre e
  743.      dei menu aperti, per cui va usata con attenzione.
  744.      
  745.      Il parametro attr e' l attributo da utilizzare per la cancellazione                 _____                                                  
  746.      e serve a stabilire il colore dello sfondo (attrib).                                                 attrib  
  747.      
  748.      
  749.      La funzione non ritorna alcun valore.
  750.  
  751.                         Manuale d'uso PcWindow - pag. 20
  752.  
  753.  
  754.  
  755.      Funzione    close:                 close:
  756.      
  757.      
  758.      int Pcw_close(effect)     int Pcw_close(effect)
  759.      unsigned int effect;     unsigned int effect;
  760.                          
  761.                          
  762.      Chiude la  finestra  corrente.  La  finestra  appena  sotto  quella
  763.      corrente (se esiste) viene ad essere la nuova finestra corrente.
  764.      
  765.      L'unico parametro  effect riguarda  il  modo  in  cui  chiudere  la                        ______                                          
  766.      finestra  e   puo'  valere:ISTANT,   FADEUP,  FADEDOWN,   FADELEFT,
  767.      FADERIGHT, FADEHORIZ, FADEVERT (vedi Fig. 4).
  768.      
  769.      
  770.      I possibili valori di ritorno sono:
  771.      
  772.      OK     : chiusura effettuata.
  773.      ILLPAR : parametro illegale.
  774.      NOWIND : nessuna finestra aperta.
  775.  
  776.                         Manuale d'uso PcWindow - pag. 21
  777.  
  778.  
  779.  
  780.      Funzione    move_abs:                 move_abs:
  781.      
  782.      
  783.      int Pcw_move_abs(x, y, effect)     int Pcw_move_abs(x, y, effect)
  784.      unsigned int x, y, effect;     unsigned int x, y, effect;
  785.      
  786.      
  787.      Muove l'area  visibile della finestra corrente lungo lo schermo. Il
  788.      contenuto dell'area  rimane lo  stesso. Simile a questa funzione e'
  789.      la funzione move_rel (vedi).                 move_rel        
  790.      
  791.      
  792.      I parametri sono:
  793.      
  794.      x, y  : Coordinate  a  cui  posizionare  l'area  nell'ambito  dello     ____                                                               
  795.               schermo; al  solito i  valori minimi per x e y sono 0 e 0,
  796.               mentre i  valori massimi dipendono dall'ampiezza dell'area
  797.               (non puo'  oltrepassare i  limiti dello  schermo). Occorre
  798.               tenere conto della presenza o meno del bordo.
  799.      
  800.      effect :  effetto con  cui muovere  l'area tra  i seguenti: ISTANT,     ______                                                             
  801.               FADEHORIZ, FADEVERT  (Vedi Fig. 5).
  802.      
  803.      Al posto  di uno  o entrambi i parametri x e y e' possibile mettere
  804.      uno dei seguenti valori predefiniti:
  805.      
  806.          ALIGN_CENTER :  La finestra  viene  spostata  al  centro  dello
  807.               schermo (rispetto  a x  o rispetto a y). L'allineamento si
  808.               riferisce  all'intera   finestra  e  non  alla  sola  area
  809.               visibile.
  810.          ALIGN_CENTER_VIEW :  Come il  precedente, ma riferito alla sola
  811.               area visibile.
  812.          ALIGN_BEGIN :  La finestra  viene spostata  sul  lato  sinistro
  813.               dello schermo  (o in  alto se  lungo y). L'allineamento e'
  814.               riferito rispetto all'intera finestra.
  815.          ALIGN_BEGIN_VIEW :  Come il  precedente, ma  relativo  all'area
  816.               visibile.
  817.          ALIGN_END  :   Come  ALIGN_BEGIN,  ma  per  il  lato  destro  o
  818.               inferiore.
  819.          ALIGN_END_VIEW :  Come  il  precedente,  ma  relativo  all'area
  820.               visibile.
  821.      
  822.      
  823.      I possibili valori di ritorno sono:
  824.      
  825.      OK     : Spostamento effettuato.
  826.      ILLPAR : Parametri illegali.
  827.      NOWIND : Nessuna finestra aperta.
  828.  
  829.                         Manuale d'uso PcWindow - pag. 22
  830.  
  831.  
  832.  
  833.      Funzione    move_rel:                 move_rel:
  834.      
  835.      
  836.      int Pcw_move_rel(direction, step, effect)     int Pcw_move_rel(direction, step, effect)
  837.      unsigned int direction, step, effect;     unsigned int direction, step, effect;
  838.      
  839.      
  840.      Muove la  finestra corrente ad una posizione in coordinate relative
  841.      alla posizione  attuale. Non  e' consentito il passaggio dei limiti
  842.      dello schermo.  Simile a  questa funzione  e' la  funzione move_abs                                                                move_abs
  843.      (vedi).
  844.      
  845.      
  846.      Parametri da passare sono:
  847.      
  848.      direction :  direzione verso  cui muovere  l'area tra le seguenti :     _________                                                          
  849.               UP, DOWN, LEFT, RIGHT.
  850.      
  851.      step : numero di passi di cui deve essere spostata l'area.     ____                                                      
  852.      
  853.      effect : effetto che puo' valere ISTANT per movimento istantaneo e     ______                                                            
  854.               FADE per movimento graduale.
  855.      
  856.      
  857.      Possibili valori di ritorno sono :
  858.      
  859.      OK     : spostamento effettuato.
  860.      ILLPAR : parametri illegali.
  861.      NOWIND : nessuna finestra aperta.
  862.  
  863.                         Manuale d'uso PcWindow - pag. 23
  864.  
  865.  
  866.  
  867.      Funzione    scroll:                 scroll:
  868.      
  869.      
  870.      int Pcw_scroll(num, direction, step, effect)     int Pcw_scroll(num, direction, step, effect)
  871.      unsigned int num, direction, step, effect;     unsigned int num, direction, step, effect;
  872.      
  873.      
  874.      Muove l'area  visibile lungo il buffer determinando uno scorrimento
  875.      del testo  all'interno dell'area. La posizione sullo schermo rimane
  876.      inalterata. Simile  a  questa  funzione  e'  la  funzione  set_view                                                                set_view
  877.      (vedi).
  878.      
  879.      
  880.      I parametri sono:
  881.      
  882.      num : numero di finestra (vale solo per la finestra corrente o per     ___                                                               
  883.               una finestra chiusa).
  884.      
  885.      direction : direzione in cui muovere l'area fra le seguenti: UP,     _________                                                       
  886.               DOWN, LEFT, RIGHT (vedi Fig. 6).
  887.      
  888.      step : numero di passi di cui deve essere spostata l'area.     ____                                                      
  889.      
  890.      effect :  effetto fra i seguenti: ISTANT per scorrimento istantaneo     ______                                                             
  891.               e FADE  per scorrimento  graduale. Ovviamente per finestre
  892.               chiuse l'effetto non ha importanza.
  893.      
  894.      
  895.      Possibili valori di ritorno sono:
  896.      
  897.      OK     : scorrimento effettuato.
  898.      ILLPAR : parametri illegali.
  899.      NOTDEF : finestra non definita.
  900.      WINOPN : finestra aperta non corrente.
  901.  
  902.                         Manuale d'uso PcWindow - pag. 24
  903.  
  904.  
  905.  
  906.      Funzione    set_view:                 set_view:
  907.      
  908.      
  909.      int Pcw_set_view(num, x, y)     int Pcw_set_view(num, x, y)
  910.      unsigned int num, x, y;     unsigned int num, x, y;
  911.      
  912.      
  913.      Sposta l'area visibile lungo il buffer alle coordinate indicate. La
  914.      posizione dell'area  sul video  rimane inalterata.  Simile a questa
  915.      funzione e' la funzione scroll (vedi).                             scroll        
  916.      
  917.      
  918.      I parametri sono:
  919.      
  920.      num :  numero della finestra  (vale solo per la finestra corrente o     ___                                                                
  921.               per una finestra chiusa).
  922.      
  923.      x, y  : coordinate  del punto di vista (xpos e ypos in Fig. 2). Non     ____                                                               
  924.               e' possibile uscire fuori dal buffer.
  925.      
  926.      
  927.      Al posto  di uno  o entrambi i parametri x e y e' possibile mettere
  928.      uno dei seguenti valori predefiniti:
  929.      
  930.      ALIGN_CENTER : La zona visibile e' il centro del buffer (rispetto a
  931.          x o rispetto a y).
  932.      ALIGN_BEGIN :  La zona  visibile e'  quella sul  lato sinistro  del
  933.          buffer (o in alto se lungo y).
  934.      ALIGN_END : Come ALIGN_BEGIN, ma per il lato destro o inferiore.
  935.      
  936.      
  937.      Possibili valori di ritorno sono:
  938.      
  939.      OK     : spostamento effettuato.
  940.      ILLPAR : parametri illegali.
  941.      NOTDEF : Finestra non definita.
  942.      WINOPN : Finestra aperta non corrente.
  943.  
  944.                         Manuale d'uso PcWindow - pag. 25
  945.  
  946.  
  947.  
  948.      Funzione    size:                 size:
  949.      
  950.      
  951.      int Pcw_size(num, tipo, direction, step, effect)     int Pcw_size(num, tipo, direction, step, effect)
  952.      unsigned int num, tipo, direction, step, effect;     unsigned int num, tipo, direction, step, effect;
  953.      
  954.      
  955.      Cambia le  dimensioni dell'area visibile. Vale solo per la finestra
  956.      corrente o per una finestra chiusa.
  957.      
  958.      
  959.      I parametri sono:
  960.      
  961.      num : numero della finestra.     ___                         
  962.      
  963.      tipo :  operazione da  effettuare: ENLARGE per allargare e RESTRICT     ____                                                               
  964.               per restringere.
  965.      
  966.      direction :  direzione lungo  cui modificare  le dimensioni  fra le     _________                                                          
  967.               seguenti: UP,  DOWN, LEFT,  RIGHT, HORIZ, VERT, BOTH (vedi
  968.               Fig. 7 e 8).
  969.      
  970.      step :  numero di  passi di cui modificare (per le direzioni HORIZ,     ____                                                               
  971.               VERT e  BOTH il  numero  di  passi  viene  automaticamente
  972.               raddoppiato.
  973.      
  974.      effect :  effetto fra  i seguenti  : ISTANT  per  ridimensionamento     ______                                                             
  975.               istantaneo e  FADE per  ridimensionamento graduale. Per le
  976.               finestre chiuse l'effetto non ha importanza.
  977.      
  978.      
  979.      Possibili valori di ritorno sono :
  980.      
  981.      OK     : ridimensionamento effettuato.
  982.      ILLPAR : parametri illegali.
  983.      NOTDEF : finestra non definita.
  984.      WINOPN : finestra aperta non corrente.
  985.      
  986.      
  987.      Nota:     Nota      ____ 
  988.      Le  direzioni  UP,  LEFT,  HORIZ,  VERT,  BOTH  alterano  anche  la
  989.      posizione (xloc e yloc in Fig. 1) e il punto di vista (xpos e y pos
  990.      in Fig. 2).
  991.  
  992.                         Manuale d'uso PcWindow - pag. 26
  993.  
  994.  
  995.  
  996.      Funzione    how_many_windows:                 how_many_windows:
  997.      
  998.      
  999.      int Pcw_how_many_windows(void);     int Pcw_how_many_windows(void);
  1000.      
  1001.      
  1002.      
  1003.      Restituisce il  numero di  finestre attualmente  aperte. Se nessuna
  1004.      finestra e' aperta viene restituito NOWIND.
  1005.  
  1006.                         Manuale d'uso PcWindow - pag. 27
  1007.  
  1008.  
  1009.  
  1010.      Funzione    which_window:                 which_window:
  1011.      
  1012.      
  1013.      int Pcw_which_window(void);     int Pcw_which_window(void);
  1014.      
  1015.      
  1016.      
  1017.      Restituisce il  numero della finestra corrente. Se nessuna finestra
  1018.      e' aperta restituisce NOWIND.
  1019.  
  1020.                         Manuale d'uso PcWindow - pag. 28
  1021.  
  1022.  
  1023.  
  1024.      Funzione    version:                 version:
  1025.      
  1026.      
  1027.      int Pcw_version(void);     int Pcw_version(void);
  1028.      
  1029.      
  1030.      
  1031.      Restituisce il  numero della  versione del  programma. Il numero e'
  1032.      moltiplicato per 100, pertanto un valore di ritorno di 125 equivale
  1033.      alla versione  1.25. E' disponibile anche un identificatore pari al
  1034.      numero della  versione: vedere  a  tal  proposito  la  sezione  del
  1035.      manuale dedicata alle macro.
  1036.      
  1037.      E' importante  che il  programma in fase di esecuzione controlli il
  1038.      valore di  versione della libreria in modo da evitare di linkare un
  1039.      applicativo scritto  tenendo conto  di una determinata versione con
  1040.      un versione  piu' vecchia.  Consiglio pertanto  in testa al proprio
  1041.      programma, di  porre appena  dopo la  chiamata ad  init il seguente                                                        init            
  1042.      frammento di codice:
  1043.      
  1044.      
  1045.          if (Pcw_version() < __PCW__) {
  1046.      
  1047.               /* segnala errore   */
  1048.      
  1049.               exit (1);
  1050.          }
  1051.      
  1052.      
  1053.      In tal  modo il  programma  potra'  poi  essere  linkato  solo  con
  1054.      versioni maggiori  o uguali  a quella con cui e' stato compilato il
  1055.      programma stesso. La macro __PCW__ e' definita in pcw.h.
  1056.  
  1057.                         Manuale d'uso PcWindow - pag. 29
  1058.  
  1059.  
  1060.  
  1061.      Funzione    copyright:                 copyright:
  1062.      
  1063.      
  1064.      int Pcw_copyright(row)     int Pcw_copyright(row)
  1065.      unsigned int row;     unsigned int row;
  1066.      
  1067.      
  1068.      
  1069.      Stampa alla  linea row  un messaggio di copyright indicando il nome                        ___                                             
  1070.      del toolkit, il nome dell'autore, la versione e la data dell'ultima
  1071.      modifica. Ovviamente questa funzione non serve a niente, ma io l'ho
  1072.      messa lo stesso per comodita' mia.
  1073.      
  1074.      
  1075.      Viene ritornato sempre il valore OK.
  1076.  
  1077.                         Manuale d'uso PcWindow - pag. 30
  1078.  
  1079.  
  1080.  
  1081.      Funzione    set_speed:                 set_speed:
  1082.      
  1083.      
  1084.      int Pcw_set_speed(speed)     int Pcw_set_speed(speed)
  1085.      unsigned int speed;     unsigned int speed;
  1086.      
  1087.      
  1088.      
  1089.      Sceglie la  velocita' di  esecuzione degli effetti di movimento. Se
  1090.      questa funzione  non viene  usata, viene  assunto  per  default  la
  1091.      velocita'  FAST.   La  velocita'   di  esecuzione  e'  indipendente
  1092.      dall'hardware utilizzato, tranne che per la modalita' NOSYNC.
  1093.      
  1094.      
  1095.      L'unico parametro da passare e':
  1096.      
  1097.      speed : Velocita' che puo' valere SLOW, FAST, VERYFAST o NOSYNC.     _____                                                           
  1098.      
  1099.      
  1100.      Notare che  la velocita'  VERYFAST ha  effetto solo  su calcolatori
  1101.      dotati di  microprocessore 80286  e 80386  e  questo  e'  dovuto  a
  1102.      caratteristiche particolari  dell'hardware. La  velocita' NOSYNC e'
  1103.      la massima  possibile e  dipende dal calcolatore su cui sta girando
  1104.      il programma.
  1105.      
  1106.      
  1107.      Possibili valori di ritorno sono:
  1108.      
  1109.      OK     : Settaggio effettuato.
  1110.      ILLPAR : Parametro illegale.
  1111.  
  1112.                         Manuale d'uso PcWindow - pag. 31
  1113.  
  1114.  
  1115.  
  1116.      Funzione    no_flick:                 no_flick:
  1117.      
  1118.      
  1119.      void Pcw_no_flick(void)     void Pcw_no_flick(void)
  1120.      
  1121.      
  1122.      Questa funzione  serve per eliminare il flickering tipico di alcune
  1123.      schede  video.   Qualora  si   dovesse  notare   questo   tipo   di
  1124.      inconveniente, occorre  servirsi di questa funzione chiamandola una
  1125.      volta per tutte appena dopo aver chiamato la funzione define.                                                           define 
  1126.      Attenzione: una  volta chiamata  questa funzione  il  funzionamento     Attenzione                                                         
  1127.      delle varie  funzioni viene rallentato per cui va usata solo quando
  1128.      effettivamente ce  ne e'  bisogno, ed inoltre e' irreversibile, per
  1129.      cui non  e' possibile  eliminarne gli  effetti. Si  elencano schede
  1130.      video (o  computer) da  me provati  che necessitano  o  meno  della
  1131.      funzione.
  1132.      
  1133.      
  1134.      Necessitano della funzione:
  1135.      IBM CGA e compatibili, Olivetti M24.
  1136.      
  1137.      
  1138.      Non necessitano della funzione:
  1139.      IBM MDA, IBM EGA e compatibili, Hercules, NCR PC4i, IBM VGA e
  1140.      compatibili.
  1141.      
  1142.      
  1143.      La funzione non ritorna alcun valore.
  1144.      
  1145.      
  1146.      NOTA     NOTA     ____
  1147.      La funzione non ha effetto nell'ambiente OS/2 che e' sempre privo
  1148.      di flicker.
  1149.  
  1150.                         Manuale d'uso PcWindow - pag. 32
  1151.  
  1152.  
  1153.  
  1154.      Funzione    beep:                 beep:
  1155.      
  1156.      
  1157.      void Pcw_beep(void)     void Pcw_beep(void)
  1158.      
  1159.      
  1160.      Questa   funzione    fa   emettere   un   suono   di   avvertimento
  1161.      dall'altoparlante  del   calcolatore.  Non  e'  lo  stesso  che  si
  1162.      otterrebbe con  un printf("\a")  in quanto Pcw_beep emette un suono
  1163.      piu' acuto come frequenza e piu' corto di durata.
  1164.      
  1165.      
  1166.      NOTA     NOTA     ____
  1167.      Questa funzione e' implementata come macro.
  1168.  
  1169.                         Manuale d'uso PcWindow - pag. 33
  1170.  
  1171.  
  1172.  
  1173.      Funzione    tone:                 tone:
  1174.      
  1175.      
  1176.      void Pcw_tone(freq, dur)     void Pcw_tone(freq, dur)
  1177.      
  1178.      
  1179.      Questa  funzione   fa  emettere   un  suono  dall'altoparlante  del
  1180.      calcolatore, specificando frequenza e durata.
  1181.      
  1182.      
  1183.      I parametri da passare sono:
  1184.      
  1185.      freq: Frequenza espressa in Hertz della nota da generare.     ____                                                     
  1186.      
  1187.      dur: Durata espressa in millisecondi.     ___                                  
  1188.      
  1189.      
  1190.      Possibili valori di ritorno sono:
  1191.      
  1192.      OK       : Esecuzione eseguita.
  1193.      ILLPAR   : Parametri illegali.
  1194.      
  1195.      
  1196.      NOTA     NOTA     ____
  1197.      La precisione  della durata e' determinata dal tipo di Computer che
  1198.      si sta utilizzando.
  1199.  
  1200.                         Manuale d'uso PcWindow - pag. 34
  1201.  
  1202.  
  1203.  
  1204.      Funzione    cursor:                 cursor:
  1205.      
  1206.      
  1207.      int Pcw_cursor(mode)     int Pcw_cursor(mode)
  1208.      unsigned int mode;     unsigned int mode;
  1209.      
  1210.      Questa  funzione   permette  di  visualizzare  o  meno  il  cursore
  1211.      hardware.
  1212.      
  1213.      
  1214.      Il parametro mode  puo' valere ON e OFF, con ovvio significato.                 _____                                              
  1215.      
  1216.      
  1217.      Possibili valori di ritorno sono:
  1218.      
  1219.      OK     : Settaggio effettuato.
  1220.      ILLPAR : Parametro illegale.
  1221.  
  1222.                         Manuale d'uso PcWindow - pag. 35
  1223.  
  1224.  
  1225.  
  1226.      Funzione    cursor_type:                 cursor_type:
  1227.      
  1228.      
  1229.      int Pcw_cursor_type(type)     int Pcw_cursor_type(type)
  1230.      unsigned int type;     unsigned int type;
  1231.      
  1232.      Questa funzione  permette di  scegliere tra  due tipi  di  cursore:
  1233.      pieno o sottolineato.
  1234.      
  1235.      
  1236.      Il parametro  type   puo'  valere  BLOCK  o  UNDERLINE,  con  ovvio                 ______                                                 
  1237.      significato.
  1238.      
  1239.      
  1240.      Possibili valori di ritorno sono:
  1241.      
  1242.      OK     : Settaggio effettuato.
  1243.      ILLPAR : Parametro illegale.
  1244.      
  1245.      
  1246.      NOTA     NOTA     ____
  1247.      Dopo  la   chiamata   a   questa   funzione,   il   cursore   viene
  1248.      automaticamente  abilitato.   Se  non   e'  nelle   intenzioni  del
  1249.      programmatore, occorre far seguire a questa funzione una chiamata a
  1250.      Pcw_cursor(OFF);     Pcw_cursor(OFF) 
  1251.  
  1252.                         Manuale d'uso PcWindow - pag. 36
  1253.  
  1254.  
  1255.  
  1256.      Funzione      pos:                   pos:
  1257.      
  1258.      
  1259.      int Pcw_pos(num)     int Pcw_pos(num)
  1260.      unsigned int num;     unsigned int num;
  1261.      
  1262.      Questa funzione  consente di  leggere la  posizione della  finestra
  1263.      (coordinate dell'angolo  in alto  a sinistra), anche se la finestra
  1264.      non e' visualizzata.
  1265.      
  1266.      
  1267.      L'unico parametro da passare e' il numero della finestra.
  1268.      
  1269.      
  1270.      Possibili valori di ritorno sono:
  1271.      
  1272.      ILLPAR : Parametro illegale.
  1273.      NOTDEF : Finestra non definita.
  1274.      Un numero : il byte basso rappresenta la coordinata x (0-79) e il
  1275.               byte alto la coordinata y (0-24).
  1276.  
  1277.                         Manuale d'uso PcWindow - pag. 37
  1278.  
  1279.  
  1280.  
  1281.      Funzione      dim:                   dim:
  1282.      
  1283.      
  1284.      int Pcw_dim(num)     int Pcw_dim(num)
  1285.      unsigned int num;     unsigned int num;
  1286.      
  1287.      Questa funzione  consente di  leggere le  dimensioni attuali  della
  1288.      finestra (larghezza  e  altezza),  anche  se  la  finestra  non  e'
  1289.      visualizzata.
  1290.      
  1291.      
  1292.      L'unico parametro da passare e' il numero della finestra.
  1293.      
  1294.      
  1295.      Possibili valori di ritorno sono:
  1296.      
  1297.      ILLPAR : Parametro illegale.
  1298.      NOTDEF : Finestra non definita.
  1299.      Un numero : il byte basso rappresenta la larghezza (0-79) e il byte
  1300.               alto l'altezza (0-24).
  1301.  
  1302.                         Manuale d'uso PcWindow - pag. 38
  1303.  
  1304.  
  1305.  
  1306.      Funzione      first_free:                   first_free:
  1307.      
  1308.      
  1309.      int Pcw_first_free(void)     int Pcw_first_free(void)
  1310.      
  1311.      Questa funzione ritorna il primo numero di finestra disponibile per
  1312.      una eventuale  definizione. Puo'  essere utile  nel caso  in cui si
  1313.      debba scrivere una funzione di tipo "alarm" ovvero una funzione che
  1314.      visualizza un  unico messaggio  e attende la pressione di un tasto.
  1315.      In questi  casi infatti  non conviene  usare un  numero di finestra
  1316.      statico ma  sceglierlo dinamicamente  in modo da poterlo rilasciare
  1317.      mediante la funzione undef.
  1318.      
  1319.      
  1320.      Possibili valori di ritorno sono:
  1321.      
  1322.      NOWIND:  Nessun numero disponibile.
  1323.      Un numero : rappresenta il numero disponibile e sfruttabile.
  1324.  
  1325.                         Manuale d'uso PcWindow - pag. 39
  1326.  
  1327.  
  1328.  
  1329.      Funzione      is_open:                   is_open:
  1330.      
  1331.      
  1332.      int Pcw_is_open(num)     int Pcw_is_open(num)
  1333.      unsigned int num;     unsigned int num;
  1334.      
  1335.      Questa funzione permette di sapere se una finestra e' aperta o no.
  1336.      
  1337.      
  1338.      L'unico parametro da passare e' il numero della finestra.
  1339.      
  1340.      
  1341.      Possibili valori di ritorno sono:
  1342.      
  1343.      ILLPAR   : Parametro illegale.
  1344.      NOTDEF   : Finestra non definita.
  1345.      TRUE     : La finestra e' aperta.
  1346.      FALSE    : La finestra e' chiusa.
  1347.  
  1348.                         Manuale d'uso PcWindow - pag. 40
  1349.  
  1350.  
  1351.  
  1352.      Funzione      write_25:                   write_25:
  1353.      
  1354.      
  1355.      int Pcw_write_25(string, attr)     int Pcw_write_25(string, attr)
  1356.      char *string;     char *string;
  1357.      ATTR attr;     ATTR attr;
  1358.      
  1359.      Con questa  funzione e'  possibile scrivere  una stringa in 25esima
  1360.      riga.
  1361.      
  1362.      I parametri  da passare  sono: la stringa e l'attributo. Ovviamente
  1363.      la stringa  non puo' essere piu' lunga di 80 caratteri. Nel caso in
  1364.      cui sia  piu' corta, viene riempita a destra di blank con lo stesso
  1365.      attributo  attr.   Per  cancellare  la  stringa  in  seguito  basta
  1366.      richiamare di nuovo la funzione passando come parametri una stringa
  1367.      nulla e  l'attributo dello  sfondo,  oppure  chiamare  la  funzione
  1368.      clear_25.     clear_25 
  1369.      
  1370.      
  1371.      Possibili valori di ritorno sono:
  1372.      
  1373.      OK       : Stringa scritta correttamente.
  1374.      ILLPAR   : Parametro illegale (stringa troppo lunga).
  1375.      
  1376.      
  1377.      NOTA     NOTA
  1378.      Questa  funzione   scrive  direttamente  nella  25esima  linea  che
  1379.      pertanto deve  essere libera.  Qualunque cosa  e' scritta su questa
  1380.      linea viene irrimediabilmente cancellata.
  1381.  
  1382.                         Manuale d'uso PcWindow - pag. 41
  1383.  
  1384.  
  1385.  
  1386.      Funzione      clear_25:                   clear_25:
  1387.      
  1388.      
  1389.      void Pcw_clear_25(void)     void Pcw_clear_25(void)
  1390.      
  1391.      Questa  funzione   cancella  la  25esima  riga  dello  schermo  con
  1392.      l'attributo esistente  nel primo  carattere della stessa riga prima
  1393.      dell'invocazione   della    funzione   Pcw_write_25,   oppure   con                                            Pcw_write_25                
  1394.      l'attributo   usato    nell'ultima   invocazione   della   funzione
  1395.      Pcw_clear_screen.     Pcw_clear_screen 
  1396.      
  1397.      
  1398.      La funzione non accetta parametri e non restituisce alcun valore.
  1399.  
  1400.                         Manuale d'uso PcWindow - pag. 42
  1401.  
  1402.  
  1403.  
  1404.      Funzione      cpu_type:                   cpu_type:
  1405.      
  1406.      
  1407.      int Pcw_cpu_type(void)     int Pcw_cpu_type(void)
  1408.      
  1409.      Questa funzione consente di determinare il tipo di processore
  1410.      montato nel calcolatore su cui sta girando il programma.
  1411.      
  1412.      
  1413.      Possibili valori di ritorno sono:
  1414.      
  1415.      CPU_UNKNOWN : La funzione  non e'  in grado di determinare il tipo
  1416.               di CPU.
  1417.      CPU_8088,  CPU_8086,   CPU_80188,  CPU_80186,   CPU_V20,   CPU_V30,
  1418.               CPU_80286, CPU_80386 : con ovvio significato.
  1419.      
  1420.      
  1421.      NOTA     NOTA
  1422.      E' probabile che in taluni ambienti particolari la funzione non sia
  1423.      in grado  di determinare  correttamente il tipo di CPU. In tal caso
  1424.      segnalatemi il  fatto con le caratteristiche precise della macchina
  1425.      in modo da modificare la funzione.
  1426.  
  1427.                         Manuale d'uso PcWindow - pag. 43
  1428.  
  1429.  
  1430.  
  1431.      Funzione      video_card:                   video_card:
  1432.      
  1433.      
  1434.      int Pcw_video_card(void)     int Pcw_video_card(void)
  1435.      
  1436.      Questa funzione consente di determinare la scheda video montata nel
  1437.      calcolatore su cui gira il programma.
  1438.      
  1439.      
  1440.      Possibili valori di ritorno sono:
  1441.      
  1442.      VIDEO_UNKNOWN :    La funzione  non e'  in grado di determinare il
  1443.               tipo di scheda video.
  1444.      VIDEO_MONO,   VIDEO_HERC,    VIDEO_CGA,   VIDEO_EGA,    VIDEO_MCGA,
  1445.               VIDEO_VGA: con ovvio significato.
  1446.      
  1447.      
  1448.      NOTA     NOTA
  1449.      E' probabile che in taluni ambienti particolari la funzione non sia
  1450.      in grado  di determinare  correttamente il  tipo  di  scheda  video
  1451.      montata. In  tal caso  segnalatemi il  fatto con le caratteristiche
  1452.      precise della macchina in modo da modificare la funzione.
  1453.  
  1454.                         Manuale d'uso PcWindow - pag. 44
  1455.  
  1456.  
  1457.  
  1458.      Funzione      is_color:                   is_color:
  1459.      
  1460.      
  1461.      BOOLEAN Pcw_is_color(void)     BOOLEAN Pcw_is_color(void)
  1462.      
  1463.      Questa funzione  consente di  stabilire  se  la  scheda  video  del
  1464.      calcolatore su cui gira il programma e' a colori o no.
  1465.      
  1466.      
  1467.      Possibili valori di ritorno sono:
  1468.      
  1469.      TRUE     : Scheda video a colori.
  1470.      FALSE    : Scheda video monocromatica.
  1471.  
  1472.                         Manuale d'uso PcWindow - pag. 45
  1473.  
  1474.  
  1475.  
  1476.      Funzione      make_curremt:                   make_curremt:
  1477.      
  1478.      
  1479.      int Pcw_make_current(num)     int Pcw_make_current(num)
  1480.      unsigned int num;     unsigned int num;
  1481.      
  1482.      Questa  funzione   consente  di   rendere  corrente   una  finestra
  1483.      sovrapposta da  altre. Attualmente  il tutto viene effettuato in un
  1484.      modo alquanto  lento e  cioe' chiudendo  le finestre  sovrapposte e
  1485.      riaprendole in  ordine inverso,  ma in  futuro  la  funzione  sara'
  1486.      ottimizzata. L'importante  per il  momento e'  che questa  esiste e
  1487.      funziona.
  1488.      
  1489.      
  1490.      L'unico parametro da passare e' num che deve essere il numero della                                     ___                                
  1491.      finestra che si vuole rendere corrente. Ovviamente la finestra deve
  1492.      essere aperta.
  1493.      
  1494.      
  1495.      Possibili valori di ritorno sono:
  1496.      
  1497.      OK       : Operazione effettuata correttamente.
  1498.      ILLPAR   : Parametro illegale.
  1499.      NOTDEF   : Finestra non definita.
  1500.      NOWIND   : Finestra non aperta.
  1501.  
  1502.                         Manuale d'uso PcWindow - pag. 46
  1503.  
  1504.  
  1505.  
  1506.      Funzione      set_option:                   set_option:
  1507.      
  1508.      
  1509.      int Pcw_set_option(cmd)     int Pcw_set_option(cmd)
  1510.      char *cmd;     char *cmd;
  1511.      
  1512.      Questa funzione  permette di  modificare  una  serie  di  parametri
  1513.      globali all'ambiente Pcw.
  1514.      Occorre passare una stringa che rispecchia la seguente sintassi:
  1515.      "PARAMETER=VALUE{;PARAMETER=VALUE}",  dove  PARAMETER  e'  il  nome
  1516.      simbolico del  parametro globale  e VALUE e il valore da assegnare.
  1517.      Possono  essere   fatte  piu'  assegnazioni  nella  stessa  stringa
  1518.      separandole con  il carattere  ';'. Attenzione a non inserire spazi
  1519.      tra i parametri o tra i valori.
  1520.      
  1521.      
  1522.      I parametri attualmente accettati sono:
  1523.      
  1524.      BEEP_ON_ERROR : Puo'  valere YES  oppure NO  a seconda se si vuole
  1525.               abilitare  o   meno  la  segnalazione  di  errore  durante
  1526.               l'input.
  1527.      PAD_FIELD: Se  messo a  YES, i  campi  in  uscita  dalla  funzione
  1528.               Pcw_input sono  riempiti di  blank (nel  caso  in  cui  la
  1529.               lunghezza sia  minore della  dimensione massima).  I blank
  1530.               sono inseriti  a sinistra  per i campi numerici e a destra
  1531.               per i campi alfanumerici.
  1532.      LEFT_TITLE :  Ridefinizione del  carattere a  sinistra  del  titolo
  1533.               delle finestre. Un numero intero che indica il codice  ASC
  1534.               II del carattere.
  1535.      RIGHT_TITLE : Analogo al caso precedente, ma a destra.
  1536.      DECIMAL_SEP : Il codice  Ascii del  carattere di separazione tra i
  1537.               numeri decimali.
  1538.      ENABLE_CHAR : Il codice  Ascii del  carattere identificativo degli
  1539.               elementi abilitati nei submenu.
  1540.           
  1541.      
  1542.      Possibili valori di ritorno sono:
  1543.      
  1544.      OK     : Operazione effettuata correttamente.
  1545.      ILLPAR : Parametro illegale.
  1546.      
  1547.      
  1548.      Esempi d'uso della funzione:
  1549.      
  1550.          Pcw_set_option("BEEP_ON_ERROR=NO");
  1551.      
  1552.          Pcw_set_option("LEFT_TITLE=91;RIGHT_TITLE=93;BEEP_ON_ERROR=YES   
  1553.               ;DECIMAL_SEP=44");
  1554.  
  1555.                         Manuale d'uso PcWindow - pag. 47
  1556.  
  1557.  
  1558.  
  1559.       Funzioni per la gestione dei menu' pull-down.      Funzioni per la gestione dei menu' pull-down.
  1560.      
  1561.      
  1562.      Quando l'utente  deve effettuare  una scelta  tra  varie  possibili
  1563.      organizzate  secondo  una  struttura  ad  albero  e'  molto  comodo
  1564.      organizzare il  tutto secondo  lo stile pull-down, ovvero le scelte
  1565.      principali sono  visualizzate in una riga orizzontale in alto sullo
  1566.      schermo   e   l'utente   puo'   selezionarle   mediante   pressione
  1567.      contemporanea del  tasto Alt  e della  prima lettera del nome della
  1568.      scelta che  si vuole  effettuare. A questo punto viene visualizzata
  1569.      una box  verticale,  in  corrispondenza  della  scelta  effettuata,
  1570.      contenente le  opzioni di  secondo livello, delle quali la prima e'
  1571.      evidenziata. L'utente puo' allora effettuare la sua scelta battendo
  1572.      l'iniziale del  nome (senza  il tasto  ALT) oppure  muoversi  nelle
  1573.      quattro direzioni  mediante  i  tasti  cursore.  In  ogni  caso  in
  1574.      appendice e' riportata un'apposita sezione dedicata all'utente dove
  1575.      vengono  descritti   i  comandi.   Le  scelte   selezionabili  sono
  1576.      identificate dalla  presenza alla  loro sinistra  di  un  carattere
  1577.      particolare (carattere di abilitazione: vedi Pcw_set_option).                                                  Pcw_set_option  
  1578.      
  1579.      Parametri caratteristici di un menu pull-down sono:
  1580.      - Il  numero dei  sub-menu, ovvero  il numero  di scelte  di  primo
  1581.               livello che compaiono sulla linea orizzontale.
  1582.      - Il  numero di  elementi, ovvero  il numero  di scelte  di secondo
  1583.               livello o  definitive che  compaiono  in  seguito  ad  una
  1584.               selezione di un sub-menu.
  1585.      
  1586.      I  nomi  di  queste  funzioni  seguono  la  convenzione  di  essere
  1587.      preceduti dal prefisso Pcm_.
  1588.  
  1589.                         Manuale d'uso PcWindow - pag. 48
  1590.  
  1591.  
  1592.  
  1593.      Funzione    init:                 init:
  1594.      
  1595.      
  1596.      int Pcm_init(maxmen)     int Pcm_init(maxmen)
  1597.      unsigned int maxmen;     unsigned int maxmen;
  1598.      
  1599.      
  1600.      Questa e'  la prima funzione che occorre chiamare per inizializzare
  1601.      il  sottoprogramma   per  la   gestione  dei  menu'  pull-down.  E'
  1602.      necessario chiamare questa funzione DOPO aver chiamato Pcw_init.                                                            Pcw_init 
  1603.      
  1604.      
  1605.      L'unico parametro da passare e':
  1606.      
  1607.      maxmen :  il numero di menu' da definire (nella maggior parte delle     ______                                                             
  1608.               applicazioni e' 1).
  1609.      
  1610.      
  1611.      Possibili valori di ritorno sono:
  1612.      
  1613.      OK     : inizializzazione effettuata.
  1614.      ALRDEF : Il gestore e' gia' stato inizializzato precedentemente.
  1615.      OUTMEM : Non esiste memoria a sufficienza.
  1616.      NOTDEF : non e' stata chiamata la funzione Pcw_init()
  1617.  
  1618.                         Manuale d'uso PcWindow - pag. 49
  1619.  
  1620.  
  1621.  
  1622.      Funzione    define:                 define:
  1623.      
  1624.      
  1625.      int Pcm_define(num, len, subnum, itnum, wsize, menu_att,     int Pcm_define(num, len, subnum, itnum, wsize, menu_att,
  1626.      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,
  1627.      menu_type, menu_line_type, sub_line_type, is_help)     menu_type, menu_line_type, sub_line_type, is_help)
  1628.      unsigned int num, len, subnum, itnum, wsize;     unsigned int num, len, subnum, itnum, wsize;
  1629.      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,
  1630.      bord_sub_att;     bord_sub_att;
  1631.      CHAR **descr;     CHAR **descr;
  1632.      unsigned int menu_type, menu_line_type, sub_line_type;     unsigned int menu_type, menu_line_type, sub_line_type;
  1633.      BOOLEAN is_help;     BOOLEAN is_help;
  1634.      
  1635.      Questa funzione consente di definire un menu'.
  1636.      
  1637.      
  1638.      Il significato dei parametri e' il seguente:
  1639.      
  1640.      num : Numero del menu' da definire (si parte da 0).     ___                                                
  1641.      
  1642.      len  :  Lunghezza  in  orizzontale  del  menu'  (in  colonne  senza     ___                                                                
  1643.               comprendere l'eventuale bordo).
  1644.      
  1645.      subnum : Numero di sub-menu' (scelte possibili in orizzontale).     ______                                                         
  1646.      
  1647.      itnum : Numero max di scelte verticali.     _____                                  
  1648.      
  1649.      wsize :  Ampiezza dell  finestra per  gli elementi di un sub-menu'.     _____                                                              
  1650.               Questa ampiezza  puo' essere  minore o uguale a itnum. Nel
  1651.               caso in  cui sia  minore, si ha che la finestra che ospita
  1652.               gli elementi  e' piu'  piccola e l'utente puo' scorrere le
  1653.               varie scelte mediante i tasti cursore (basso e alto).
  1654.      
  1655.      menu_att : Attributo del menu.     ________                      
  1656.      
  1657.      sel_sub_att: Attributo sub-menu' selezionato.     ___________                                  
  1658.      
  1659.      sub_att: Attributo normale sub-menu'.     _______                              
  1660.      
  1661.      sel_item_att: Attributo elemento selezionato.     ____________                                 
  1662.      
  1663.      bord_att : Attributo del bordo.     ________                       
  1664.      
  1665.      bord_sub_att : Attributo del bordo del pull-down.     ____________                                     
  1666.      
  1667.      descr: puntatore all'array monodimensionale di stringhe checontiene     _____                                                              
  1668.               le voci  del menu. Questo array deve avere dimensioni pari
  1669.               a subnum  *  intnum.  L'ordine  di  memorizzazione  e'  da
  1670.               sinistra a destra e dall'alto in basso, cioe' e' del tipo:
  1671.      
  1672.               "Voce_1", "sub_10", "sub_11", "sub_12",               ______    ______    ______    ______  
  1673.               "Voce_2", "sub_20", "sub_21", "sub_22",..ecc.               ______    ______    ______    ______        
  1674.  
  1675.                         Manuale d'uso PcWindow - pag. 50
  1676.  
  1677.  
  1678.  
  1679.               
  1680.               Tutte le voci inutilizzate devono essere poste pari a "\0"
  1681.               e non e' possibile avere un submenu vuoto, cioe' con tutti
  1682.               gli elementi  nulli. Il  programma considera come tasti di
  1683.               attivazione per  i sub-menu'  e per  gli elementi la prima
  1684.               lettera  maiuscola  nel  nome  quando  esiste,  altrimenti
  1685.               l'iniziale del nome.
  1686.      
  1687.               Attenzione: per problemi con l'MS-DOS non usare come tasto              Attenzione                                                
  1688.               di  attivazione  la  lettera  Q  o  la  lettera  R.  Altra
  1689.               avvertenza: l'array delle descrizioni deve essere allocato
  1690.               staticamente in  quanto  la  funzione  memorizza  solo  il
  1691.               puntatore ad esso.
  1692.      
  1693.      menu_type :  tipo di  menu: valori ammessi SIMPLE, ONELINE, BORDER.     _________                                                          
  1694.               Dove  con   SIMPLE  si  intende  un  menu'  in  cui  viene
  1695.               visualizzata solo  la riga  orizzontale contenente  i sub-
  1696.               menu'  senza   bordi,  ONELINE   invece  mette  una  linea
  1697.               orizzontale di  separazione sotto  alla riga dei sub-menu,
  1698.               BORDER racchiude  tutta la  riga  dei  sub-menu'  con  una
  1699.               cornice.
  1700.      
  1701.      menu_line_type :  Tipo linea di delimitazione dei menu: LT_SINGLE o     ______________                                                     
  1702.               LT_DOUBLE.
  1703.      
  1704.      sub_line_type :  Tipo linea  di  delimitazione  menu'  pull-down  :     _____________                                                      
  1705.               LT_SINGLE o LT_DOUBLE.
  1706.      
  1707.      is_help : flag per la presenza o meno di help. L'help aggiunge come     _______                                                            
  1708.               primo carattere a sinistra sulla riga dei sub-menu' il car
  1709.               attere di help.
  1710.      
  1711.      
  1712.      Valori possibili di ritorno sono:
  1713.      
  1714.      OK     : Definizione eseguita correttamente.
  1715.      NOTDEF : Inizializzazione non effettuata.
  1716.      ALRDEF : Definizione gia' effettuata precedentemente.
  1717.      ILLPAR : Parametri illegali.
  1718.  
  1719.                         Manuale d'uso PcWindow - pag. 51
  1720.  
  1721.  
  1722.  
  1723.      Funzione    open:            e    open:
  1724.      
  1725.      
  1726.      int Pcm_open(num)     int Pcm_open(num)
  1727.      unsigned int num;     unsigned int num;
  1728.      
  1729.      Con questa  funzione si  ottiene la  visualizzazione del  menu' sul
  1730.      video.
  1731.      
  1732.      
  1733.      Parametri:
  1734.      
  1735.      num: e' il numero del menu' da visualizzare.     ___                                         
  1736.      
  1737.      
  1738.      I possibili valori di ritorno sono:
  1739.      
  1740.      OK     : Operazione effettuata correttamente.
  1741.      ILLPAR : Numero di menu' illegale.
  1742.      NOTDEF : Menu' non definito.
  1743.  
  1744.                         Manuale d'uso PcWindow - pag. 52
  1745.  
  1746.  
  1747.  
  1748.      Funzione    enter_menu:                 enter_menu:
  1749.      
  1750.      
  1751.      int Pcm_enter_menu(key,exit_mode)     int Pcm_enter_menu(key,exit_mode)
  1752.      char key;     char key;
  1753.      unsigned int exit_mode;     unsigned int exit_mode;
  1754.      
  1755.      Con questa  funzione si  passa il controllo del programma al menu',
  1756.      che si  occupa di  controllare la  tastiera e  aprire o  chiudere i
  1757.      relativi sub-menu'.  Aprendo un  sub-menu' ne viene automaticamente
  1758.      selezionata la prima voce.
  1759.      
  1760.      
  1761.      Parametri:
  1762.      
  1763.      key :  carattere di  ingresso  (ALT+char)  o  NOCHAR.  Specificando     ___                                                                
  1764.               NOCHAR non  si ha  alcuna apertura di sub-menu' e si resta
  1765.               in attesa  che l'utente prema un tasto. Per specificare un
  1766.               carattere in  ingresso questo  deve  essere  inviato  come
  1767.               codice di scansione della tastiera (ALT + carattere).
  1768.      
  1769.      exit_mode :  modo di  uscita; valori  ammessi sono  NORMAL, FKEYS e     _________                                                          
  1770.               ALL. Con  NORMAL, l'utente  puo'  uscire  dal  menu'  solo
  1771.               selezionando un'opportuna  voce. Con  FKEYS, l'utente puo'
  1772.               uscire dal  menu' anche  con uno dei dieci tasti funzione.
  1773.               Infine con  l'opzione ALL e' possibile uscire anche con le
  1774.               combinazioni  Shift   +  tasti   funzione,  Ctrl  +  Tasti
  1775.               funzione, Alt + Tasti funzione. In ogni caso l'utente puo'
  1776.               sempre abortire le scelte premendo il tasto ESC.
  1777.      
  1778.      
  1779.      Come valore  di ritorno la funzione fornisce un codice numerico che
  1780.      indica il tipo di uscita dal menu' con i seguenti significati:
  1781.      
  1782.      Se il  valore di  ritorno e' positivo, questo rappresenta la scelta
  1783.      effettuata dall'utente  che e'  codificata come segue: Il byte alto
  1784.      rappresenta il numero di sub-menu' [1..n] e il byte basso il numero
  1785.      di elemento all'interno del sub-menu' [0..m].
  1786.      Un valore  di ritorno pari a 0x0000 indica che l'utente ha abortito
  1787.      la fase con la pressione del tasto ESC.
  1788.      
  1789.      Un valore  negativo rappresenta l'uscita con uno dei tasti funzione
  1790.      per cui dopo averlo cambiato di segno, esso rappresenta la somma di
  1791.      una costante  predefinita e  di un  numero da  1 a  10. Le costanti
  1792.      predefinite sono:
  1793.      
  1794.      IN_FKEY       : Tasti funzione da F1 a F10.
  1795.      IN_SHFKEY     : Tasti funzione da Shift + F1 a Shift + F10.
  1796.      IN_CTRLFKEY   : Tasti funzione da Ctrl + F1 a Ctrl + F10.
  1797.      IN_ALTFKEY    : Tasti funzione da Alt + F1 a Alt + F10.
  1798.      
  1799.      
  1800.      Ad esempio,  se la funzione ritorna il valore  -(IN_SHFKEY+4), vuol
  1801.      dire che dal menu l'utente e' uscito con Shift F4.
  1802.  
  1803.                         Manuale d'uso PcWindow - pag. 53
  1804.  
  1805.  
  1806.  
  1807.      Funzione    close:                 close:
  1808.      
  1809.      
  1810.      int Pcm_close(void)     int Pcm_close(void)
  1811.      
  1812.      Chiude il  menu'  precedentemente  visualizzato,  ripristinando  lo
  1813.      stato del  video precedente  all'apertura del  menu' e  permettendo
  1814.      cosi' l'apertura di altri menu'.
  1815.      
  1816.      
  1817.      Valori ritornati:
  1818.      
  1819.      OK     : chiusura effettuata.
  1820.      NOTDEF : non c'e' un menu' correntemente aperto.
  1821.  
  1822.                         Manuale d'uso PcWindow - pag. 54
  1823.  
  1824.  
  1825.  
  1826.      Funzione    ext_desc:                 ext_desc:
  1827.      
  1828.      
  1829.      int Pcm_ext_desc(num, attr, desc)     int Pcm_ext_desc(num, attr, desc)
  1830.      unsigned int num;     unsigned int num;
  1831.      ATTR attr;     ATTR attr;
  1832.      char **desc;     char **desc;
  1833.      
  1834.      Questa funzione  consente di abbinare ad un menu pull-down una riga
  1835.      di descrizioni.  In questo  modo l'utente che entra nel menu quando
  1836.      va  a   selezionare  una  voce  vede  anche  in  25esima  riga  una
  1837.      indicazione della  funzione piu'  dettagliata di  quanto non  possa
  1838.      essere il  solo nome  della funzione. Ovviamente se questa funzione
  1839.      non viene invocata, i menu saranno visualizzati normalmente.
  1840.      
  1841.      Parametri:
  1842.      
  1843.      num:Il numero del menu a cui agganciare le descrizioni aggiuntive.     ___                                                               
  1844.      
  1845.      attr: L'attributo con cui visualizzare le informazioni aggiuntive.     ____                                                              
  1846.      
  1847.      desc: Un  array di stringhe in un formato simile a quello usato per     ____                                                               
  1848.               la funzione  Pcm_define, con  la differenza  che non vanno
  1849.               inserite le  descrizioni per  i sub-menu,  ma solo per gli
  1850.               elementi.
  1851.      
  1852.      
  1853.      Possibili valori di ritorno sono:
  1854.      
  1855.      OK       : Abbinamento effettuato.
  1856.      ILLPAR   : Parametro illegale.
  1857.      NOTDEF   : Menu non definito.
  1858.      
  1859.      
  1860.      NOTA     NOTA     ____
  1861.      La funzione  memorizza solo  il puntatore  alle stringhe  e  quindi
  1862.      queste devono  essere allocate  staticamente. La  lunghezza massima
  1863.      delle stringhe e' ovviamente 80 caratteri.
  1864.  
  1865.                         Manuale d'uso PcWindow - pag. 55
  1866.  
  1867.  
  1868.  
  1869.      Funzione    enable & disable:            e    enable & disable:
  1870.      
  1871.      
  1872.      int Pcm_enable(item)     int Pcm_enable(item)
  1873.      unsigned int item;     unsigned int item;
  1874.      
  1875.      int Pcm_disable(item)     int Pcm_disable(item)
  1876.      unsigned int item;     unsigned int item;
  1877.      
  1878.      
  1879.      Mediante queste  due funzioni e' possibile abilitare e disabilitare
  1880.      degli   elementi    all'interno   del   menu   corrente.   All'atto
  1881.      dell'apertura del  menu, tutti  gli elementi  sono  automaticamente
  1882.      abilitati. Un  elemento abilitato  e' caratterizzato dalla presenza
  1883.      alla sua  sinistra di un carattere particolare, di solito il blocco
  1884.      tondo, ma  ridefinibile mediante  la funzione  Pcw_set_option e  il                                                    Pcw_set_option      
  1885.      parametro ENABLE_CHAR.  Gli elementi  non abilitati, se selezionati
  1886.      dall'utente non fanno uscire dal menu, ma portano alla segnalazione
  1887.      dell'errore (sempre che sia abilitata la funzione BEEP_ON_ERROR).
  1888.      
  1889.      
  1890.      L'unico parametro da passare e':
  1891.      
  1892.      item: e' un numero composto dal numero del submenu (a partire da 1)     ____                                                               
  1893.               nel byte  alto e  dal numero dell'elemento all'interno del
  1894.               submenu (a partire da 0) nel byte basso.
  1895.      
  1896.      
  1897.      I possibili valori di ritorno sono:
  1898.      
  1899.      OK     : Operazione effettuata correttamente.
  1900.      ILLPAR : Parametri illegali.
  1901.      NOTDEF : Menu' non definito.
  1902.  
  1903.                         Manuale d'uso PcWindow - pag. 56
  1904.  
  1905.  
  1906.  
  1907.      Funzioni per la gestione dell'input controllato.     Funzioni per la gestione dell'input controllato.
  1908.      
  1909.      
  1910.      La gestione  dell'input controllato  rientra  nella  categoria  dei
  1911.      problemi legati  alla necessita' di rendere un programma sicuro nei
  1912.      confronti dell'utente  come consistenza  dei dati,  ovvero fare  in
  1913.      modo che l'utente possa inserire negli appositi campi di input solo
  1914.      ed esclusivamente  i dati  del tipo  richiesto. Un  campo di  input
  1915.      pertanto  e'   caratterizzato  fondamentalmente  da  una  lunghezza
  1916.      espressa in  caratteri e da un tipo dei dati da esso ospitabili. In
  1917.      appendice e'  riportata un'apposita  sezione con  le  modalita'  di
  1918.      editing per l'input.
  1919.  
  1920.                         Manuale d'uso PcWindow - pag. 57
  1921.  
  1922.  
  1923.  
  1924.      Funzione    input:                 input:
  1925.      
  1926.      
  1927.      int Pcw_input(type, x, y, l, def, val)     int Pcw_input(type, x, y, l, def, val)
  1928.      unsigned int type, x, y, l;     unsigned int type, x, y, l;
  1929.      char *def, *val;     char *def, *val;
  1930.      
  1931.      
  1932.      La funzione  consente di effettuare l'input controllato all'interno
  1933.      della finestra corrente (e' anche possibile solo la visualizzazione
  1934.      di un valore: vedi set_input_flag e set_input_mode).                        set_input_flag   set_input_mode  
  1935.      Il funzionamento  dell'input dal  punto  di  vista  dell'utente  e'
  1936.      descritto in appendice.
  1937.      
  1938.      
  1939.      I parametri da passare sono:
  1940.      
  1941.      type : Tipo del dato da leggere fra i seguenti:     ____                                           
  1942.      
  1943.          IT_ALFANUM:  sono accettati tutti i caratteri ASCII.
  1944.          IT_ALFAB:    sono accettate solo le lettere e lo spazio.
  1945.          IT_ALFABUPP: come IT_ALFAB, ma con conversione in maiuscolo.
  1946.          IT_ALFANUPP: come IT_ALFANUM, ma con conversione in maiuscolo.
  1947.          IT_INTEGER:  solo le cifre da 0 a 9.
  1948.          IT_CODE:      Come  IT_INTEGER, ma  con la  differenza che  il
  1949.               campo e' riempito a sinistra con caratteri '0'.
  1950.          IT_FIXED?:    (?=1,2,3)  numero in  virgola fissa  con 1,2  o 3
  1951.               decimali.
  1952.          IT_DATE:     Una data con controllo di validita'.
  1953.          IT_LOGICAL:  Un unico carattere che puo' essere S o N.
  1954.          IT_HOUR:     Ora nel formato hh:mm, con controllo di validita'.
  1955.          IT_HEX:      Un valore esadecimale.
  1956.          IT_REAL:       Un  numero   in  virgola  mobile  opzionalmente
  1957.               preceduto dal segno .
  1958.      
  1959.      
  1960.      x, y  : Coordinate  all'interno della  finestra del primo carattere     ____                                                               
  1961.               del campo.
  1962.      
  1963.      l : Lunghezza del campo. Per alcuni tipi questo parametro non ha     _                                                               
  1964.               importanza in quanto viene assunto il valore di default:
  1965.      
  1966.                    IT_DATE    8 caratteri
  1967.                    IT_LOGICAL 1 carattere
  1968.                    IT_HOUR    5 caratteri.
  1969.      
  1970.      
  1971.      def :  Stringa di  caratteri da passare come default per consentire     ___                                                                
  1972.               la modifica  da parte  dell'operatore. Eventuali  blank in
  1973.               eccesso sono automaticamente rimossi. Per il campo IT_DATE
  1974.               non e' possibile passare stringhe incomplete del tipo "  /
  1975.               "; la  funzione  accetta  invece  stringa  nulla,  stringa
  1976.               contenente un  numero variabile  di blank  da 1  a 8  e la
  1977.  
  1978.                         Manuale d'uso PcWindow - pag. 58
  1979.  
  1980.  
  1981.  
  1982.               stringa "   /   /   ".  Discorso  analogo  e'  quello  che
  1983.               riguarda il tipo IT_HOUR.
  1984.      
  1985.      val : Stringa in uscita dalla funzione contenente il dato letto.Que     ___                                                                
  1986.               sta stringa  deve essere  allocata a  cura  del  programma
  1987.               chiamante e deve avere una lunghezza minima pari al valore
  1988.               del parametro  l aumentato di 1 e questo per permettere la
  1989.               memorizzazione del carattere \0 come terminatore.
  1990.               Per i  campi numerici,  se l'utente  immette degli  zeri a
  1991.               sinistra del numero questi sono automaticamente eliminati.
  1992.               Un eventuale  valore  nullo  viene  covertito  a  "0";  ad
  1993.               esempio "000",  "0.00", ".00",  "0." diventano  tutti "0".
  1994.               Invece "000.05", ".05" diventano "0.05".
  1995.               Se  viene   usata  l'opzione   PAD_FIELD  (vedi   funzione
  1996.               Pcw_set_option), la stringa in uscita viene sempre resa di              Pcw_set_option                                            
  1997.               lunghezza pari  ad l  mediante  inserimento  di  blank  (a                                 _                                      
  1998.               sinistra  per   i  campi   IT_INTEGER,  IT_REAL,   IT_HEX,
  1999.               IT_FIXED? o  a destra per i campi IT_ALFANUM, IT_ALFABUPP,
  2000.               IT_ALFANUPP).
  2001.      
  2002.      
  2003.      Possibili valori di ritorno sono:
  2004.      
  2005.      OK      : L'input e' avvenuto ed e' stato terminato con il RETURN.
  2006.      ILLPAR  : Parametri illegali.
  2007.      NOWIND  : Nessuna finestra aperta.
  2008.      IN_CRU  : Input terminato con il tasto Cursor Up.
  2009.      IN_CRD  : Input terminato con il tasto Cursor Down.
  2010.      IN_CPU  : Input terminato con il tasto Page Up.
  2011.      IN_CPD  : Input terminato con il tasto Page Down.
  2012.      IN_ESC  : Input terminato con il tasto ESC.
  2013.      IN_CCPU : Input terminato con il tasto Control+Page Up.
  2014.      IN_CCPD : Input terminato con il tasto Control+Page Down.
  2015.      
  2016.      
  2017.      Per l'uscita mediante tasti funzione, il codice e' formato dalla
  2018.      somma di una costante predefinita e un numero da 1 a 10.
  2019.      
  2020.      Le costanti sono:
  2021.      
  2022.      IN_FKEY       : Input terminato con un tasto funzione da F1 a F10.
  2023.      IN_SHFKEY     : Input terminato con un tasto funz. da Shift+F1 a
  2024.               Shift+F10.
  2025.      IN_CTRLFKEY   : Input term. con un tasto funz. da Ctrl+F1 a
  2026.               Ctrl+F10.
  2027.      IN_ALTFKEY    : Input term. con un tasto funz. da Alt+F1 a
  2028.               Alt+F10.
  2029.      
  2030.      
  2031.      NOTA     NOTA     ____
  2032.      Nelle versioni precedenti di PcWindow, le costanti che definivano i
  2033.      possibili tipi  di  input  erano  diverse  dalle  attuali.  Occorre
  2034.  
  2035.                         Manuale d'uso PcWindow - pag. 59
  2036.  
  2037.  
  2038.  
  2039.      pertanto provvedere  a modificare eventuali programmi scritti prima
  2040.      dell'attuale versione di PcWindow. E' comunque possibile continuare
  2041.      ad usare  la vecchia  nomenclatura definendo  la  macro  OLD_PCW  o
  2042.      nell'invocazione al compilatore o mettendo in testa ai programmi la
  2043.      direttiva #define OLD_PCW appena prima di #include <pcw.h>               _______________                 ________________
  2044.  
  2045.                         Manuale d'uso PcWindow - pag. 60
  2046.  
  2047.  
  2048.  
  2049.      Funzione    set_input_mode:                 set_input_mode:
  2050.      
  2051.      
  2052.      int Pcw_set_input_mode(fchar, inpatt, visatt, endmode)     int Pcw_set_input_mode(fchar, inpatt, visatt, endmode)
  2053.      char fchar;     char fchar;
  2054.      ATTR inpatt, visatt;     ATTR inpatt, visatt;
  2055.      unsigned int endmode;     unsigned int endmode;
  2056.      
  2057.      
  2058.      Questa funzione  consente di  impostare una  serie di parametri che
  2059.      influenzano il comportamento della funzione input.
  2060.      I parametri da passare sono i seguenti:
  2061.      
  2062.      fchar : Carattere da usare per riempire il campo nelle posizioni in     _____                                                              
  2063.               cui non  vi sono  caratteri durante  la fase  di input. Si
  2064.               puo' passare  un qualunque  carattere stampabile o si puo'
  2065.               usare uno dei caratteri predefiniti che sono:
  2066.      
  2067.                    BLANK      spazio vuoto
  2068.                    POINT      punto
  2069.                    UNDERLINE  sottolineatura
  2070.                    STAR       asterisco
  2071.                    DIAMOND    diamantino
  2072.                    BLOCK      blocco (punto quadrato).
  2073.      
  2074.      inpatt : Attributo da usarsi durante l'input.     ______                                       
  2075.      
  2076.      visatt : Attributo da usarsi dopo l'input.     ______                                    
  2077.      
  2078.      endmode : Modalita' con cui deve terminare l'input fra le seguenti:     _______                                                            
  2079.               NORMAL : l'input puo' terminare solo con il tasto RETURN.
  2080.               FKEYS   : l'input puo' terminare con il tasto RETURN o con
  2081.                    i tasti  funzione (da  soli, con Shift, con Alt e con
  2082.                    Ctrl).
  2083.               CURS   :  l'input puo' terminare con il tasto RETURN o con i
  2084.                    tasti: Crsr  Up, Crsr  Down, PgUp,  PgDn,  Ctrl+PgUp,
  2085.                    Ctrl+PgDn, Esc.
  2086.               ALL    : Combina FKEYS e CURS.
  2087.      
  2088.      Se la  funzione non  viene chiamata,  vengono  assunti  i  seguenti
  2089.      default:    fchar=BLANK,     inpatt=attrib(WHITE,NORMAL,BLACK,FIX),
  2090.      visatt=attrib(BLACK,NORMAL,WHITE,FIX), endmode=NORMAL.
  2091.      
  2092.      
  2093.      Possibili valori di ritorno sono:
  2094.      
  2095.      OK     : settaggio effettuato.
  2096.      ILLPAR : Parametri illegali.
  2097.  
  2098.                         Manuale d'uso PcWindow - pag. 61
  2099.  
  2100.  
  2101.  
  2102.      Funzione    set_input_flag:                 set_input_flag:
  2103.      
  2104.      
  2105.      int Pcw_set_input_flag(mode)     int Pcw_set_input_flag(mode)
  2106.      unsigned int mode;     unsigned int mode;
  2107.      
  2108.      
  2109.      Questa funzione  serve per  stabilire se  la  funzione  input  deve
  2110.      effettuare l'input  vero e proprio o solamente visualizzare il dato
  2111.      di default. L'utilita' di questa modalita' sta nel fatto che in una
  2112.      maschera di  input conviene prima far comparire tutti i campi e poi
  2113.      effettuare l'input.
  2114.      
  2115.      
  2116.      L'unico parametro da passare e':
  2117.      
  2118.      mode : INP per input e VIS per visualizzazione.     ____                                           
  2119.      
  2120.      
  2121.      Se la funzione non viene invocata, viene assunto per default il
  2122.      valore INP.
  2123.      
  2124.      
  2125.      Possibili valori di ritorno sono:
  2126.      
  2127.      OK     : Settaggio effettuato.
  2128.      ILLPAR : Parametro illegale.
  2129.  
  2130.                         Manuale d'uso PcWindow - pag. 62
  2131.  
  2132.  
  2133.  
  2134.      Funzione    get_date:                 get_date:
  2135.      
  2136.      
  2137.      char *Pcw_get_date(string)     char *Pcw_get_date(string)
  2138.      char *string;     char *string;
  2139.      
  2140.      Questa funzione  legge la  data attuale  dal DOS e la ritorna nella
  2141.      stringa string nel formato GG/MM/AA.             ______                      
  2142.      
  2143.      L'unico parametro  da passare  e' la stringa string che deve essere                                                  ______                
  2144.      capiente almeno 9 caratteri (8 + il '\0').
  2145.      
  2146.      
  2147.      La funzione ritorna un puntatore a string.                                        ______ 
  2148.  
  2149.                         Manuale d'uso PcWindow - pag. 63
  2150.  
  2151.  
  2152.  
  2153.      Funzione    get_time:                 get_time:
  2154.      
  2155.      
  2156.      char *Pcw_get_time(string)     char *Pcw_get_time(string)
  2157.      char *string;     char *string;
  2158.      
  2159.      Questa funzione  legge l'ora  attuale dal  DOS e  la ritorna  nella
  2160.      stringa string nel formato HH:MM.             ______                   
  2161.      
  2162.      L'unico parametro  da passare  e' la stringa string che deve essere                                                  ______                
  2163.      capiente almeno 6 caratteri (5 + il '\0').
  2164.      
  2165.      
  2166.      La funzione ritorna un puntatore a string.                                        ______ 
  2167.  
  2168.                         Manuale d'uso PcWindow - pag. 64
  2169.  
  2170.  
  2171.  
  2172.      Funzione    select:                 select:
  2173.      
  2174.      
  2175.      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,
  2176.      wind_att, sel_att, effect)     wind_att, sel_att, effect)
  2177.      unsigned int x;     unsigned int x;
  2178.      unsigned int y;     unsigned int y;
  2179.      unsigned int size;     unsigned int size;
  2180.      unsigned int def;     unsigned int def;
  2181.      unsigned int count;     unsigned int count;
  2182.      char **desc;     char **desc;
  2183.      unsigned int line_type;     unsigned int line_type;
  2184.      ATTR bord_att;     ATTR bord_att;
  2185.      ATTR wind_att;     ATTR wind_att;
  2186.      ATTR sel_att;     ATTR sel_att;
  2187.      unsigned int effect;     unsigned int effect;
  2188.      
  2189.      
  2190.      Questa funzione  consente di selezionare un elemento tra una lista.
  2191.      In effetti  viene aperta  una piccola finestra in cui sono elencati
  2192.      verticalmente i  vari elementi selezionabili e da qui con lo stesso
  2193.      procedimento adottato  per la  selezione di  un elemento in un sub-
  2194.      menu e'  possibile selezionare una delle scelte possibili. Premendo
  2195.      ESC, viene  annullata la  selezione e la funzione ritorna lo stesso
  2196.      valore passato come default.
  2197.      
  2198.      
  2199.      I parametri da passare sono:
  2200.      
  2201.      x, y  : Coordinate dell'angolo in alto a sinistra della finestra da     ____                                                               
  2202.               aprire.
  2203.      
  2204.      size : Ampiezza in verticale della finestra.     ____                                        
  2205.      
  2206.      def : Selezione iniziale.     ___                      
  2207.      
  2208.      count :  Numero di  elementi nella  lista. Puo'  essere maggiore di     _____                                                              
  2209.               size  con   conseguente  scrolling  degli  elementi  nella
  2210.               finestra.
  2211.      
  2212.      desc : Array di stringhe contenenti le descrizioni.     ____                                               
  2213.      
  2214.      line_type: Tipo  di linea  (LT_SINGLE o  LT_DOUBLE o NO_BORDER) del     _________                                                          
  2215.               bordo.
  2216.      
  2217.      bord_att : Attributo del bordo.     ________                       
  2218.      
  2219.      wind_att : Attributo della finestra.     ________                            
  2220.      
  2221.      sel_att : Attributo dell'elemento selezionato.     _______                                       
  2222.      
  2223.      effect :  Effetto per  l'apertura  e  la  chiusura  della  finestra     ______                                                             
  2224.      (ISTANT,  FADELEFT,   FADERIGHT,   FADEUP,   FADEDOWN,   FADEHORIZ,
  2225.      FADEVERT).
  2226.  
  2227.                         Manuale d'uso PcWindow - pag. 65
  2228.  
  2229.  
  2230.  
  2231.          
  2232.          Al posto  di uno  o entrambi  i parametri  x e  y e'  possibile                                                    _    _              
  2233.          mettere uno dei seguenti valori predefiniti:
  2234.      
  2235.               ALIGN_CENTER :  La finestra  viene aperta  al centro dello
  2236.                    schermo (rispetto a x o rispetto a y). L'allineamento                                       _              _                 
  2237.                    si riferisce all'intera finestra e non alla sola area
  2238.                    visibile.
  2239.               ALIGN_CENTER_VIEW :  Come il  precedente, ma riferito alla
  2240.                    sola area visibile.
  2241.               ALIGN_BEGIN :  La finestra  viene aperta sul lato sinistro
  2242.                    dello schermo  (o in alto se lungo y). L'allineamento                                                      _                 
  2243.                    e'   riferito rispetto all'intera finestra.
  2244.               ALIGN_BEGIN_VIEW  :   Come  il   precedente,  ma  relativo
  2245.                    all'area visibile.
  2246.               ALIGN_END :  Come ALIGN_BEGIN,  ma per  il lato  destro  o
  2247.                    inferiore.
  2248.               ALIGN_END_VIEW :  Come il precedente, ma relativo all'area
  2249.                    visibile.
  2250.      
  2251.      
  2252.      Possibili valori di ritorno:
  2253.      
  2254.      NOWIND : Non c'e' nessun numero di finestra disponibile.
  2255.      ILLPAR : Parametri illegali.
  2256.      Numero da 0 a count - 1 : Indica la scelta effettuata.
  2257.      
  2258.      
  2259.      NOTA     NOTA     ____
  2260.      Questa funzione  necessita di  un numero  di finestra  disponibile,
  2261.      infatti si  appropria di un numero, definisce una finestra, la apre
  2262.      e dopo  la selezione  la richiude  e  libera  il  numero.  Pertanto
  2263.      occorre tenere presente questo fatto quando si chiama all'inizio la
  2264.      funzione init.
  2265.  
  2266.                         Manuale d'uso PcWindow - pag. 66
  2267.  
  2268.  
  2269.  
  2270.      Funzione    ext_sel:                 ext_sel:
  2271.      
  2272.      
  2273.      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,
  2274.      sel_att, effect, firstline, topfun, botfun)     sel_att, effect, firstline, topfun, botfun)
  2275.      unsigned int x;     unsigned int x;
  2276.      unsigned int y;     unsigned int y;
  2277.      unsigned int xsize;     unsigned int xsize;
  2278.      unsigned int ysize;     unsigned int ysize;
  2279.      unsigned int line_type;     unsigned int line_type;
  2280.      ATTR bord_att;     ATTR bord_att;
  2281.      ATTR wind_att;     ATTR wind_att;
  2282.      ATTR sel_att;     ATTR sel_att;
  2283.      unsigned int effect;     unsigned int effect;
  2284.      char *firstline;     char *firstline;
  2285.      BOOLEAN (* topfun)(char *);     BOOLEAN (* topfun)(char *);
  2286.      BOOLEAN (* botfun)(char *);     BOOLEAN (* botfun)(char *);
  2287.      
  2288.                    
  2289.      Questa funzione  e' molto  simile alla precedente con la differenza
  2290.      che, mentre  la precedente  permette la selezione di un elemento in
  2291.      una lista la cui lunghezza e' nota, questa invece non ha bisogno di
  2292.      conoscerla. Una  tipica  applicazione  di  questa  funzione  e'  la
  2293.      ricerca di  un elemento  all'interno di  un archivio:  innanzitutto
  2294.      viene effettuata  una ricerca  dei  primi  caratteri  della  chiave
  2295.      dell'elemento,  e   poi  viene  invocata  la  funzione  Pcw_ext_sel                                                             Pcw_ext_sel
  2296.      passando al  posto di  first_line il nome della chiave trovata e al                            __________                                  
  2297.      posto di  topfun e  botfun i  puntatori a  due funzioni che cercano               ______  ________                                         
  2298.      rispettivamente il record precedente e il record successivo secondo
  2299.      la  chiave  nell'archivio.  In  tal  modo  l'utente  puo'  scorrere
  2300.      l'archivio avanti  e indietro fino a trovare il record cercato. Dal
  2301.      punto di  vista del  funzionamento, la  funzione invoca  botfun per                                                              ______    
  2302.      cercare l'elemento  successivo e  la funzione topfun per cercare il                                                   ______               
  2303.      precedente. Quando viene premuto il RETURN si esce dalla funzione e
  2304.      ci si  trova automaticamente  posizionati sull'elemento  scelto. Se
  2305.      invece si  preme ESC,  la  funzione  si  riposiziona  sull'elemento
  2306.      iniziale all'atto dell'invocazione.
  2307.      
  2308.      
  2309.      I parametri da passare sono:
  2310.      
  2311.      x, y  : Coordinate dell'angolo in alto a sinistra della finestra da     ____                                                               
  2312.               aprire.
  2313.      
  2314.      xsize : Ampiezza in orizzontale della finestra.     _____                                          
  2315.      
  2316.      ysize :  Ampiezza in verticale della finestra. Se nella ricerca non     _____                                                              
  2317.               viene  trovato   un  numero  sufficiente  di  elementi  la
  2318.               finestra viene ristretta.
  2319.      
  2320.      line_type: Tipo di linea (LT_SINGLE o LT_DOUBLE) del bordo.     _________                                                  
  2321.      
  2322.      bord_att : Attributo del bordo.     ________                       
  2323.  
  2324.                         Manuale d'uso PcWindow - pag. 67
  2325.  
  2326.  
  2327.  
  2328.      
  2329.      wind_att : Attributo della finestra.     ________                            
  2330.      
  2331.      sel_att : Attributo dell'elemento selezionato.     _______                                       
  2332.      
  2333.      effect :  Effetto per  l'apertura  e  la  chiusura  della  finestra     ______                                                             
  2334.               (ISTANT, FADELEFT, FADERIGHT, FADEUP, FADEDOWN, FADEHORIZ,
  2335.               FADEVERT).
  2336.      
  2337.      first_line : Descrizione della prima linea.     __________                                 
  2338.      
  2339.      topfun e  botfun :  puntatori alle  due  funzioni  di  ricerca  per     ______    ______                                                   
  2340.               l'elemento precedente  e per  il successivo.  Le  funzioni
  2341.               devono ritornare  un valore  di tipo BOOLEAN indicante con
  2342.               TRUE che  l'elemento e'  stato trovato  e  con  FALSE  che
  2343.               l'elemento non  e' stato  trovato (es.: fine file o inizio
  2344.               file). Inoltre  Pcw_ext_sel passa  a botfun  e a topfun un                              Pcw_ext_sel                               
  2345.               puntatore a  carattere in cui queste due devono copiare la
  2346.               descrizione  relativa  all'elemento  trovato.  Pcw_ext_sel                                                             Pcw_ext_sel
  2347.               alloca dinamicamente  spazio per  le stringhe di lunghezza
  2348.               pari a xsize ed e' compito delle due funzioni non scrivere                     _____                                              
  2349.               piu' di xsize caratteri.                      _____           
  2350.          
  2351.               Al  posto  di  uno  o  entrambi  i  parametri  x  e  y  e'                                                             _     _    
  2352.               possibilemettere uno dei seguenti valori predefiniti:
  2353.      
  2354.                    ALIGN_CENTER :  La finestra  viene aperta  al  centro
  2355.                         dello schermo  (rispetto a  x o  rispetto a  y).                                                    _                _  
  2356.                         L'allineamento si   riferisce         all'intera
  2357.                         finestra e non alla sola area visibile.
  2358.                    ALIGN_CENTER_VIEW :  Come il  precedente, ma riferito
  2359.                         alla sola area visibile.
  2360.                    ALIGN_BEGIN :  La  finestra  viene  aperta  sul  lato
  2361.                         sinistro dello  schermo (o  in alto se lungo y).                                                                     _  
  2362.                         L'allineamento e'  riferito rispetto  all'intera
  2363.                         finestra.
  2364.                    ALIGN_BEGIN_VIEW :  Come il  precedente, ma  relativo
  2365.                         all'area visibile.
  2366.                    ALIGN_END : Come ALIGN_BEGIN, ma per il lato destro o
  2367.                         inferiore.
  2368.                    ALIGN_END_VIEW :  Come  il  precedente,  ma  relativo
  2369.                         all'area visibile.
  2370.      
  2371.      
  2372.      Possibili valori di ritorno:
  2373.      
  2374.      IN_RET : Selezione avvenuta con pressione del tasto RETURN.
  2375.      IN_ESC : Selezione abortita con pressione del tasto ESCAPE.
  2376.      NOWIND : Non c'e' nessun numero di finestra disponibile.
  2377.      ILLPAR : Parametri illegali.
  2378.      OUTMEM : Non c'e' memoria a sufficienza per allocare le stringhe.
  2379.  
  2380.                         Manuale d'uso PcWindow - pag. 68
  2381.  
  2382.  
  2383.  
  2384.      
  2385.      
  2386.      NOTA     NOTA     ____
  2387.      Questa funzione  necessita di  un numero  di finestra  disponibile,
  2388.      infatti si  appropria di un numero, definisce una finestra, la apre
  2389.      e dopo  la selezione  la richiude  e  libera  il  numero.  Pertanto
  2390.      occorre tenere presente questo fatto quando si chiama all'inizio la
  2391.      funzione init.
  2392.  
  2393.                         Manuale d'uso PcWindow - pag. 69
  2394.  
  2395.  
  2396.  
  2397.      Funzione    toggle:                 toggle:
  2398.      
  2399.      
  2400.      int Pcw_toggle(x, y, val, true_char, true_attr, false_char,     int Pcw_toggle(x, y, val, true_char, true_attr, false_char,
  2401.      false_attr)     false_attr)
  2402.      unsigned int x;     unsigned int x;
  2403.      unsigned int y;     unsigned int y;
  2404.      BOOLEAN *val;     BOOLEAN *val;
  2405.      char true_char;     char true_char;
  2406.      ATTR true_attr;     ATTR true_attr;
  2407.      char false_char;     char false_char;
  2408.      ATTR false_attr;     ATTR false_attr;
  2409.      
  2410.      
  2411.      Questa funzione  consente di effettuare una scelta fra i due valori
  2412.      logici TRUE  e FALSE.  L'utente puo' selezionare tra le due opzioni
  2413.      con il  tasto SPACE  e accettare  la scelta  con uno  dei  seguenti
  2414.      tasti: RETURN, TAB, SHIFT+TAB.
  2415.      
  2416.      
  2417.      I parametri da passare sono:
  2418.      
  2419.      x, y: Coordinate all'interno della finestra corrente.     ____                                                 
  2420.      
  2421.      val: Puntatore  alla variabile  che contiene  il valore  di default     ___                                                                
  2422.               iniziale e che poi serve da destinazione al valore finale.
  2423.      
  2424.      true_char: Il  carattere da visualizzare per indicare la condizione     _________                                                          
  2425.               TRUE.
  2426.      
  2427.      true_attr: Attributo con cui visualizzare il carattere precedente.     _________                                                         
  2428.      
  2429.      false_char: Il carattere da visualizzare per indicare la condizione     __________                                                         
  2430.               FALSE.
  2431.      
  2432.      false_attr: Attributo con cui visualizzare il carattere precedente.     __________                                                         
  2433.      
  2434.      
  2435.      Possibili valori di ritorno:
  2436.      
  2437.      IN_RET   : Input terminato con il tasto RETURN.
  2438.      IN_TAB   : Input terminato con il tasto TAB.
  2439.      IN_SHTAB : Input terminato con il tasto SHIFT+TAB.
  2440.      ILLPAR   : Parametri illegali.
  2441.      NOWIND   : Nessuna finestra aperta.
  2442.  
  2443.                         Manuale d'uso PcWindow - pag. 70
  2444.  
  2445.  
  2446.  
  2447.       Tipi predefiniti.      Tipi predefiniti.
  2448.      
  2449.      
  2450.      Nel nel file di header sono predefiniti dei tipi di dati che sono
  2451.      usati anche nella definizione delle funzioni. Eccone una
  2452.      descrizione:
  2453.      
  2454.      
  2455.      
  2456.      ATTR:    Questo e'  il tipo  adatto per  la rappresentazione degli
  2457.               attributi video.  Correlata a  questo tipo  vi e' la macro
  2458.               attrib.
  2459.      
  2460.      
  2461.      BOOLEAN: Valore booleano. Una variabile di questo tipo puo' valere
  2462.               solo TRUE o FALSE.
  2463.  
  2464.                         Manuale d'uso PcWindow - pag. 71
  2465.  
  2466.  
  2467.  
  2468.      Macro.     Macro.
  2469.      
  2470.      Quelle che  seguono  sono  delle  macro  e  delle  definizioni  per
  2471.      facilitare la  generazione di  attributi  video,  senza  impegnarsi
  2472.      nella manipolazione dei bit e per altre funzioni di controllo.
  2473.  
  2474.                         Manuale d'uso PcWindow - pag. 72
  2475.  
  2476.  
  2477.  
  2478.      Macro    attrib:              attrib:
  2479.      
  2480.      
  2481.      attrib(FORE,HIL,BACK,BLI)     attrib(FORE,HIL,BACK,BLI)
  2482.      
  2483.      
  2484.      La macro  calcola il  valore numerico  corrispondente all'attributo
  2485.      specificato.
  2486.      
  2487.      
  2488.      I parametri sono:
  2489.      
  2490.      FORE: Colore  di primo  piano (scegliere  tra BLACK,  BLUE,  GREEN,     ____                                                               
  2491.               CYAN, RED, MAGENTA, YELLOW, WHITE).
  2492.      
  2493.      HIL: Puo'  valere NORMAL  oppure HILIGHT a seconda che si voglia la     ___                                                                
  2494.               scrittura normale o l'evidenziato.
  2495.      
  2496.      BACK: Colore di sfondo (come per FORE).     ____                             ____  
  2497.      
  2498.      BLI: Puo'  valere STEADY  per caratteri fissi o BLINK per caratteri     ___                                                                
  2499.               lampeggianti.
  2500.      
  2501.      
  2502.      NOTA     NOTA     ____
  2503.      Nelle versioni precedenti di PcWindow, le costanti che definivano i
  2504.      possibili attributi  erano diverse  dalle attuali. Occorre pertanto
  2505.      provvedere  a   modificare  eventuali   programmi   scritti   prima
  2506.      dell'attuale versione di PcWindow. E' comunque possibile continuare
  2507.      ad usare  la vecchia  nomenclatura definendo  la  macro  OLD_PCW  o
  2508.      nell'invocazione al compilatore o mettendo in testa ai programmi la
  2509.      direttiva #define OLD_PCW appena prima di #include <pcw.h>               _______________                 ________________
  2510.  
  2511.                         Manuale d'uso PcWindow - pag. 73
  2512.  
  2513.  
  2514.  
  2515.      Macro    reverse:              reverse:
  2516.      
  2517.      
  2518.      reverse(att)     reverse(att)
  2519.      
  2520.      
  2521.      La macro  serve per  invertire un  codice di  attributo generato da
  2522.      attrib, ovvero caratteri in negativo.     attrib                               
  2523.      
  2524.      In pratica effette lo scambio tra BACK e FORE.                                       ____   ____ 
  2525.  
  2526.                         Manuale d'uso PcWindow - pag. 74
  2527.  
  2528.  
  2529.  
  2530.      Definizione   __PCW__:                   __PCW__:
  2531.      
  2532.      
  2533.      __PCW__     __PCW__
  2534.      
  2535.      
  2536.      Questa  e'   una  definizione   riportata  nel  file  pcw.h  ed  e'
  2537.      inizializzata ad  un valore  pari alla  versione di  PcWindow x 100
  2538.      (ovvero:  130  equivale  a  1.30).  In  questo  modo  e'  possibile
  2539.      effettuare delle compilazioni condizionate.
  2540.      
  2541.      Osservare che nel toolkit e' presente anche la funzione Pcw_version                                                             Pcw_version
  2542.      che ritorna  il numero della versione, ma ovviamente va bene solo a
  2543.      run-time, ma non a compile-time.
  2544.  
  2545.                         Manuale d'uso PcWindow - pag. 75
  2546.  
  2547.  
  2548.  
  2549.                                  APPENDICE A                                 APPENDICE A
  2550.      
  2551.      
  2552.      Elenco delle figure fuori testo.
  2553.      
  2554.      
  2555.      
  2556.           Fig. 1  :  schermo e coordinate.
  2557.      
  2558.           Fig. 2  :  finestra e area visibile.
  2559.      
  2560.           Fig. 3  :  effetti per le funzioni open e open_pos.
  2561.      
  2562.           Fig. 4  :  effetti per la funzione close
  2563.      
  2564.           Fig. 5  :  effetti per la funzione move_abs
  2565.      
  2566.           Fig. 6  :  direzioni per la funzione scroll
  2567.      
  2568.           Fig. 7  :  effetti per la funzione size
  2569.      
  2570.           Fig. 8  :  effetti per la funzione size
  2571.  
  2572.                         Manuale d'uso PcWindow - pag. 76
  2573.  
  2574.  
  2575.  
  2576.                                  APPENDICE B                                 APPENDICE B
  2577.      
  2578.      
  2579.      
  2580.      Modalita' di uso della funzione input da parte dell'operatore.     Modalita' di uso della funzione input da parte dell'operatore.
  2581.      
  2582.      Quando si  entra in  modalita' input viene visualizzato il campo in
  2583.      cui  si   puo'  immettere   il  dato  ed  eventualmente  un  valore
  2584.      preesistente  che   puo'  essere   modificato.  Il   cursore  viene
  2585.      posizionato all'inizio  del campo  se questo e' vuoto o appena dopo
  2586.      l'ultimo carattere dell'eventuale valore preesistente.
  2587.      
  2588.      E'  possibile   spostarsi  a  destra  e  sinistra  lungo  il  campo
  2589.      servendosi delle  due frecce  destra e  sinistra pero' solo lungo i
  2590.      caratteri gia'  presenti o, nel caso in cui il campo non sia pieno,
  2591.      sul primo  posto libero  a destra dei caratteri presenti. Osservare
  2592.      che se  il tipo  del dato da leggere e' una IT_DATE, muovendosi con
  2593.      il cursore vengono automaticamente saltati i caratteri "/". Analogo
  2594.      discorso vale  per  il  campo  IT_HOUR  in  cui  il  separatore  e'
  2595.      rappresentato da  ":". Per  il campo  IT_LOGICAL non  e'  possibile
  2596.      muoversi in quanto la lunghezza del campo e' unitaria.
  2597.      
  2598.      Battendo un  carattere (tra quelli permessi per il tipo), questo va
  2599.      a posizionarsi  alla posizione del cursore spostando quest'ultimo a
  2600.      destra di  una posizione  (saltando sempre  l'eventuale "/"  per un
  2601.      campo IT_DATE o il ":" per il campo IT_HOUR e non muovendosi per un
  2602.      campo logico);  se il cursore si trova su un carattere questo viene
  2603.      sostituito.
  2604.      
  2605.      Premendo il  tasto INS  si entra in modalita' inserimento per cui i
  2606.      caratteri battuti  si faranno  posto fra  quelli preesistenti  alla
  2607.      posizione del  cursore con  eventuale perdita di caratteri a destra
  2608.      del campo  (non vale  per i tipi IT_DATE, IT_HOUR e IT_LOGICAL); la
  2609.      modalita' di  inserimento viene annullata ripremendo il tasto INS o
  2610.      uscendo dal campo.
  2611.      
  2612.      Per i  soli campi  IT_ALFANUM, IT_ALFABUPP,  IT_ALFAB  (quelli  che
  2613.      accettano lo  spazio) e' possibile spostarsi alla parola successiva
  2614.      premendo  Ctrl+Cursor  Right  o  alla  parola  precedente  premendo
  2615.      Ctrl+Cursor Left,  o ancora  spostarsi alla successiva posizione di
  2616.      tabulazione (0  - 8  -  16  ...)  premendo  il  tasto  TAB  o  alla
  2617.      precedente servendosi di Shift + Tab.
  2618.      
  2619.      Il tasto  DEL cancella  il carattere  sotto il  cursore trascinando
  2620.      eventuali caratteri  presenti alla  sua destra,  verso sinistra; il
  2621.      tasto BACKSPACE  cancella il  carattere alla  sinistra del  cursore
  2622.      trascinando il  carattere sotto  il cursore ed eventuali successivi
  2623.      verso sinistra.
  2624.      Il  tasto   DEL  non  funziona  per  i  tipi  IT_DATE,  IT_HOUR,  e
  2625.      IT_LOGICAL.
  2626.      Il tasto  BACKSPACE non funziona per il tipo IT_LOGICAL, mentre per
  2627.      i tipi IT_HOUR e IT_DATE funziona allo stesso modo di Cursor Left.
  2628.      Per i  campi IT_DATE e IT_HOUR e' possibile cancellare il carattere
  2629.      sotto il cursore con la barra spaziatrice.
  2630.  
  2631.                         Manuale d'uso PcWindow - pag. 77
  2632.  
  2633.  
  2634.  
  2635.      
  2636.      Il tasto  HOME posiziona il cursore all'inizio del campo, mentre il
  2637.      tasto END posiziona il cursore alla fine dei caratteri immessi.
  2638.      
  2639.      E' possibile cancellare dalla posizione del cursore fino all'inizio
  2640.      del campo  con conseguente allineamento dei caratteri rimanenti con
  2641.      il tasto  Ctrl+HOME e  analogamente troncare  dalla  posizione  del
  2642.      cursore verso  destra con il tasto Ctrl+END (questi due comandi non
  2643.      valgono per i tipi IT_LOGICAL, IT_HOUR e IT_DATE).
  2644.      
  2645.      La terminazione  puo' avvenire  con il  tasto RETURN oppure con uno
  2646.      dei tasti  abilitati dalla  funzione set_input_mode.  Osservare che                                          set_input_mode                
  2647.      per il campo IT_DATE, viene effettuato un controllo sulla validita'
  2648.      della data  immessa e  quindi si esce dall'input solo se la data e'
  2649.      legale (viene anche accettata la data nulla "  /  /  " che peraltro
  2650.      deve essere passata solo come default). Stesso discorso vale per il
  2651.      campo IT_HOUR in cui viene effettuata la validita' dell'ora e viene
  2652.      eventualmente accettata l'ora nulla "  :  ".
  2653.      
  2654.      Per i  campi IT_FIXED?c'e'  da aggiungere che indipendentemente dal
  2655.      loro  valore,   il  dato   viene  sempre   rappresentato   con   la
  2656.      formattazione prevista.
  2657.      Per il  campo IT_HEX  sono  accettati  i  soli  valori  esadecimali
  2658.      automaticamente convertiti in maiuscolo.
  2659.      Per il  campo IT_REAL  sono accettati  i numeri,  opzionalmente  un
  2660.      punto e un segno ma solo in prima posizione.
  2661.  
  2662.                         Manuale d'uso PcWindow - pag. 78
  2663.  
  2664.  
  2665.  
  2666.                                  APPENDICE C                                 APPENDICE C
  2667.      
  2668.      
  2669.      
  2670.      Modalita' d'uso dei menu' pull-down.     Modalita' d'uso dei menu' pull-down.
  2671.      
  2672.      Quando e'  presente la  riga orizzontale  dei menu',  e'  possibile
  2673.      effettuare la  propria  scelta  tenendo  premuto  il  tasto  ALT  e
  2674.      battendo contemporaneamente l'iniziale del nome presente sulla riga
  2675.      o la  prima lettera maiuscola nel nome (se c'e' e se l'iniziale del
  2676.      nome non  e'  maiuscola).  Ad  esempio  se  compaiono  le  seguenti
  2677.      scritte:
  2678.      File   Stampa    Opzioni   sElezione
  2679.      e si  vuole selezionare  la funzione "Opzioni" basta premere ALT+O,
  2680.      mentre se si vuole selezionare "Selezione" basta premere ALT+E.
  2681.      Si nota a questo punto l'apertura di una finestra in corrispondenza
  2682.      della scelta con le relative scelte di secondo livello con la prima
  2683.      scelta a  partire dall'alto  evidenziata. A  questo punto  si  puo'
  2684.      effettuare la  scelta finale  premendo la  prima lettera  maiuscola
  2685.      presente nel  nome della  funzione desiderata  oppure,  quando  non
  2686.      c'e', l'iniziale del nome (senza premere il tasto ALT) e confermare
  2687.      con il  tasto RETURN. E' possibile scegliere fra le scelte di primo
  2688.      livello (orizzontali)  anche mediante  i tasti  cursore  (destra  e
  2689.      sinistra) e  questo e'  utile  quando  si  hanno  piu'  scelte  che
  2690.      iniziano con  la stessa  lettera. Cosi' e' anche possibile scorrere
  2691.      lungo le  scelte verticali (di secondo livello) con i tasti cursore
  2692.      (basso e  alto). E' possibile in ogni caso eseguire movimenti misti
  2693.      con i tasti cursore.
  2694.      
  2695.      A volte per un determinato sub-menu' sono presenti molte scelte che
  2696.      non comparirebbero tutte nella box e pertanto ne vengono presentate
  2697.      solo alcune.  Le altre si ottengono muovendosi con il cursore verso
  2698.      il basso  forzando cosi' uno scorrimento delle scelte verso l'alto.
  2699.      E in  senso inverso  si  puo'  andare  verso  l'alto  forzando  uno
  2700.      scorrimento delle scritte verso il basso.
  2701.      La conferma  della scelta effettuata avviene mediante pressione del
  2702.      tasto RETURN.
  2703.      Si puo'  interrompere la  scelta premendo  in qualunque  momento il
  2704.      tasto ESC.
  2705.      
  2706.      Sono selezionabili  solo le  scelte  evidenziate  da  un  carattere
  2707.      particolare alla sinistra della stringa.
  2708.  
  2709.                         Manuale d'uso PcWindow - pag. 79
  2710.  
  2711.  
  2712.  
  2713.                                  APPENDICE D                                 APPENDICE D
  2714.                                       
  2715.      Future espansioni.     Future espansioni.
  2716.      
  2717.      
  2718.      Il programma  PcWindow non  e' un  prodotto finito nel senso che e'
  2719.      privo di  futuro, ma  si presta a successive modifiche, espansioni,
  2720.      migliorie, ed  altro che verra' in seguito al riscontro che possono
  2721.      fornire gli  utenti. Qualcosa  e' gia' in cantiere, altro e' solo a
  2722.      livello di  idea. In  ogni caso tutto quello che e' da venire avra'
  2723.      ragione di  essere  solo  se  ci  saranno  persone  che  forniranno
  2724.      critiche, consigli  e rileveranno  gli inevitabili errori contenuti
  2725.      nel programma.  Di seguito  riporto una  lista delle  modifiche che
  2726.      saranno  attuate   nelle  successive   versioni.  L'ordine  non  e'
  2727.      indicativo:
  2728.      
  2729.      
  2730.      - Sara' prevista la gestione del mouse.
  2731.      
  2732.      - Sara'  creata una interfaccia a piu' alto livello per la gestione
  2733.          dell'input controllato non piu' a livello del singolo campo, ma
  2734.          a livello dell'intera maschera.
  2735.      
  2736.      - Sara'  fornito un  ambiente di sviluppo interattivo che generera'
  2737.          le linee di codice a partire dalle indicazioni grafiche fornite
  2738.          dall'utente. (Progetto piuttosto ambizioso!).
  2739.      
  2740.      - Saranno  aggiunte altre  funzioni per  l'interfacciamento con  le
  2741.          altre librerie  che sto scrivendo (di cui per il momento non vi
  2742.          dico  niente,   ma  se  vi  interessa  saperne  di  piu'  basta
  2743.          contattarmi).
  2744.      
  2745.      - Sara'  generata una versione multi-thread di Pcw contenuta in una
  2746.          libreria di tipo DLL (per l'ambiente OS/2).
  2747.      
  2748.      - Tutto quello che mi verra' in mente o che mi sara' proposto.
  2749.      
  2750.      - Probabilmente  non curero' piu' la versione per TurboC, in quanto
  2751.          non sono in grado di provarla bene, non avendo il compilatore e
  2752.          non avendo  l'intenzione di  comprarlo. Se c'e' qualcuno che si
  2753.          sente in  grado di  fare il beta-tester per la versione TurboC,
  2754.          si faccia avanti.
  2755.  
  2756.                         Manuale d'uso PcWindow - pag. 80
  2757.  
  2758.  
  2759.  
  2760.                                  APPENDICE E                                 APPENDICE E
  2761.                                       
  2762.      
  2763.      
  2764.      Collaborazione.     Collaborazione.
  2765.      
  2766.      
  2767.      Quanto sto  per dirvi  viene fuori  da una  considerazione pratica:
  2768.      quasi  tutti   coloro  che   scrivono  programmi   si  sono  sempre
  2769.      preoccupati di  creare un interfaccia utente sofisticata e al tempo
  2770.      stesso quanto  piu' semplice possibile nell'uso, come anche sistemi
  2771.      di help  "context sensitive"  e altre cose del genere per rendere i
  2772.      programmi sempre piu' "user friendly".
  2773.      E in effetti anche per questo e' nato PcWindow, per fare in modo da
  2774.      rendere piu'  simpatica la presentazione di dati e la esecuzione di
  2775.      operazioni per l'operatore. Ma non e' solo questo lo scopo, infatti
  2776.      uno dei  motivi  che  stanno  alla  base  del  tool  e'  quello  di
  2777.      semplificare  la  vita  al  programmatore  perche'  in  verita'  la
  2778.      situazione e' questa: mentre dal punto di vista dell'utente si sono
  2779.      fatti passi  da gigante  fino al  punto in cui si riesce a lavorare
  2780.      solo con  il mouse,  per quanto  riguarda noi  programmatori  siamo
  2781.      rimasti ancora con i metodi dei pionieri e infatti usiamo un editor
  2782.      e un  compilatore che  lavorano quasi  con modalita'  batch. Gia' i
  2783.      debugger tipo  CodeView sono  una grande  innovazione, come anche i
  2784.      prodotti con  help in  linea tipo  QuickC oppure le Norton Guides o
  2785.      ancora il  QuickHelp annesso  al Microsoft  Editor sotto  OS/2 o le
  2786.      utility tipo  Make, ma e' ancora poco. C'e' molto da fare e proprio
  2787.      a questo  proposito che  si inserisce un discorso di collaborazione
  2788.      reciproca fra programmatori.
  2789.      
  2790.      In effetti  si  tratterebbe  di  sviluppare  tutto  un  insieme  di
  2791.      prodotti, di tool di utility e di librerie adatte a semplificare la
  2792.      vita a noi programmatori che siamo costretti a rimanere ore davanti
  2793.      ad un  calcolatore per  cercare di  tradurre quello  che abbiamo in
  2794.      mente proprio  perche' non  esiste un  tramite veloce tra la nostra
  2795.      idea e il prodotto finito.
  2796.      
  2797.      Pertanto, chiunque si sente in grado di intraprendere questa strada
  2798.      e ritiene  di avere  valide idee  si puo'  fare benissimo  avanti e
  2799.      contattarmi. Ci  sono gia'  altre persone  che stanno  dedicando il
  2800.      loro tempo  a progetti  del genere  e che  quindi sono  ansiosi  di
  2801.      collaborare e di sentirsi meno soli in queste imprese.
  2802.      
  2803.      Ecco di  seguito delle  indicazioni  di  base  per  scrivere  altre
  2804.      funzioni, librerie o moduli da usarsi con PcW:
  2805.      
  2806.      - Fondamentale:  registrarsi all'uso  di  PCW  mediante  l'apposita
  2807.          registration Card.
  2808.      
  2809.      - Usare  esclusivamente linguaggio  C, cercando  di attenersi  alla
  2810.          proposta di  standard ANSI  in modo  da poter compilare sia con
  2811.          Microsoft C, sia con TurboC.
  2812.  
  2813.                         Manuale d'uso PcWindow - pag. 81
  2814.  
  2815.  
  2816.  
  2817.      
  2818.      - Il  formato migliore  per  un  prodotto  di  questo  tipo  e'  la
  2819.          libreria, o  al piu'  il file .OBJ. Solo in casi particolari il
  2820.          sorgente.
  2821.      
  2822.      - Non  usare nomi  simbolici che inizino con Pcw, Pcm o Pci (questi
  2823.          sono riservati per un uso interno di PcWindow).
  2824.      
  2825.      - Generare  un file  di header  con tutte  le definizioni e tutti i
  2826.          prototipi delle funzioni.
  2827.      
  2828.      - Corredare il programma di un apposito manuale.
  2829.      
  2830.      - Specificare  la versione  minima di  PCW richiesta. A tal scopo i
  2831.          programmi devono  prevedere un  controllo della versione di PCW
  2832.          per verificare che questa sia almeno la minima richiesta.
  2833.      
  2834.      - Garantire  sempre la  compatibilita' verso  l'alto. Quando questo
  2835.          non  sia   possibile,  mantenere   per  un   certo  periodo  di
  2836.          transizione sia  la nuova  che la  vecchia forma,  specificando
  2837.          bene nel  manuale la  cosa.  (vedi  esempio  in  PCW  del  file
  2838.          pcwdef.c sostituito da pcw.h).
  2839.      
  2840.      - Corredare  il programma  di almeno  un esempio globale che mostri
  2841.          l'uso di  tutte le  funzioni (non fate come il sottoscritto che
  2842.          ancora non ha scritto un dimostrativo valido).
  2843.      
  2844.      - Menzionare  bene il  vostro nome, indirizzo, recapito telefonico,
  2845.          recapito BBS (quando c'e').
  2846.      
  2847.      - Non  numerate  subito  le  versioni  con  1.00,  2.00,  3.00,  ma
  2848.          proseguite gradualmente  (vedere il mio file PCW.VER). Se vi e'
  2849.          possibile allegate anche voi un file con la storia evolutiva.
  2850.      
  2851.      - Inviate  il tutto al sottoscritto solo dopo aver testato il tutto
  2852.          ben   bene.    Successivamente   dopo    aver   verificato   la
  2853.          compatibilita'  con  PCW,  mi  occupero'  di  darvi  la  giusta
  2854.          pubblicita', le  critiche e  i consigli e vi segnalero' a tutti
  2855.          gli altri utenti di PCW.
  2856.      
  2857.      - Partecipate all'area messaggi apposita aperta su SMCVBBS.
  2858.      
  2859.      
  2860.      
  2861.      Come segnalare errori in PCW o in un programma annesso:     Come segnalare errori in PCW o in un programma annesso:
  2862.      
  2863.      - Scrivere  un programma  dimostrativo dell'errore  che sia il piu'
  2864.          corto possibile e mandarmi il sorgente (ovviamente in C).
  2865.      
  2866.      - Specificare  la versione  di PCW, la versione del compilatore, la
  2867.          marca e  il modello  del calcolatore  e tutti i suoi dati (RAM,
  2868.          Hard Disk, scheda video).
  2869.  
  2870.                         Manuale d'uso PcWindow - pag. 82
  2871.  
  2872.  
  2873.  
  2874.      
  2875.      - Specificare  il nome  e la  versione dei  programmi aggiuntivi  a
  2876.          PcWindow.
  2877.      
  2878.      - Aggiungere  una spiegazione  quanto piu' esauriente possibile del
  2879.          difetto e/o degli errori.
  2880.      
  2881.      - Mettere il tutto in un file e inviarmelo direttamente sul mio BBS
  2882.          o tramite  posta. Nel caso in cui l'errore non riguardi PCW, ma
  2883.          un'altra libreria  che sfrutta  PcW, mi occupero' personalmente
  2884.          di contattare  l'autore per far provvedere alla correzione e in
  2885.          seguito avvisero'  tutti gli  utenti registrati  della avvenuta
  2886.          correzione.
  2887.  
  2888.                         Manuale d'uso PcWindow - pag. 83
  2889.  
  2890.  
  2891.  
  2892.                                  APPENDICE F                                 APPENDICE F
  2893.                                       
  2894.      
  2895.      
  2896.      Note per chi usa Clipper.     Note per chi usa Clipper.
  2897.                                       
  2898.                                       
  2899.      La libreria  Large Memory Model, MS-C, Ms-Dos puo' benissimo essere
  2900.      adoperata  anche   con  il   compilatore   Clipper   senza   alcuna
  2901.      difficolta'. L'unica  cosa  di  cui  occorre  tenere  conto  e'  la
  2902.      seguente:
  2903.      
  2904.      Chi lavora  con Clipper  sa che  non e'  possibile avere nomi delle
  2905.      funzioni lunghi  come quelli  usati in  PcW, come  anche  sa  della
  2906.      limitazione sul  numero e  sul tipo  di parametri  da passare  alle
  2907.      funzioni. Per  usare quindi il toolkit con Clipper occorre servirsi
  2908.      di funzioni  intermedie. Ad  esempio, se  io devo definirmi quattro
  2909.      finestre mi  scrivo una  funzione in  C che  definisce  le  quattro
  2910.      window e poi dal Clipper vado solo a richiamare questa funzione.
  2911.      
  2912.      
  2913.      /* Esempio di funzione di tramite */
  2914.      
  2915.      CLIPPER Init()
  2916.      {
  2917.          Pcw_init(.......);       /* I puntini vanno sostituiti con */
  2918.          Pcw_define(......);      /* quello che serve               */
  2919.          Pcw_define(......);
  2920.      }
  2921.      
  2922.      
  2923.      Altra cosa  da tener  presente  con  Clipper  e'  quella  di  usare
  2924.      l'opzione PAD_FIELD  (vedi  funzione  Pcw_set_option)  in  modo  da
  2925.      ritrovarsi sempre campi pieni in uscita dalla funzione Pcw_input.
  2926.  
  2927.                         Manuale d'uso PcWindow - pag. 84
  2928.  
  2929.  
  2930.  
  2931.                                  APPENDICE G                                 APPENDICE G
  2932.                                       
  2933.      
  2934.      
  2935.      Note per il sistema operativo OS/2.     Note per il sistema operativo OS/2.
  2936.      
  2937.                                       
  2938.      La versione  attuale di  PcWindow per  il sistema  operativo OS/2 e
  2939.      soltanto  una   conversione  dell'analoga  versione  per  Ms-Dos  e
  2940.      pertanto per il suo uso occorre tenere presente che:
  2941.      
  2942.      - Non  e' ottimizzata, per cui alcuni effetti sono piu' lenti degli
  2943.          analoghi per Ms-Dos.
  2944.      
  2945.      - Se  piu' programmi  usano PcWindow contemporaneamente, ognuno dei
  2946.          due avra' la propria copia privata con conseguente duplicazione
  2947.          dello spazio occupato in memoria.
  2948.      
  2949.      - Se  due thread  di uno  stesso programma effettuano in simultaneo
  2950.          chiamate a funzioni di PcWindow, il risultato non e' definito e
  2951.          pertanto   occorre    che   un    unico   thread    si   occupi
  2952.          dell'interfacciamento con  PcWindow (si puo' anche serializzare
  2953.          l'accesso a Pcw mediante un semaforo di mutua esclusione).
  2954.      
  2955.      
  2956.      Futuri sviluppi  di PcWindow  per OS/2  riguarderanno la  scrittura
  2957.      della libreria  in modo  tale da  eliminare  tali  inconvenienti  e
  2958.      magari crearne una versione DLL.
  2959.  
  2960.                         Manuale d'uso PcWindow - pag. 85
  2961.  
  2962.  
  2963.  
  2964.                                  APPENDICE H                                 APPENDICE H
  2965.                                       
  2966.      
  2967.                Indice alfabetico delle funzioni e delle macro               Indice alfabetico delle funzioni e delle macro               ______________________________________________
  2968.      
  2969.      
  2970.           ATTR............................................70
  2971.           attrib..........................................72
  2972.           BOOLEAN.........................................70
  2973.           Pcm_close.......................................53
  2974.           Pcm_define......................................49
  2975.           Pcm_disable.....................................55
  2976.           Pcm_enable......................................55
  2977.           Pcm_enter_menu..................................52
  2978.           Pcm_ext_desc....................................54
  2979.           Pcm_init........................................48
  2980.           Pcm_open........................................51
  2981.           Pcw_beep........................................32
  2982.           Pcw_clear_25....................................41
  2983.           Pcw_clear_screen................................19
  2984.           Pcw_close.......................................20
  2985.           Pcw_cls.........................................18
  2986.           Pcw_copyright...................................29
  2987.           Pcw_cpu_type....................................42
  2988.           Pcw_cursor......................................34
  2989.           Pcw_cursor_type.................................35
  2990.           Pcw_define......................................11
  2991.           Pcw_dim.........................................37
  2992.           Pcw_ext_sel.....................................66
  2993.           Pcw_first_free..................................38
  2994.           Pcw_get_date....................................62
  2995.           Pcw_get_time....................................63
  2996.           Pcw_how_many_windows............................26
  2997.           Pcw_init........................................10
  2998.           Pcw_input.......................................57
  2999.           Pcw_is_color....................................44
  3000.           Pcw_is_open.....................................39
  3001.           Pcw_make_current................................45
  3002.           Pcw_move_abs....................................21
  3003.           Pcw_move_rel....................................22
  3004.           Pcw_no_flick....................................31
  3005.           Pcw_open........................................14
  3006.           Pcw_open_pos....................................14
  3007.           Pcw_pos.........................................36
  3008.           Pcw_printat.....................................16
  3009.           Pcw_scroll......................................23
  3010.           Pcw_select......................................64
  3011.           Pcw_set_input_flag..............................61
  3012.           Pcw_set_input_mode..............................60
  3013.           Pcw_set_option..................................46
  3014.           Pcw_set_speed...................................30
  3015.           Pcw_set_view....................................24
  3016.           Pcw_size........................................25
  3017.           Pcw_sprintat....................................16
  3018.  
  3019.                         Manuale d'uso PcWindow - pag. 86
  3020.  
  3021.  
  3022.  
  3023.           Pcw_toggle......................................69
  3024.           Pcw_tone........................................33
  3025.           Pcw_undef.......................................13
  3026.           Pcw_version.....................................28
  3027.           Pcw_video_card..................................43
  3028.           Pcw_which_window................................27
  3029.           Pcw_write_25....................................40
  3030.           reverse.........................................73
  3031.           __PCW__.........................................74
  3032.  
  3033.                         Manuale d'uso PcWindow - pag. 87
  3034.  
  3035.  
  3036.  
  3037.      
  3038.                                Indice Generale                               Indice Generale                               _______________
  3039.      
  3040.      
  3041.      Trademarks............................................2     Trademarks                                             
  3042.      Ringraziamenti........................................2     Ringraziamenti                                         
  3043.      Avvertenze............................................3     Avvertenze                                             
  3044.           Tipi di pacchetto................................3
  3045.           Registrazione....................................3
  3046.           Introduzione.....................................5
  3047.           Struttura della libreria.........................5
  3048.      
  3049.      Funzioni di finestra..................................8     Funzioni di finestra                                   
  3050.           Pcw_init........................................10
  3051.           Pcw_define......................................11
  3052.           Pcw_undef.......................................13
  3053.           Pcw_open........................................14
  3054.           Pcw_open_pos....................................14
  3055.           Pcw_printat.....................................16
  3056.           Pcw_sprintat....................................16
  3057.           Pcw_cls.........................................18
  3058.           Pcw_clear_screen................................19
  3059.           Pcw_close.......................................20
  3060.           Pcw_move_abs....................................21
  3061.           Pcw_move_rel....................................22
  3062.           Pcw_scroll......................................23
  3063.           Pcw_set_view....................................24
  3064.           Pcw_size........................................25
  3065.           Pcw_how_many_windows............................26
  3066.           Pcw_which_window................................27
  3067.           Pcw_version.....................................28
  3068.           Pcw_copyright...................................29
  3069.           Pcw_set_speed...................................30
  3070.           Pcw_no_flick....................................31
  3071.           Pcw_beep........................................32
  3072.           Pcw_tone........................................33
  3073.           Pcw_cursor......................................34
  3074.           Pcw_cursor_type.................................35
  3075.           Pcw_pos.........................................36
  3076.           Pcw_dim.........................................37
  3077.           Pcw_first_free..................................38
  3078.           Pcw_is_open.....................................39
  3079.           Pcw_write_25....................................40
  3080.           Pcw_clear_25....................................41
  3081.           Pcw_cpu_type....................................42
  3082.           Pcw_video_card..................................43
  3083.           Pcw_is_color....................................44
  3084.           Pcw_make_current................................45
  3085.           Pcw_set_option..................................46
  3086.      
  3087.      Menu pull-down.......................................47     Menu pull-down                                         
  3088.           Pcm_init........................................48
  3089.           Pcm_define......................................49
  3090.           Pcm_open........................................51
  3091.  
  3092.                         Manuale d'uso PcWindow - pag. 88
  3093.  
  3094.  
  3095.  
  3096.           Pcm_enter_menu..................................52
  3097.           Pcm_close.......................................53
  3098.           Pcm_ext_desc....................................54
  3099.           Pcm_enable......................................55
  3100.           Pcm_disable.....................................55
  3101.      
  3102.      Input controllato....................................56     Input controllato                                      
  3103.           Pcw_input.......................................57
  3104.           Pcw_set_input_mode..............................60
  3105.           Pcw_set_input_flag..............................61
  3106.           Pcw_get_date....................................62
  3107.           Pcw_get_time....................................63
  3108.           Pcw_select......................................64
  3109.           Pcw_ext_sel.....................................66
  3110.           Pcw_toggle......................................69
  3111.      
  3112.      Tipi predefiniti.....................................70     Tipi predefiniti                                       
  3113.           ATTR............................................70
  3114.           BOOLEAN.........................................70
  3115.      
  3116.      Macro................................................71     Macro                                                  
  3117.           attrib..........................................72
  3118.           reverse.........................................73
  3119.           __PCW__.........................................74
  3120.      
  3121.      Appendici............................................75     Appendici                                              
  3122.           Appendice A. Elenco figure fuori testo..........75
  3123.           Appendice B. Uso Input..........................76
  3124.           Appendice C. Uso menu' pull-down................78
  3125.           Appendice D. Future espansioni..................79
  3126.           Appendice E. Collaborazione.....................80
  3127.           Appendice F. Note per chi usa Clipper...........83
  3128.           Appendice G. Note per il sistema operativo OS/2.84
  3129.           Appendice H. Elenco alfabetico dei nomi.........85