Newsgroup: it.comp.programmare.win32
Titolo: Da MFC a API

HO sempre e solo programmato in mfc e mi rendo conto che fanno
letteralmente schifo.
Vanno bene per li studenti (quale sono) ma per cominciare sono utili.
Adesso ho altre esigenze voglio spingermi + in là e perdere nottate a
capire
perchè un indirizo di memoria non viene passato correttamente e perchè
va in eccezione il progz su un puntatore :D
Voglio programmare con le API! Come si fa? cosa mi serve? dove lo
prendo(ciò che mi serve)? Va  bene VC++ 6.0? La Documentazione? Le
dialog come le disegno?
Non So niente e vorrei sapare tutto!
Voglio gestirmi persino il colore del pixel (x,y) della finestra :D
Datemi delle dritte :D ho 17 anni e voglio acculturarmi!!!

 wrote in message
news:c93efd2e.0301...@posting.google.com...

Tieni ti do' delle dritte per ben cominciare l'avventura.
Stai calmo non ti eccitare, a 17 anni il mondo e' tuo.
Vai qua e ti scarichi un tutorial in italiano sulle Windows API programmando
in C:
http://www.aleax.supereva.it/
E' stato fatto dal nostro guru italiano Alex Martelli, sono 40 e passa
capitoli.
Inoltre ti fai un giro su amazon e ti accatti la bibbia della programmazione
Windows con le API in C, ovvero
"Programming Windows" di Petzold:
http://www.amazon.com/exec/obidos/tg/detail/-/157231995X/002-8730950-8954451
?vi=glance
il link lo devi prendere tutto, potrebbe stare anche su 2 righe.
Questo e' un tutorial in inglese semplice:
http://www.mdstud.chalmers.se/~md7amag/code/wintut/wtpart1.html
Questi sono due famosi tutorials in inglese:
http://www.relisoft.com/win32/index.htm
http://www.winprog.org/tutorial/
Poi ti serve il VisualC++ o il DevC++ per compilare e linkare
Come disegnare le dialog e' semplice con i tutorials e con il resource
editor del Visual.
Per documentazione piu' paccuta, consulta le MSDN o in linea o nell'help del
Visual.
Se ti serve altro chiedi.
Maurus

 Adesso ho altre esigenze voglio spingermi + in là [...]
Questo è un altro discorso. La programmazione win32 con le API è utilissima
per capire come funziona windows a basso livello. Ti permetterà anche di
apprezzare quello che di MFC adesso "schifi".
Ciao. Federico.

Praticamente non devo cambiare nemmeno ambiente di sviluppo.
Va bene il VC++ 6.0? Il modo di disegnare le finestre rimane lo stesso
delle MFC? ma quindi quando apro un nuovo progetto devo scegliere lo
stesso MFC project... ?!??!
Sono Un pò confuso non cambiano tutte le classi e gli oggetti
attaccati a quelli grafici? tipo CEdit ecc??
Grazie 6 stato molto gentile a rispondermi mi stampo i manuali li
studio
e poi vado da bill a prendere il caffè :D
Alla prossima risposta DjSmind

 wrote in message
news:c93efd2e.03011...@posting.google.com...

Prima di tutto,
VisualC++ va benissimo ma dovresti creare nuovi progetti come semplici
applicazioni Win32 e non col wizard delle MFC.
Tutte le classi di MFC sono costruite su uno strato che e' al di sopra dello
strato delle Win32API, per cui le classi CEdit ecc.. hanno delle chiamate a
delle API di windows sottostanti.
Non ti aspettare di trovare CString e compagnia bella gia' sviluppate, e'
anche per quello che sono state progettate le MFC.
Inoltre le MFC sono scritte in C++, mentre i tutorials e il bibbione di
Petzold sono in C, ma cio' non ti impedisce di farti le tue classi in C++
per chiamare le varie API.
Maurus

 dialog come le disegno?
Fai bene. E' sempre bene capire a fondo su cosa stai sviluppando, come
funziona il sistema operativo. Ma stai sicuro che appena lo avrai capito
tornerai alle MFC, o a qualche altra libreria: perchè complicarsi la vita?
(Specialmente se hai una scadenza da rispettare!)
Sulle scatole del software non c'è mai scritto "Created using only Windows
API", perchè non è ritenuto da nessuno un valore aggiunto, anzi.
Dario

API", perchè non è ritenuto da nessuno un valore aggiunto, anzi.
Per me si :-)
Mi piacciono i programmi che ti puoi scaricare e utilizzare senza
dover fare il setup, senza che sia necessario avere la versione x.y.z
della libreria pinco.dll perche' con la versione x.y.w non funziona (e
con le MFC in passato mi e' capitato), senza che sia necessario
lasciare impronte nel registry, senza avere un runtime pesante (Visual
Basic e /o .net) etc etc.
Lo dico da sviluppatore Visual Basic per lavoro e in C++ solo con le
Win32 "pure" per passione.
PS.
Chiaramente anche in Win32 puoi essere legato a versioni specifiche di
componenti esterni, es i Common Controls, il mio era un commento
generico
Stefano "HappyMan" (Lago Maggiore - NO)
--
http://www.sgr.info
Email happyman69 (at) 
libero.it

 API", perchè non è ritenuto da nessuno un valore aggiunto, anzi.
Appena uscira qualcosa di mio inscatolato e spero presto (l'importante
è sognare) lo leggerai eccome :D
Questa discussione è molto interessante :D

Lo dico da sviluppatore [...] in C++ solo con le Win32 "pure" per passione.
Ah ecco ;-).... la parola magica e` "per passione" ;-)
-- 
Andrea Laforgia
#exclude <windows.h>

 Questa discussione è molto interessante :D
La trovo anch'io interessante.
Dario


Bravo Andrea!
:-))))))
Dario

 letteralmente schifo.
[...]
Lo pensavano anche dei clienti di un gruppo di colleghi. Avevano messo il
veto sulle mfc, perche' dicevano che erano bacate (per sentito dire, non
certo per riscontro diretto).
Allora questi programmatori per farli contenti prendevano il codice mfc e lo
incollavano nelle loro funzioni, facendolo passare per codice scritto da
loro. Il risultato era che i programmi costavano molto di piu', erano
praticamente mfc ma piu' lenti e piu' bacati. I clienti erano contenti e
pensavano di essere in un'avamposto della programmazione estrema.
Detto sinceramente le mfc non saranno il massimo, ma mezzo winzozz e' stato
scritto utilizzandole, cosi' chi pensa che facciano acqua mi sa che ha
sbagliato piattaforma ;-)
Poi sinceramente in sei anni di programmazione e diverse grosse aziende non
ho mai visto nessuno trovare un baco che fosse delle mfc e non suo...
ciao
merlinO

 [...]
Non insistere troppo. Su questo NG c'è gente che sa quello che dice.
Le MFC sono un framework per applicazioni e, in buona parte, un wrapper
delle API di win32 per dare un approccio ad oggetti alla programmazione.
Puoi in *ogni* punto di un applicativo MFC, decidere di scendere "a basso
livello" e utilizzare le API per alcune operazioni specifiche.
Semplicmente non te ne sei mai accorto o non ci hai mai pensato... :-)
Ciao. Federico.

Ah ecco ;-).... la parola magica e` "per passione" ;-)
Eh certo :-)
Anche se ho sviluppato mie funzioni/classi che mi facilitano la vita
la programmazione solo con le API, anche se e' molto gratificante (per
me ovvio) e' assolutamente poco produttiva...
 
Stefano "HappyMan" (Lago Maggiore - NO)
--
Personal Web 
http://www.sgr.info
Email happyman69 (at) 
libero.it

 merlinO
Su alcune cose potrei anche darti ragione, ma direi che Windows non e'
scritto utilizzando le MFC, alcune applicazioni, si, ma non certo il sistema
operativo. Almeno Windows2000 che sto usando ora.
------------------------
Microsoft (R) COFF Binary File Dumper Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
Dump of file C:\WINNT\system32\KERNEL32.DLL
File Type: DLL
  Image has the following dependencies:
    ntdll.dll
  Summary
        2000 .data
        4000 .reloc
       58000 .rsrc
       59000 .text
------------------------
Microsoft (R) COFF Binary File Dumper Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
Dump of file C:\WINNT\system32\USER32.DLL
File Type: DLL
  Image has the following dependencies:
    ntdll.dll
    KERNEL32.dll
    GDI32.dll
  Summary
        1000 .data
        3000 .reloc
        8000 .rsrc
       52000 .text
------------------------
Microsoft (R) COFF Binary File Dumper Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
Dump of file C:\WINNT\system32\GDI32.DLL
File Type: DLL
  Image has the following dependencies:
    ntdll.dll
    KERNEL32.dll
    USER32.dll
  Summary
        1000 .data
        2000 .reloc
        1000 .rsrc
       34000 .text
------------------------
NTDLL non ha dipendenze.
Luca

 Luca
ciao
merlinO

Ragazzi io non è che insisto ho una mia idea precisa tutto qui.
Mi sono sempre caratterizzato per questo le idee che ho intesta sono
mie non dei mass-media quindi giuste o sbagliate che siano a me vanno
bene :D
So che c'è gente competente qui ma per il fatto della gestione con le
mfc
non so ma sono ancora convinto anche se accetto le vostre idee.
Siamo cmq legati a poca portatilità e a dipendenza da librerie.
Poi ci sono alcune cose che non riesco a fare...
Non sò se dipenda dalle mfc o da me (probabile ma non ci scommetterei
:D) tipo gestire l'onclick su una casella di testo ma noto che non c'è
nemmeno il messagio dell'onclick quindi non sò se non viene gestito
dall'mfc o e proprio una cosa... non so....
Cmq mi fa piacere che in tanti avete partecipato a una discussione he
è servita a schiarirmi le idee e di sicuro ad imparare da qualcuno più
"colto" di me.
Giuro che passerei un giorno con ognuno di voi per imparare qualcosa
:D

 merlinO
Allora ho interpretato male io. Per OS io intendo il kernel a pochi altri
fronzoli (tipo gdi, appunto). Campo minato per me e' venduto assieme al
sistema operativo, ma non ne fa parte. Comunque non sarei nemmeno troppo
sicuro del fatto che la applicazioni vendute assieme a Windows siano scritte
con le MFC... Giusto per curiosita' ho guardato campo minato (che adesso
chiamano prato fiorito... bleah), wordpad (write.exe) e notepad.exe, che mi
pare si prestino bene per essere scritte con le MFC (forse sbaglio, non le
ho mai usate). Comuqnue per il resto non discordo da quello che dici. Non ci
vedo nessuna guerra religiosa tra chi le usa e chi non le usa (pero' sono
convinto che un programmatore Win32 C sia 'potenzialmente' migliore di uno
MFC per il fatto che a differenza del secondo e' costretto a sapere delle
cose che all'altro non occorrono (e se usa i wizard occorrono ancora meno)).
Se a uno fanno comodo che le usi pure. Io sinceramente non ci vedo tutto
quell'aiuto per progetti fino a una certa dimensione, a parte le classi gia'
pronte da usare su codeguru e codeproject o sulla rubrica C++ di Paul
DiLascia su MSJ (che adoro). Per progetti veramente pesanti possono far
comodo, non in quanto MFC, ma in quanto oggetti (se il programma venisse
scritto 'bene' in C++ con un frameword custom si avrebbe probabilmente lo
stesso risultato, con piu' fatica pero'). Riassumendo: a meno di non dover
riscrivere Word un bravo programmatore C con una bella libreria di codice
testato e riutilizzabile e' produttivo alla stessa maniera di uno MFC (o di
uno che usa Win32ASM, che ce ne sono parecchi).
Luca

ho mai usate). 
Su qualche versione fa di WordPad era esplicitato l'uso di MFC.
In ogni caso, stento a credere che il software Microsoft, venduto con
il sistema operativo (per lo meno nelle versioni del sistema
antecedenti le ultimissime), non sia stato scritto con le MFC.


"Andrea Laforgia" <x@x.x> ha scritto nel messaggio
news:5dtn2vcvqpt5kofuf...@4ax.com...

Boh, non saprei, io ho provato solo con Win2k, non ho altro sotto mano.
Microsoft (R) COFF Binary File Dumper Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
Dump of file c:\winnt\system32\write.exe
File Type: EXECUTABLE IMAGE
  Image has the following dependencies:
    SHELL32.dll
    KERNEL32.dll
    MSVCRT.dll
  Summary
        1000 .data
        1000 .rsrc
        1000 .text
Luca

Boh, non saprei, io ho provato solo con Win2k, non ho altro sotto mano.
Ti assicuro che, fino a poco tempo fa, all'avvio di WordPad veniva
esplicitato l'uso di MFC.  
-- 
Andrea Laforgia
#exclude <windows.h>

"Andrea Laforgia" <x@x.x> ha scritto nel messaggio
news:a8vn2v09f8tr0mps8...@4ax.com...

Svelato l'arcano! Io ho fatto il dump di c:\winnt\system32\write.exe che in
realta' sembra un wrapper (per compatibilita'???) per c:\programmi\windows
nt\accessori\wordpad.exe che usa le MFC. Pero' gli altri tool del sistema
operativo che ho controllato non le usano :).
Luca

 Maurus
ciao
merlinO

 Luca
ciao
merlinO

 è sognare) lo leggerai eccome :D
Attualmente i progetti software di largo consumo superano in media il
milione di ore uomo. Significa che se un uomo dovesse fare il medesimo
prodotto da solo dovrebbe lavorare piu' di un milione di ore. Questo mi
convince che se un giorno farai qualcosa non lo farai da solo e come l'avrai
fatto non l'avrai deciso tu :-)
ciao
merlinO

uno che usa Win32ASM, che ce ne sono parecchi).
Sono d'accordo QUASI su tutto, purtroppo l'approccio a basso livello a
OLE/COM in C++ & Win32 e' decisamente MOLTO complicato.
Stefano "HappyMan" (Lago Maggiore - NO)
--



Luca

 lo stesso sforzo le chiamate le posso fare direttamente io?
Semplicemente per non reinventare la ruota.
Ora, non concordo sul tuo "stesso sforzo":
Hai mai scritto qualcosa in C + API per win32?
Credo che, se si, concorderai su questo:
- le righe di codice che scrivi saranno molte di piu' rispetto ad una
versione in cui useresti un fremework,
stimiamole 1:20 ( mi sento molto ottimista a dire il vero in tale stima).
Se ti attieni al paradigma dei bugs per line, nelle tue applicazioni avrai
20 volte tanto i bug che avresti avuto
usando mfc (o un altro framework).
MFC non sono "wrapper". MFC e' un framework ad oggetti.
Mi sento inoltre di fare il punto su una cosa che spesso viene ignorata:
- il target delle applicazioni.
non tutte le applicazioni sono timecritical e/o missioncritical.
Scrivere tutto sulle API per avere efficenze puo' essere utile ed efficace
( non sempre! spesso
si arriva soltanto a produrre dei casini enormi da cui non si tirano piu'
fuori i piedi ) per
la tua killerapplication. Farlo per un gestionale con un database e'..
stupido; perdi un sacco di tempo
e non ne guadagni nulla ( non sto parlando di soldi.. ma il discorso vale
anche per quello).
Obbietterai:
 ma come uso mfc posso tranquillamente scrivere librerie mie ed usare
quelle.
Hai diversi svantaggi nel farlo:
- Le Mfc son senz'altro piu' conosciute delle tue librerie, se altri oltre a
te dovranno mantenere il progetto che
stai sviluppando, anche loro dovranno conoscere la tua libreria.
- Serve tempo per scrivere una libreria simile ;)
- Vale la pena reinventare la ruota quando hai gia' dei framework belli che
fatti? Sei sicuro che la tua libreria
  sarebbe scritta meglio di un'altra che potresti usare?
- Hai tenuto conto che su Mfc avran messo mani centinaia di persone e tu sei
uno solo? ;)
Sbirish (
unboffable.hn.org
)


Luca

 Luca
ciao
merlinO


Ciao
Luca

 scrivo spesso e' time critical. Quindi non faccio testo :).
Certo che fai testo ;) perchč non dovresti?
Ciao, Roberto (Sbirish)

 Luca
ciao
merlinO

 Ciao, Roberto (Sbirish)
merlinO e le metafore che si precano