Newsgroup: it.comp.lang.c++
Titolo: creare nuovu MFC e api che girano su qualunque OS che ne dite

salve gente sto cercando di implementare una librerie simile MFC che sfrutta
cioč i concetti di programmazione mfc che pero possa girare su qualunque
sistema operativo e non dipenda da driver o librerie esterne praticamente
bisognerebbe implementare tutto da zero partendo di funzioni c simile api a
vere proprie classi che sfruttano le api in soma una nuova che chiamerei
FFC(Free Fondation Class) o roba del genere probabilmente existe gia
qualcosa di simile in giro ma io vorei creare una cosa organizzata che vera
usato solo per studio e quindi non per lucro che ne dite? rispondete nel ng
oppure se volete mandarmi a quel paese potete scrivere su
deadb...@hotmail.com
 cosi non faccio figuracce di fronte agli altri spero
che prenderete almeno in considerazione la mia idea
ciao 
deadb...@hotmail.com

 writes:

(opinione personale) come idea non mi piace.  che ne dici invece di
implementare sotto microsoft tutte quelle funzioni che si trovano sui
sistemi operativi evoluti e che sono sfruttate dalla totalita' del
mondo accademico e della ricerca?  potresti chiamarlo "linux".
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it

 sistema operativo e non dipenda da driver o librerie esterne praticamente
Se devi scrivere una nuova libreria partendo da zero, e' meglio fare
qualcosa di abbastanza diverso da MFC, non credo che i concetti di
programmazione MFC siano il massimo.
Esistono gia' varie librerie per interfaccia grafica che girano su piu'
sistemi operativi, vedi 
http://www.free-soft.org/guitool/
Puoi prendere spunto da una di queste librerie e/o farne il porting
per altri S.O.
	Mauro

 usato solo per studio e quindi non per lucro che ne dite?
L'idea in se non è malvagia ma ha, secondo me, i seguenti aspetti
negativi:
1. E' decisamente troppo complessa per una persona sola.
2. Credo esistano già librerie del genere.
3. Le MFC che tu vorresti prendere a modello non sono sicuramente il
massimo della chiarezza e della coerenza.
4. Varie ed eventuali.
EMG

 EMG
ciao 
deadb...@hotmail.com

 non ho capito.
No, era solo per dire che forse ci sono altri aspetti negativi che al
momento non mi vengono in mente.
EMG

pianificazione
Scusa ma questa non credo di averla afferrata bene. Che vuol dire "hanno una buona
struttura di pianificazione". Pianificazione di che?
Andrea

usato solo per studio e quindi non per lucro che ne dite
E che cosa dovrebbe fare questa libreria, oltre a girare ovunque? Di grafica? di
multimedia? Di file management? di tutto lo scibile possibile ed immaginabile?
Se opti per quest'ultima opzione (sai, il nome Free Foundation Class non promette niente
di buono...), l'impresa è titanica per una sola persona. E anche con più partecipanti,
bisognerebbe organizzarsi abbastanza bene. Non è facile, specialmente se non si ha una
buona esperienza. Progettare l'architettura di una libreria di classi di queste dimensioni
non è assolutamente banale.  Prendi la stessa MFC, guarda la sua complessità e considera
che non è stata fatta da degli sprovveduti. Tutt'altro. Eppure...
Andrea

 struttura di pianificazione". Pianificazione di che?
intendo dire il modo in cui sono state implementate i concetti stessi delle
ereditarietà le varie macro e le classi semplici senza poi parlare
dei concetti per l'accesso ai database, alla grafica ed ad Internet secondo
il mio modesto punto di vista non credo che siano state create da l'oggi al
domani e conosco ben poche librerie che ti permettono di implementare un
qualunque tipo di programma dall'editore al motore di un database, ma non
essendo io un grande critico e non posso di certo vantare un 'infinita
conoscenza della programmazione in c e/o c++ posso solo dare il mio parere
su le cose che ho studio. Comunque non mi aspettavo una risposta del genere
da parte del ng la maggiore parte di risposte che ho ricevuto erano solo ed
esclusivamente per criticare la mia idea e ben poche persone hanno
dimostrato entusiasmo per il progetto da me proposto so perfettamente che è
un'impresa titanica ma ritengo che sia inutile criticarla senza produrre
nessun risultato concreto con questo non voglio dire che non mi piacciono le
critiche ben altro purché siano produttive e non distruttive vengano e
saranno sempre ben accolte. spero di cominciare a ricevere qualche risposta
costruttiva d'ora in poi.
Grazie delle vostre risposte e spero di riceverne altre
ciao Deadb...@Hotmail.com



siano produttive e non distruttive vengano e saranno sempre ben accolte.
Come detto prima, il mio intervento era più un preambolo che una conclusione. L'idea,
quanto meno, mi incuriosisce, però non posso prometterti di dedicarci del tempo. Andiamo
avanti e vediamo che succede....
Andrea

 di complessità.
e ai ragione citare le MFC in generale non è stato una grande idea. comunque
il progetto dovrebbe essere più o meno strutturato in questo modo:
1) creazione di nuovi tipi di variabili che prendono spunto da quelle gia
existente e che cambiranno carateristiche a secondo del s.o. in cui si
trovanno ad esempio:
da char otteniamo;
typedef char CHAR;
typedef char* PCHAR;
typedef char near* NPCHAR;
ecc..
ho gia implementato una macro che si occuppa di fare questo ed è .
TYPEDEF_ALLTYPE( oldType, newType)
viene dichiarato come:
#declare TYPEDEF_ALLTYPE( oldType, newType) typedef oldType newType; typedef
oldType* P##newType; ecc..
con questa macro si ottiene passando come parametri char e CHAR
TYPEDEF_ALLTYPE( char, CHAR)
allafine avremmo questi nuovi tipi
CHAR, PCHAR, PCCHAR ec...
in questo modo all'interno del progetto si utilizzerabno questi nuovi tipi
dichiarati.
2) creazione din una variabile stringa che verra passato come parametro alle
funzioni che gestiranno le stringhe
3) creazioni di funzioni per trattare i tipi di variabili e per le
conversioni
4) creazione di funzioni per l'input e l'output che si baseranno sui tipi
precedentemente dichiarati
5) creazioni di funzioni per la gestione delle schermo e dei file
6) creazioni di funzioni per le interfacce a carateri e grafiche
7) creazione di un concetto di msg
8) creazione di funzioni  per la gestione dei  msg e dei loro cicli
questi sono solo alcuni spunti per iniziare il progetto e se ci sono dei
punti da modificare sene discuterra magari trmite una mailinglist
spero che tu partecipi in questo progetto perchè ritengo che le tue
conoscenze potranno essere daverro utile per il progetto.
tengo a precisare che il progetto e fine a se stesso e quindi non dovra msi
essere usato a scopo di lucro ma solo per stidio e creazioni di prodotti
free. Non existe nessuna scadenza per il suo termine se non quello che i
progetisti voranno imporsi
spero che ci sia qualcuno che voglia dedicarlo anche solo 1/2 ora alla
settimana. penso che un'esperienza del genere a richira tutti quelli che ci
parteciperanno.
Nella speranza di riscontrare di riscontrare consenso vi porgo i miei umili
saluti.
ciao 
DeadB...@hotmail.com
 sempre a vostra disposizione

 strato di software che faccia da wrapper?
Secondo me una libreria come quella ipotizzata dall'amico ha senso solo
sotto una GUI. O sbaglio?
EMG

sotto una GUI. O sbaglio?
Probabilmente, ma ciò non toglie che sotto la GUI ci sia qualcosa d'altro. Una GUI puoi
realizzarla anche sotto dos. Quello a cui mi riferivo è il fatto di dare per scontato o
meno il supporto del paradigma event-driven. Se si lavora in piattaforme Windows-Like,
basta instradare adeguatamente i messaggi che si vuole gestire.  Il resto lo fa già il
S.O. Se si lavora in ambienti come DOS e si vuole continuare ad usare tale paradigma, mi
sembra chiaro che bisogna prepararsi a scrivere un layer intermedio che definisca i
messaggi, che monitorizzi l'attività del mouse e che definisca un sistema di mappatura
messaggio - handler di messaggio, oltre che opportune strutture dati per il routing degli
stessi messaggi. Tutto dipende a quale livello d'astrazione ci si pone. Che ne pensi?
Andrea

 stessi messaggi. Tutto dipende a quale livello d'astrazione ci si pone. Che ne pensi?
Non lo so. Sicuramente i meccanismi possono essere molto diversi tra un
sistema e l'altro ma credo che un orientamento event-driven debba
comunque esistere. O no?
EMG

 comunque esistere. O no?
Sicuramente do vra esistere un orientamento event-driven e di conseguenzza
bisognero implementare un layer intermedio tra le classi ed il s.o. ma penso
che sia un prezzo oblligatorio da pagare  per una libreria indipendete dal
s.o. o sbaglio?
ciao DeadB...@Hotmail.com

 usato solo per studio e quindi non per lucro che ne dite?
Che non puoi sperare di ottenere l'unificazione delle forze
fondamentali. Ovvero, una libreria del genere non potra' mai uniformare
il modo di programmare su piu' sistemi ed essere nello stesso tempo una
buona soluzione per tutti i problemi.
Faccio qualche esempio:
GDI di windows usa coordinate a 32 bit, QuickDraw di MacOS usa
coordinate a 16 bit. Quarz, il nuovo sistema grafico del MacOS X, usa
coordinate espresse in floating point. In GDI esiste il concetto di
Device Context compatibile, che il QuickDraw non ha. Una funzione di
blitting su QuickDraw viene fatta con lo smoothing, su GDI no. Unix e
BeOS hanno file system case sensitive, Windows e Mac no.
A mio avviso, puoi solo cercare di ottenere il minimo comune
denominatore che sia di supporto allo sviluppo multipiattaforma, ma che
dia la possibilita' di adattare il software al sistema dove e'
necessario.
Purtoppo ho poco tempo a disposizione e devo terminare qui' il
messaggio. Di cose da dire in proposito ne avrei molte.
Ciao.
--
Fabrizio Di Giuseppe
Real email address: fabrizio@_REMOVEME_iride.com
http://www.iride.com/fabrizio
Sent via Deja.com 
http://www.deja.com/
Share what you know. Learn what you don't.

 s.o. o sbaglio?
No, non sbagli. Temo che l'unica alternativa (utopistica) sarebbe che
tutti i produttori di sistemi operativi con GUI seguissero una API
standard.
EMG

comunque esistere. O no?
Si, lo credo anch'io.
Andrea

parteciperanno.
Si, ma con 1/2 ora alla settimana c'è il serio pericolo di terminare dopo il rilascio di
WindowsNT 5.0 :-)
andrea

Signori miei visto le risposte ed i suggerimenti ri cevuti che ne dite di
cominciare a fare qualcosa?
io ho gia un po di codice e sono pronto a postarlo ed a creare se necessario
un maillinlist o anche un news group per il progetto
ed eventualmente un ftp da dove scaricare e caricare i vari file che
comporrano il progetto( per quest'ultimo l'accesso in scritturra verra
riservata ai progettisti almeno che decidiate il contrario).
Questi sono più o meno i punti su ciu  si iniziera a lavorare aspetto
suggerimenti e consigli.

tengo a precisare che il progetto e fine a se stesso e quindi non dovra msi
essere usato a scopo di lucro ma solo per stidio e creazioni di prodotti
free. Non existe nessuna scadenza per il suo termine se non quello che i
progetisti voranno imporsi
spero che ci sia qualcuno che voglia dedicarlo anche solo 1/2 ora alla
settimana. penso che un'esperienza del genere a richira tutti quelli che ci
parteciperanno.


oppure se volete mandarmi a quel paese potete scrivere su
Premetto che non conosco assolutamente MFC, ma dai passati posts su questo
NG di programmatori che le usano e le hanno usate, non mi pare che siano
un esempio di buona programmazione in C++ da prendere a modello.
Attualmente esistono diverse librerie cross-platform in C e C++ di una
certa qualita` open source : FLTK, Fresco, wxWindow, gtk++, TOAD, ...
ed usa serie di librerie wrapper in C++ verso gtk++ (che cmq e` niente
male neanche da usare in C) : gtk--, VDK, wxGtk, ...
Potresti magari collaborare con uno di questi team, senza ripartire da zero.
C'e` sempre bisogno di nuovi collaboratori.
So cmq che esiste gia` un porting di MFC per X11.
Lo ha sviluppato la StarDivision per creare la GUI di StarOffice.
Non mi ricordo come si chiami ... mi pare Star Foundation Class, pero`
non so se sia rilasciato ed eventulamente sotto quale licenza.
Ciao
-- 
Roberto Gerola
Email: 
robert...@penguinpowered.com
WWW: 
http://www.penguinpowered.com/~The_Cpp_Compass

 messaggio. Di cose da dire in proposito ne avrei molte.
spero che riuscirai a trovare a trovare piu tempo da dedicare al progetto.

Per effetuare l'inizio dei lavori penso che sia indispensabile la presenza
di una sudivisione dei ruoli ed ho pensato che questa struturra gerarchica
non fosse male.
CP=Capo progeto
P = Progetista
C=consigliere
CP si ocuppera di di rigere i vari lavori il P si occupera di progettare le
varie funzionalità del progetto ed il C dara suggerimenti e consigli sul
progetto e fornendo documentazione ai P .
logicamente questo è solo un'idea e potra essere mdificata in qualunque
momento basta che sia prima di iniziare il progetto dopo verra fatto un
consiglio in cui dibatere le modifiche.
Sono aperto a qualunque tipo di suggerimento.
Pregherei ciunque sia interessato a partecipare al progetto di spedirmi
un'e-mail in modo che possa sempre tenerlo aggionato su gli avanzzamenti del
progetto.
Spero che saremo numerosi
ciao 
DeadB...@hotmail.com

se volete leggere i messagi precedenti andate su it.comp.lang.c oppure
it.comp.lang.c++
se non ci riuscite scrivetemi e faro in modo di spedirvi una copia dei vari
messaggi
Spero che parteciperete numerosi.
ciao 
DeadB...@hotmail.com

 WWW: 
http://www.penguinpowered.com/~The_Cpp_Compass



di buono anche per chi ne ha effetivamente bisogno.
Tu sei pazzo :-), o per meglio dire, stai decisamente sottostimando le
risorse necessarie per un progetto del genere. Di librerie multipiattaforma
ne esistono varie, e nemmeno quelle commerciali, piu' costose e affermate
riescono ad ottenere la completezza e l'universalita' cui accenni tu.
Imparare nuove cose lavorandoci sopra e' un intento lodevole, ma datti
degli obiettivi raggiungibili e rincara la dose progressivamente.
Altrimenti il megaprogetto naufraghera' prima ancora di ottenere il benche'
minimo risultato (parlo per esperienza).
Se invece vuoi partire comunque...buona fortuna. Anche se, in tutta
onesta', sarei enormemente sopreso se riuscissi a portarlo a compimento.

 onesta', sarei enormemente sopreso se riuscissi a portarlo a >compimento.
se tutti mi aiuterano avro buone possibilitą non existe niente di
impossibile existe solo il tempo e la determinazione
ciao 
DeadB...@hotmail.com

un maillinlist o anche un news group per il progetto
Scusami, ma io continuo ad evere molte perplessità. E non mi riferisco solo all'obbiettivo
"titanico", bensì all'intero modo di gestire il progetto. A mio modestissimo parere
iniziare a scrivere codice adesso è il modo più sicuro per non realizzare alcunché di
buono. Il lavoro, anche riducendo drasticamente i requisiti, non è affatto banale. Quindi
necessità di una fase di analisi in cui si esaminino le forze e i vincoli in gioco,
stilando un set minimale di obiettivi diciamo "prioritari". Anche il numero dei potenziali
partecipanti resta una variabile da considerare. Successivamente, direi che si può
iniziare a gettare le basi per l'architettura software (leggi design architetturale),
dalla quale convergere via via verso un livello di specifica tale che, a un certo punto,
diventa "naturale" tradurre il design in codice. Ora, sinceramente, di "naturale" io non
ci vedo niente (senza offesa, eh!). Ovviamente, se si lavora con una metodologia ad
oggetti, questa divisione
(analisi-design-coding) non sarà rigida, ma si inserirà in un ciclo di sviluppo "a
spirale".  Quello che vorrei sottolineare è che *il codice dovrebbe essere conseguenza
dell'architettura e non il vice-versa*. Tuttavia, se questo è solo il mio pensiero, non
insisterò ulteriormente su questa strada.
A prescindere da ciò, comunque, penso che sia davvero indispensabile, come da molti altri
sottolineato, partire con un sottoinsieme dei tuoi obiettivi: sia in termini di
cross-platform, sia come ambienti della libreria. Prescindendo dall'esistenza di un
insieme di ambienti diversi (tanto per citare gli stessi a cui ti riferivi tu: l'ambiente
per l'accesso ai database; quello per il supporto della grafica, quello per le classi
"utility" come le CString, CFile, etc di MFC), io penso che sia semplicemente impossibile
realizzarli tutti "al primo colpo". Troppa complessità. Però quello che si potrebbe fare è
iniziare, individuando un "kernel" che funga da nucleo, limitandosi per ora a una o al
massimo due piattaforme e poi costruire incrementalmente, seguendo un modello evolutivo,
di versione in versione. La stessa MFC è stata fatta in anni di lavoro da gente che faceva
solo quello...
Un altro pensiero che mi viene in mente è quello di non farti prendere dalla sindrome del
voler scrivere tutto di propria mano. E' possibile compiere determinate scelte che
facilitino il cross-platform senza pregiudicare lo sviluppo in una singola piattaforma,
almeno inizialmente. Tali scelte potrebbero concretizzarsi nell'adozione di tool di
sviluppo, di linguaggi (si è parlato di quale linguaggio vuoi usare? C++? C? Java?Tutto in
un
solo linguaggio?) e, magari, anche di componenti. Qui chi ha più esperienza di me può
darti dei consigli mirati.  Insomma, se il riuso è uno degli obiettivi di tale libreria,
perché non incominciare a farne tesoro fin da subito, e riusare già qualcosa nello
sviluppo della stessa? Che ne pensi / pensate?
Non lo so, forse queste sono idee che non collimano con il "modus operandi" che avevi in
mente. A me sembrano sensate, però, come detto prima, non è giusto che costituiscano una
forzatura
verso una direzione che non hai intenzione di perseguire.
Andrea

 insisterò ulteriormente su questa strada.
Io condivido.
EMG

 spero che riuscirai a trovare a trovare piu tempo da dedicare al
progetto.
Magari se attivi una mailing list mi inscrivo. Altro non ti posso
assicurare.


Signori miei sono davero contento di tutte le risposte che ho ricevuto ma
non riesco ancora ad avere adesioni e non ne capisco il MOTIVO
sono convinto anche io che bisogna a pensare di prpogettare i lavori ma se
nessuno mi da il una benche minima adesione non si potra mai cominciare a
progetare niente capisco le vostre perplessita ma non vi sto chiedendo
niente di particolarmente impegnativo mi basta sapere che vuole incaminarsi
in questa avventura e una volta che si saprasnna i parteciapanti si potar
cominciare a decidere come si dovra la vorare non ho posto nessun limite
alle possibile implementazioni il mio è stato un messaggio butatto in mezzo
al mare ed in'atesa di chi lo raccogliera e per il momento quelli che
l'hanno visto si sono solo fermati a criticare la bottiglia che lo
conteneva, l'ortografia e la gramatica (in senso lato)con qui è stato
scritto il msg senza mai sbilanciarsi e lasciarsi coinvolgere dal contenuto.
Con questo sono lo stesso molto felice di avare ricevuto consigli sul da
farsi però mi ratrista molto il fatto che nessuno si sia messo li a
costruire qualcosa di concreto non sto dicendo che bisognerebbe subito
cominciare a buttare giu codice ma almeno a discutere sul dafarsi.
ciao DeadB...@HotMail.com

 forzatura verso una direzione che non hai intenzione di perseguire.
Nessuna forzatura tutti i consigli e le analisi possono solo migliorare il
progetto.
Prova a legger i msg spediti negli altri n.g. ci sono spiegazioni che
,magari ti sono sfuggiti.
Scusate se le risposte sono arrivate tardi ma ho avuto dei problemi con la
mia  conessione a internet.


Una domanda: hai mai pensato a quardare se esiste gia' quello che vuoi
fare? Io di progetti del genere ne ho visti parecchi, a partire dalle
Gtk+ (
www.gtk.org
). Io ti consiglio di aggiungerti al gruppo se vuoi
programmare in C. Se vuoi programmare in C++ guarda la mia firma,
scarica e poi scrivimi. Le VDK sono molto piu' simili alla VCL che
alle MFC, e si basano sulle Gtk+, anch'esse multiplatform. E'
decisamente piu' semplice cosi' che iniziare un altro porgetto che
difficilmente portera' a qualcosa di utile oltre a chi le ha fatte.
Cosi' saremmo tre italiani e un rumeno!
--
(o-  T | If Bill Gate$ had a nickel for every time window$ crashed...
//\  U | ... oh, wait, he does...
V_/_ X | email: r.salmaso (at) 
flashnet.it
 | pinguin (at)
linuxfan.com
VDK (C++ GUI lib) 
http://www.guest.net/homepages/mmotta/VDKHome
VDKBuilder (RAD Tool) 
http://www.guest.net/homepages/mmotta/vdkbuilder

Signori miei sono davero contento di tutte le risposte che ho ricevuto ma




non riesco ancora ad avere adesioni e non ne capisco il MOTIVO
Forse abbiamo altro da fare...
Paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

unix, mac ecc..
La vedo dura, molto dura.
Ma mi spieghi perche` vuoi a tutti i costi reinventare la ruota ?
Esistono gia` svariate librerie di questo tipo in C++. Ce ne una che dovrebbe
girare persino in DOS : S.W.O.R.D. (
http://www2.hurrah.com/sword/
)
Se le esigenze di cross-platform sono cosi` pressanti perche` non usare
Java + librerie swing ?


1) Nei data base come si costruisce una tabella usando i comandi SQL
(create table; select; create wiew; etc. ....)
2) Riguardo ai dati, nei data base, che cosa significa integrità
semantica,
integrità di contesa, integrità referenziale.
Vi ringrazio anticipatamente del vostro aiuto.
Rocco.

 free e molto personalizzabile.
Che cos'e' il DJGPP?


 Che cos'e' il DJGPP?
è un tools di sviluppo che contiene compilatore, linker, editori, ecc...
guarda il NG comp.os.msdos.djgpp
ciao DeadB...@Hotmail.com
        e grazie di aevrmi risposto.

Capisco il tuo rammarico ma tu devi anche capacitarti che il progetto che
vuoi intraprendere č pura utopia. Non puoi scrivere API multipiattaforma
semplicemente perchč ogni SO implementa a modo suo la gestione della
memoria, del file system, dei driver, del multithreading  di un'eventuale
GUI. So che non vorresti buttare giů righe di codice ora come ora, ma
potresti farmi un esempio (solo il nome) di alcune funzioni capaci di girare
si sotto DOS (lo hai nominato tu), sia sotto Win che sotto Linux?
Ciao, Giuseppe

 primitive di funzioni da cui si partira per gerstire l'i/o
Gli stream del C++ non sono sufficienti per l'i/o su file?


 Rocco.
bye Chris

Integrità referenziale indica il fatto che non puoi inserire un valore
in un campo se non è già stato inserito in una seconda tabella. Non so
cosa intendi con integrità di contesa, forse l'accesso esclusivo a righe
della tabella e l'uso di transazioni?
GP