Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 27-10-2007, 18.30.10   #1
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
[C] Creare un'interfaccia dos

Al mio programma che sto scrivendo vorrei dare un aspetto un po' più piacevole creando un'interfaccia che ad esempio per scegliere delle opzioni permetta di selezionarle evidenziandole con le frecce della tastiera invece di dover scrivere il numero corrispondente all'opzione, in pratica alla fine vorrei fare una cosa che somigli a quella dell'immagine qui sotto:


Dove posso documentarmi?
Alhazred non è collegato   Rispondi citando
Vecchio 27-10-2007, 20.33.07   #2
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Che bello, un nostalgico come me.
Bene, come creare i riquadri è semplice.
Cercati una tabella di codici ASCII.
Per quanto riguarda la selezione, a te basta riscrivere l'intera stringa con colore di foreground e background differenti.
A tal proposito ti suggerisco di utilizzare degli array
Lo scrolling della finestra puoi effettuarlo a mano riscrivendo ogni array, oppure facendo ricorso alle funzioni del BIOS.
Non è detto che tu possa accedere a basso livello agli interrupt da richiamare per effettuare l'operazione, quindi ti consiglio di far ricorso alle API messe a disposizione da mamma M$ per quanto riguarda lo scrolling della console (Intera finestra o parte di essa).
C'è da lavorare ... (bei tempi)

Ultima modifica di LoryOne : 27-10-2007 alle ore 20.35.22
LoryOne non è collegato   Rispondi citando
Vecchio 27-10-2007, 21.12.28   #3
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
La grafica so come farla, non è un problema, il mio pensiero è soprattutto rivolto al come far muovere la selezione con le frecce, ma vediamo se ho ben interpretato il tuo messaggio.

Posso fare in modo che appena mostrato il menu, una voce sia evidenziata e fin qui no problem, poi metto uno switch che mi discrimini la pressiione del tasto "freccia su" e del tasto "freccia giù", ignorando ogni altro tasto. Questo penso di saperlo fare, mi basta trovare il codice che invia la pressione di "freccia su" e quello "freccia giù", quindi attivare rispettivamente l'API SetConsoleCursorPosition decrementando di uno la riga nel primo caso e incrementandola di uno nel secondo e quindi cambiare i colori foreground e background per le due righe coinvolte nell'operazione.
Infine, alla pressione di "invio" deve esser presa la riga su cui si trova il cursore, e prevedere un altro switch che attiva la routine che si trova elencata su quella riga in quel momento.
Ci sono oppure ho detto un mare di stupidate?
Alhazred non è collegato   Rispondi citando
Vecchio 27-10-2007, 21.18.42   #4
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Corretto mastro (Y)
LoryOne non è collegato   Rispondi citando
Vecchio 27-10-2007, 21.30.08   #5
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Che ne dici di aggiungere la possibilità di effettuare la selezione attraverso il mouse ?
------------------------------------------------------------------------
API anche per questo, ma è meglio, visto che con il vecchio DOS era necessario un driver per abilitarlo ed ottenere l'interfaccia per definirne dimensione, identificazione del numero di tasti utilizzabili, pressione e rilascio.
Cos'è cambiato con Windows ? Mah.
------------------------------------------------------------------------
Andiamo con ordine e pazienza, intanto produci
LoryOne non è collegato   Rispondi citando
Vecchio 27-10-2007, 22.29.54   #6
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Domani mi metto all'opera.
Grazie
Alhazred non è collegato   Rispondi citando
Vecchio 28-10-2007, 16.09.52   #7
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Non riesco a trovare una API che mi ritorni le coordinate del cursore all'interno della console, non c'è proprio o non la trovo io?

EDIT: ho trovato GetCursorPos, devo passargli un puntatore ad una struttura di tipo point, ma se lo faccio con:
Codice:
typedef unsigned int UINT;

typedef struct _POINT {
      UINT x;
      UINT y;
   }cursore, *LPPOINT;
mi dice
error C2371: 'LPPOINT' : redefinition; different basic types

Ultima modifica di Alhazred : 28-10-2007 alle ore 16.31.25
Alhazred non è collegato   Rispondi citando
Vecchio 28-10-2007, 16.40.46   #8
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Ho risolto il problema sopra, ma ora mi dice che non ho inizializzato la variabile.
Mi sa che comunque si riferisce al mouse...
Alhazred non è collegato   Rispondi citando
Vecchio 29-10-2007, 17.50.51   #9
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
La struttura POINT è decisamente generica, ma non è da scartare.
(Dalla struttura POINT derivano le coordinate degli estremi dell' area di una qualsiasi finestra, nonchè le coordinate del puntatore del mouse)
Ascolta, cerca di intendere la shell del DOS come una finestra a se, in qualche modo scissa da Windows.
Esistono funzioni API specifiche per la shell del DOS, quinid mamma M$ ha lavorato per te (a dire il vero più per se, ma noi siamo programmatori, non ingegneri ) .
Cerca documentazione su ReadConsoleInput e vedrai che sarai in grado di gestire li eventi della tastiera, così come quelli del mouse.
La shell del DOS è una finestra a se.
LoryOne non è collegato   Rispondi citando
Vecchio 30-10-2007, 00.46.29   #10
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Ho trovato molto interessante questo codice, all'interno sono definiti i vari menu da mostrare secondo la struttura
Codice:
typedef struct menu_item
{
  const char *title;
  struct menu_item const *submenu;
  void(*function)(void);
}menu_item;
che permette di scrivere i menu in questo modo
Codice:
menu_item const sub_menu_2[] =
{
  {"New SMS", NULL, func_21},
  {"List",    NULL, func_22},
  {"Back",    NULL, NULL},
  {NULL,      NULL, NULL}
};
Mi è praticamente tutto chiaro nel codice, ma non riesco a capire come attivare nei menu le mie funzioni passando anche dei parametri, una cosa del tipo
Codice:
menu_item const main_menu[] =
{
  {"Scrivi nuova email",   NULL, ScriviMail(hServer,hClient)},
  {"Leggi email ricevute", NULL, LeggiMail(hServer,hClient,2)},
  {"Leggi email inviate",  NULL, LeggiMail(hServer,hClient,3)},
  //ecc...
  {NULL,      NULL, NULL}
};
Cosa dovrei cambiare nel codice linkato affinché possa fare una cosa del genere?
Alhazred non è collegato   Rispondi citando
Vecchio 30-10-2007, 09.05.41   #11
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Ma Alh...tu passi dei parametri alle funzioni
LoryOne non è collegato   Rispondi citando
Vecchio 30-10-2007, 10.34.58   #12
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Si si, lo so che non è fattibile così come è scritto il codice che ho linkato, ma se ci fosse un modo per mettere delle chiamate a funzioni credo che avrei risolto tutti i miei problemi.
Alhazred non è collegato   Rispondi citando
Vecchio 10-11-2007, 11.32.45   #13
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Allora Alh, prodotto qualcosa o siamo fermi ?
Lo vedo che il codice utilizza array sottoforma di struct e "mal si adatta" al tuo codice che utilizza funzioni parametriche, ma c'è più di un modo per procedere adattando il tuo codice a quello dell' esmpio.
Puoi pensare ad esempio di utilizzare variabili globali la dove utilizzi parametri.
LoryOne non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Software hdclone per creare immagini del disco in caso di ripristino Moon75 Software applicativo 23 04-10-2008 19.07.10
[Java] Creare un frame con menu e grafica Alhazred Programmazione 10 28-06-2007 22.55.52
soft per creare pdf luca2 Software applicativo 3 06-11-2006 19.18.28
[XP] Creare cartella condivisa da limitato AMIGA Windows 7/Vista/XP/ 2003 0 13-10-2006 15.28.16
Creare partizione di swap Slith Windows 7/Vista/XP/ 2003 12 20-09-2004 19.44.10

Orario GMT +2. Ora sono le: 20.16.31.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.