Newsgroup: it.comp.lang.visual-basic
Titolo: forse OT: Urge aiuto mouse basic

Salve al NG e complimenti per la preparazione mostrata,
avrei necessità di implementare una funzione che mi gestisca il mouse
(spostamento e clic) dentro ad uno specifico programma scritto in GWBASIC.
Lo so, sono un dinosauro! ma vi prego per favore di aiutarmi.
Come posso rendere un programma in GWBASIC un poco più "user friendly"?
Non ho al momento la possibilità di migrare verso altri ambienti di sviluppo
"Win-based" e quindi devo necessariamente migliorare questo programma in
GW-BASIC.
Esiste un BASIC che implementi "nuove" funzioni (ricordo ancora quello del
Sinclair QL, sic!) e che - ovviamente - sia compatibile con il GW-BASIC?
Grazie.
--
(Guido)

Sinclair QL, sic!) e che - ovviamente - sia compatibile con il GW-BASIC?
Secondo me, la cosa piu' semplice, per te, e' cercare in rete una
procedura --scritta, ovviamente, in assembly-- che gestisca il mouse e
lo muova per te.
Io ho dei sorgenti, ma sono una 8/10 pagine --dal Norton, Linguaggio
Assembly Avanzato, che poi di avanzato non ha un tubo...-- e
preferirei evitare di copiarle a mano =)
Saluti.
-- 
      Gianni "bugbarbeq" Rondinini, 25, RA, 242, 152
  VBR - Vero Birro Romagnolo®, diffidate dalle imitazioni!
 Opel/ECC Calibrezio EVO-IV --- Kawasaki "Gas Gas" ZZ-R 1100
 ICQ# 36893168 - IRCNet: bugbarbeq, @ on #linux-it & #NetBSD

   VBR - Vero Birro RomagnoloŽ, diffidate dalle imitazioni!


 ha scritto nel messaggio
news:958pmb$1pq$1...@lacerta.tiscalinet.it...

    MIODDIO! GWBASIC! Siamo a più di un decennio fa. A che tempi, che tempi.
Quando le locomotive erano ancora a vapore ... ops, scusa forse mi sono
sbagliato ;-) comunque ... BASIC più evoluti del GW per piattaforma MS-DOS
ce ne sono o, meglio, ce ne erano. Microsoft fece uscire dopo il GW il
prodotto Quick Basic (che con il Quick C era l'allora linguaggio di punta di
Microsoft per le piattaforme MS-DOS). Attorno al 90 fu rilasciata la
piattaforma Quick Basic Extended 7.1 che, a mio sapere, fu l'ultimo ambiente
orientato a MS-DOS di Microsoft. QBX71 aveva supporto per la programmazione
strutturata, gestione ISAM avanzato, accesso diretto ai servizi Interrupt
del DOS (tramite un libreria) e altre cose. Ho usato questo ambiente in
quegli anni e con una buona qualità di programmazione tiravi fuori delle
cose veramente egregie. Era anche completamente compatibile con il codice
scritto nei precedenti QB e nel più vecchio GW-BASIC.
    Non mi chiedere però dove puoi reperirlo. Forse qualche concessionario
Microsoft che ha una sezione "storia dell'informatica" può procurartelo. Io
ne ho una copia full trasferita dai comodi 20 floppy 360 5" 1/4 ad un più
comodo zippone da 7 mb. ;-D
    Per quanto riguarda la gestione del mouse avevo fatto una piccola
libreria per la gestione da QBX ti metto in coda al messaggio il codice e il
dichiarativo così dai un'occhiata a cosa poteva fare.
Ciao Matusa ;-P
Andrea Alberto "TwoAces" Martinoli
From Italy with a smile! :-)
andrea.m...@manpower.it
--- INIZIO 
MOUSEDRV.BI
 ---
'---------------------------------------------------------------------------
-
'                         Andrea Alberto Martinoli
'                                
MOUSEDRV.BI
'                File descrittore per libreria MOUSEDRV.BAS
'                             13 Novembre 1992
'---------------------------------------------------------------------------
-
CONST TRUE = -1, FALSE = NOT (TRUE)
TYPE regType
     ax    AS INTEGER
     bx    AS INTEGER
     cx    AS INTEGER
     dx    AS INTEGER
     bp    AS INTEGER
     si    AS INTEGER
     di    AS INTEGER
     flags AS INTEGER
END TYPE
TYPE regTypeX
     ax    AS INTEGER
     bx    AS INTEGER
     cx    AS INTEGER
     dx    AS INTEGER
     bp    AS INTEGER
     si    AS INTEGER
     di    AS INTEGER
     flags AS INTEGER
     ds    AS INTEGER
     es    AS INTEGER
END TYPE
TYPE mouseType
   state       AS INTEGER  'stato mouse
   buttons     AS INTEGER  'numero bottoni
   rowAdjust   AS INTEGER  'valore per aggiustamento coordinate video riga
   colAdjust   AS INTEGER  'valore per aggiustamento coordinate video
colonna
END TYPE
DECLARE SUB Absolute (address AS INTEGER)
DECLARE SUB Interrupt (intnum AS INTEGER, inreg AS regType, outreg AS
regType)
DECLARE SUB InterruptX (intnum AS INTEGER, inreg AS regTypeX, outreg AS
regTypeX)
DECLARE SUB Int86Old (intnum AS INTEGER, inarray() AS INTEGER, outarray() AS
INTEGER)
DECLARE SUB Int86XOld (intnum AS INTEGER, inarray() AS INTEGER, outarray()
AS INTEGER)
DECLARE SUB MouseBorder (row1%, col1%, row2%, col2%)
DECLARE SUB MouseDriver (m0%, m1%, m2%, m3%)
DECLARE SUB MouseHide ()
DECLARE SUB MouseInit (rowAdjust%, colAdjust%)
DECLARE SUB MousePoint (row%, col%)
DECLARE SUB MousePoll (row%, col%, lButton%, cButton%, rButton%)
DECLARE SUB MouseShow ()
COMMON SHARED /mousedrv/ mouseVar AS mouseType
--- FINE 
MOUSEDRV.BI
 ---
--- INIZIO MOUSEDRV.BAS ---
'---------------------------------------------------------------------------
-
'                         Andrea Alberto Martinoli
'                                MOUSEDRV.BAS
'  Libreria delle procedure per il controllo del driver residente del mouse
'                             13 Novembre 1992
'---------------------------------------------------------------------------
-
'$INCLUDE: '
mousedrv.bi
'
DEFINT A-Z
SUB MouseBorder (row1, col1, row2, col2) STATIC
  '------------------------------------------------------------------------
  ' Setta i limiti dei movimenti orizzontali e verticali del cursore del
  ' mouse
  '------------------------------------------------------------------------
  MouseDriver 7, 0, (col1 - 1) * mouseVar.colAdjust, (col2 - 1) *
mouseVar.colAdjust
  MouseDriver 8, 0, (row1 - 1) * mouseVar.rowAdjust, (row2 - 1) *
mouseVar.rowAdjust
END SUB
SUB MouseDriver (m0, m1, m2, m3) STATIC
  '------------------------------------------------------------------------
  ' Interfaccia al gestore residente del mouse
  '------------------------------------------------------------------------
  DIM regs AS regType
  IF MouseChecked = FALSE THEN
    DEF SEG = 0
    MouseSegment& = 256& * PEEK(207) + PEEK(206)
    MouseOffset& = 256& * PEEK(205) + PEEK(204)
    DEF SEG = MouseSegment&
    IF (MouseSegment& = 0 AND MouseOffset& = 0) OR PEEK(MouseOffset&) = 207
THEN
      MousePresent = FALSE
      MouseChecked = TRUE
      DEF SEG
    END IF
  END IF
  IF MousePresent = FALSE AND MouseChecked = TRUE THEN EXIT SUB
  'Chiamata all'interrupt di controllo del driver del mouse
 
regs.ax
 = m0
  regs.bx = m1
 
regs.cx
 = m2
  regs.dx = m3
  Interrupt 51, regs, regs
  m0 = 
regs.ax
  m1 = regs.bx
  m2 = 
regs.cx
  m3 = regs.dx
  IF MouseChecked THEN EXIT SUB
  'Verifica che l'inizializzazione del mouse sia avvenuta correttamente
  IF m0 AND NOT MouseChecked THEN
    MousePresent = TRUE
    DEF SEG
  END IF
  MouseChecked = TRUE
END SUB
SUB MouseHide
  '------------------------------------------------------------------------
  ' Nasconde il coursore del mouse
  '------------------------------------------------------------------------
  MouseDriver 2, 0, 0, 0
END SUB
SUB MouseInit (rowAdjust, colAdjust)
  '------------------------------------------------------------------------
  ' Inizializza il driver del mouse
  '------------------------------------------------------------------------
  mouseVar.colAdjust = colAdjust
  mouseVar.rowAdjust = rowAdjust
  MouseDriver 0, mouseVar.state, mouseVar.buttons, 0
END SUB
SUB MousePoint (row, col)
  '------------------------------------------------------------------------
  ' Sposta il cursore del mouse alle coordinate indicate
  '------------------------------------------------------------------------
  MouseDriver 4, 0, (col - 1) * mouseVar.colAdjust, (row - 1) *
mouseVar.rowAdjust
END SUB
SUB MousePoll (row, col, lButton, cButton, rButton) STATIC
  '------------------------------------------------------------------------
  ' Esegue il polling sul gestore del mouse
  '------------------------------------------------------------------------
  MouseDriver 3, button, col, row
  row = row / mouseVar.rowAdjust + 1
  col = col / mouseVar.colAdjust + 1
  IF button AND 1 THEN lButton = TRUE ELSE lButton = FALSE
  IF button AND 2 THEN rButton = TRUE ELSE rButton = FALSE
  IF (button AND 3) AND (mouseVar.buttons = 3) THEN cButton = TRUE ELSE
cButton = FALSE
END SUB
SUB MouseShow
  '------------------------------------------------------------------------
  ' Visualizza il cursore del mouse
  '------------------------------------------------------------------------
  MouseDriver 1, 0, 0, 0
END SUB
--- FINE MOUSEDRV.BAS ---