Newsgroup: it.comp.lang.c++
Titolo: differenze MFC 4.0 e successive!!

ciao stiamo facendo il passaggio di un'aplicazione da Visual C++ 4.0 a
5.0/6.0, ma ci siamo imbattuti in un problema imprevisto.
L'applicazione, che utilizza in stragrande maggioranza le MFC, ricompilata
in Visual C++ 5.0 non funziona correttamente in ambiente 16 bit (Win 3.1Xcon
Win32S), o meglio in una form all'apertura di una Open Dialog si blocca
tutto.
I nostri dubbi sono:
- è possibile che le  MFC diano problemi sotto il nuovo ambiente? (MFC 4.0
in VC++ 4.0 e 4.21 in VC++ 5.0)
grazie a tutti e ciao
Michele.

 in Visual C++ 5.0 non funziona correttamente in ambiente 16 bit
Credo che il VC++ 5.0 produca solo codice per piattaforma WIN32. La
Microsoft purtroppo ha brutalmente scaricato il vecchio e stabile
ambiente WIN16 per ottenere cosa? Bachi e pesantezze a non finire... :-(
EMG

 wrote in message
news:3765967...@flashnet.it...


delegata a Windows 3.1X?
Hai provato a vedere se il problema sussiste anche su altre piattaforme Win32?
Sei sicuro che tutte le funzioni che usi nel programma siano supportate adeguatamente da
Win32s?
Come sai, Win32 è una piattaforma virtuale: non esiste da nessuna parte. E' una specifica
generale. Ogni piattaforma reale (Win3.x, Win95/98 e WinNT/CE) mantiene la stessa
interfaccia di programmazione descritta in Win32, ma presenta un'implementazione diversa e
adeguata alla propria architettura. Così molte API esistono in tutte le piattaforme, pur
comportandosi in modo  diverso. E' possibile che tu stia usando una di queste API, il cui
comportamento è implementato in modo parziale in Win32s? Forse sarebbe il caso che
postassi un piccolo frammento del programma, in prossimità della presunta fonte dei
problemi, ammesso che non sia troppo lungo.
Ovviamente non hai usato alcuna funzione o struttura dati non documentata di MFC, vero?
Andrea

Win32s č una porzione (la s infatti sta per "subset") delle API a 32 bit del
Win32 sviluppata dalla Microsoft per permettere ai sistemi a 16 bit (Win
3.1x) di far girare le nuove applicazioni per Win9x/NT.
Del Win32s, progetto abbandonato, la Microsoft non ha mai voluto garantire
il corretto funzionamento.
Quindi non meravigliarti se con la nuova versione del compilatore il
programma non gira su Win32s.
Ciao, Giuseppe

 adeguata alla propria architettura.
Ma Win3.x non si conforma alla piattaforma Win32 bensě alla vecchia
Win16 o al massimo, con le opportune librerie, alla Win32s che č una
versione ridotta della Win32.
EMG

versione ridotta della Win32.
Certo, Win3.x è basato su Win16, indubbiamente. Tuttavia, alla M$ quando hanno progettato
Win32 non avevano alcuna piattaforma che potesse implementarla. Windows NT non esisteva
ancora, così come Windows95. L'unica cosa che avevano era Win3.x. Quindi la prima
implementazione reale di Win32 fu proprio Win32s su Win3.x (una sorta di Win16++ o, forse,
Win32--). Ovviamente, loro dovevano risolvere il problema di far dialogare codice a 16 bit
con codice a 32 bit. Alla fine, svilupparono un meccanismo di thunk (che sarebbe diventato
poi il pane quotidiano di Win95) che rimappava funzioni dalla specifica Win32 a Win16.
Analogamente per le strutture dati e i tipi.
La realizzazione di una piattaforma puramente a 32 bit resta Windows NT. Tuttavia Win32s è
stato forse il primo WOW (Windows On Windows) realizzato e viene annoverata come
piattaforma Win32, nonostante le sue limitazioni che, in realtà, sono le limitazioni di
Win3.x.
Andrea

3.1x) di far girare le nuove applicazioni per Win9x/NT.
Quando Win32s è stata creata, né WindowsNt, né Windows9x esistevano ancora.
Quindi non è stata creata per compatibilità all'indietro.
andrea

andrea
Questo è il testo originale dell'MSDN fresco fresco di cut&paste:
"Win32s is a set of DLLs and a VxD which allow Win32-based applications to
run on top of Windows or Windows for Workgroups version 3.1. Win32s supports
a subset of the Win32 API, some directly (like memory management) and some
through thunks to the 16-bit systems (particularly GDI and User)."
Credo a ciò che dici tu ma da quello che dice l' MSDN sembra come se fosse
stata creata successivamente per permettere alle applicazioni a 32 bit di
girare sul Win3.x in presenza di una CPU a 32 bit. Comunque non è questo il
problema.......
Ciao, Giuseppe

problema.......
Si, non è questo il problema. Comunque MSDN dice esattamente quello che ti ho detto io.
Non parla di Win95/NT ma di Win32. Non sono la stessa cosa.  Puoi trovare una
dissertazione in tal senso, se ti dovesse interessare, in "Advanced Windows 3/E" di
Jeffrey Richter. Sai, se lo dicessi solo io, conterebbe ben poco. Mica l'ho fatta io Win32
:-)
Andrea