[ Milan Aksic @ 10.03.2002. 22:19 ] @
Nekoliko pitanja u vezi Win programiranja.
Kao prvo, sta vi najcesce (ili samo) koristite, MFC ili WinAPI, i zasto?
Da li kod nas postoji neka knjiga o WinAPI-ju, jer trenutno citam 'Visual C++ 6.0 Richard C. Leinecker & Tom Archer' i nisam naisao ni na sta drugo osim MFC-a, ili pored tolikih referenci nije potrebna posebna knjiga odakle bi se to naucilo, ili (opet :)) mi recite odakle ste vi ucili WinAPI?

Pozdrav.
[ Dragi Tata @ 10.03.2002. 22:34 ] @
Obično se trudim da razdvojim OS-specifične stvari koliko je god to moguće. Tako da "programsku logiku" pišem u ISO C++ -u, za "nevizuelne" Windows zadatke koristim WinAPI, a za GUI ipak MFC.

Što se knjiga tiče, većina ljudi smatra da je pravi izbor:

1. Za MFC, http://www.wintellect.com/about/instructors/prosise/mfcbookb.asp

2. Za WinAPI GUI programiranje: http://www.charlespetzold.com/pw5/

3. Za WinAPI nevizuelno programiranje (knjiga je na jako visokom nivou):
http://www.wintellect.com/about/instructors/richter/prog_apps.asp
a za server-side (tu sam naručio ali mi još nije stigla)
http://www.wintellect.com/abou...ctors/richter/prog_ss_apps.asp

Nadam se da sam bio od koristi :)
[ Milan Aksic @ 11.03.2002. 15:43 ] @
Da thanx :) mada me interesuje jos nesto, naime kao sto sam rekao, u ovoj knjizi koju trenutno citam vrlo se malo govori o API-ju za razliku od MFC-a, pa kako je API na nizem nivou, brine me, da ne ostanem uskracen toga, jer ipak MFC skriva dosta detalja za razliku od API-ja, a ipak ti detalji su mi mozda neophodni za razumevanje, na pocetku.
[ Dragi Tata @ 11.03.2002. 16:09 ] @
U principu, bolje je da prvo "načneš" MFC. MFC klase uglavnom sadrže funkcije koje odgovaraju WinAPI funkcijama (čak imaju i ista imena), samo je lakše da se snađeš. Uostalom, uvek možeš da pogledaš source za MFC i nađeš kako je to implementirano preko API-ja.
[ Ivan Dimkovic @ 11.03.2002. 19:55 ] @
Ja obicno koristim MFC samo za rapid development GUI aplikacija, jer je po mom misljenju vrlo dobro odradjen za to.

Ako pogledas moj sajt pa products, videces par end-user aplikacija (samo demoi...) - sve su radjene u MFC-u, iz prostog razloga sto je uvek ostalo 15-30 dana do nekog showcase-a odredjenim ljudima - bez MFC-a nisam siguran da bi moglo tako nesto da se uradi za, na primer, 10-15 dana.

A sto se tice ozbiljnijih projekata (recimo, tehnologija "ispod" tih MFC aplikacija)... hmm... plain vanilla ANSI C ili ISO C++ , sa opcionim #ifdef klauzulama za Intel assemblerske optimizacije...
[ leka @ 11.03.2002. 21:28 ] @
Ja na MFC gledam kao Microsoft-ovu teznju da (po n+1 put) sa jedne strane nametne standard (windows programiranje) a sa druge strane da pokrije ono sto neki drugi kompajleri imaju "po difoltu"...

MFC po meni terba da koriste jedini i samo jedino VC++ programeri - mada mogu i drugi da koriste bez problema, a evo zasto sam protiv MFC-a:

1) Kod je sporiji. To niko, ali NIKO ne moze da me ubedi da nije sporiji...
2) Zakomplikovali su ga maksimalno
3) Ako se programer nedajboze navikne na MFC (a to je cilj M$-a), a sva je prilika da ce se navici (pre bih rekao "navuci") onda nema sanse da se kasnije "presaltuje" na nesto drugo tako lako. Ako se i presalta uvek ce mu "faliti" nesto sto je u MFC "tako lepse izvedeno". - Upravo zbog ovakvih "budzavina" MFC kod je PRIMETNO sporiji od recimo (da ne pominjem neke druge ;) QT aplikacije...

Kad ovo pricam mislim na GUI, a kad su neke druge stvari onda je jos sporiji.

Ako ne verujete, napravicemo testove.
[ leka @ 11.03.2002. 21:36 ] @
Trebalo je da dodam i PORTABILNOST - ako koristite MFC zaboravite portabilni kod. Kad kazem portabilni, mislim na prostu "samo rekompajlirati na drugoj platformi" kompatibilnost.

Koji poznati ToolKit-i rade po ovom sistemu?
- FLTK (linux, windows, svi unixi, macos (i stari i novi), OS/2, QNX, MicroWindows, ...)
- QT (linux, windows, unix i odnedavno MacOS)
- GTK (samo windows, linux i unix)
- wxWindows (linux, windows, od skora macosx)
- FOX toolkit (linux, windows)

Svi navedeni toolkiti su napisani tako da se kod SAMO, ali SAMO iskompajlira ponovo! Licno imam iskustva sa FLTK-om. Aplikaciju pod Wintendoom samo iskompajliram pomocu VC++, Borland C++, Watcom C++, Intel C++ kompajlera i dobijem kod koji radi! - Samo rekompajliram na Linux-u i dobijem ISTU aplikaciju! :)

Mozda, kazem MOZDA, je napisan neki MFC wrapper za Linux, ako jeste ta ekipa koja to radi je totalno luda. Tako glomaznu stvar samo M$ programeri mogu da izmisle... Izgleda da kod njih vazi ona stara dobra "sto mora lako kad moze komplikovano?"
[ Dragi Tata @ 11.03.2002. 21:52 ] @
Od 4 razloga protiv MFC-a koje si naveo:

1) Ne verujem da je sporiji od Qt-a, ali treba probati pa videti.
2) U pravu si, ali to je pre svega zbog backward-kompatibilnosti
3) U pravu si (zbog ovog ni ja ne koristim MFC, osim kad baš moram)
4) U pravu si i ovde, ali kad malo bolje razmislimo, meni dosad niko nije tražio da pravim GUI aplikaciju za bilo šta osim Win-a.

I ja bih još dodao da je MFC "mnogo debeo". Natrpali su u njega i šta treba i šta ne treba. A ko god je isprobao MFC socket klase, krstio se i levom i desnom rukom, pa se na kraju prešaltovao na API. Najzad, mnogi vole CString klasu, ali je se ja užasavam zbog razloga 3) koji je Leka napomenuo.

Pa ipak, kad treba nešto "quick and dirty", ili samo "tanak" GUI sloj, koristim MFC.
[ Mikky @ 11.03.2002. 22:20 ] @
pa nemozes da ocekujes da MFC bude portabilan kad je to OS specific biblioteka klasa
bar ja tako mislim...
[ Ivan Tanasic @ 11.03.2002. 22:55 ] @
Sad ja da pitam par stvari....

Da li samo mfc ima raznolike stvari poput onih 'olaksica' za stampanje i slicno???

I da li je iko ikad uspeo da iskompajlira mfc aplikaciju pod nekim unixom (pa makar se i malo namucio).

I koji od ovih toolkitova podrzava najvise budzevina poput mfc..

E da, i jel mfc samo za razvijanje guia ili za sve i svasta (kolko vidim po prici bice da je drugo ))
[ Dragi Tata @ 11.03.2002. 23:32 ] @
Ima neki port MFC-a za Unix-e, blue ga koristi. Pogledajte malo po forumu...
[ leka @ 12.03.2002. 23:58 ] @
Ma nikada nece biti porta za MFC... Mozda je neki procenat MFC klasa uradjen, ceo MFC bi samo kreteni resili da "portuju" . Zasto kazem kreteni? - Pa prosto neke klase su totalne gluposti!
[ Jovan Marjanovic @ 13.03.2002. 10:51 ] @
Ko sto je Dragi Tata pomenuo, ja sam portao MFC kod na HP-UX i na solaris.
Kada smo poceli da portamo, imali smo par opcija. Naime, imali smo ceo GUI uradjen u dve verzije. Motif za unix, i MFC za windowse. Onda smo skartali Motif GUI, i resili da napravimo jedan gui koji ce raditi na svim platformama. Posto radim za firmu u kojoj support znaci sve, imali smo samo par opcija - QT, i Briston Wind/U. Odlucili smo se za Wind/U varijantu zato sto bi za QT morali da pisemo sve iz pocetka umesto da portamo nesto sto vec imamo. Posao je trajao oko 7 meseci (nas GUI je ogroman, oko 1.000.000 linija koda) i sada imamo MFC GUI koji radi na unixu. Wind/U je inace GUI i Engine za MFC na unixu, razvijen je primarno za IRIX, i posle je sportan na HP-UX, Solaris i AIX. I moram da priznam da radi sasvim fino, mada donekle sporo. Engine deo emulira windows registry za aplikaciju, a library ima sve ostalo.
ps. Cijena sitnica - samo oko 14.000 $