IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Vos expériences sur la migration de VC++6 vers VC++.NET


Sujet :

MFC

  1. #1
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut Vos expériences sur la migration de VC++6 vers VC++.NET
    Bonjours,

    Je souhaiterais réaliser une FAQ sur la migration de Vc++6 vers VC++.NET.

    Apparement la migration est assez facile, mais il y a toujours quelques petits soucis, des petits bouts de code à reécrire. Je souhaiterais savoir quels problèmes vous avez rencontré et comment vous les avez solutionnés.

    Vos témoignage seron repris dans la FAQ, avec votre nom d'utilisateur comme signature et un lien vers votre profil.


    Merci d'avance pour votre participation

  2. #2
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 61
    Points : 83
    Points
    83
    Par défaut
    J'ai eu des problèmes avec les objets de type CString qui sont
    remplacés par des templates dans la version DOTNET des MFC.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    J'avais fait un programme en Visual C++ normal. Puis je suis passé à .net . Rien ne marchait à cause de problèmes de précompilation. J'ai cherché pendant 1 heure comment on enlevait les précompilations, mais impossible de trouver.

    Finalement de rage, j'ai désinstaller .net parce que je trouvais qu'il m'était inutile d'avoir un seul programme trop compliqué et illisible (pour pouvoir tout rassembler en un) alors que plusieurs programmes spécialisés me suffisait.

    Bien entendu, c'est ma propre opinion qui n'engage que moi, étant un programmeur débutant et qui n'a pas de projet spécifique autre que de programmer en amateur pour le plaisir. Cela signifiant qu'il me suffit d'avoir un programme simple qui donne rapidement des résultats, et non quelque chose de performant et portable ...

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    Salut
    Pour ma part tous c bien passe. Encore mieux: J'avais certains pb avec dynamic_cast qui ne repondait pas correctement; pas de ca dans .net
    La surchage du type de retour des methodes vitual est enfin pris en compte (1 bonheur).

    Mais je tiens a signalé que je n'utilse pas MFC no STL (j'ai ma biblio).

    a+

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut ,voila mon experience du portage
    j'ai porté un librairie (perso) d'outils de plusieurs 10 milliers de ligne sans trop de pb ,pour recompiler linker des prog .
    liste de mes pb les plus marquants:
    pb avec les CString sur l'acces à certaines variables internes (je sais c'est mal).
    pb avec les CFile :
    exemple avec resolution compatible avec VC6.0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BOOL CDIBPal::Save(CFile* fp)
    {
    #if _MFC_VER >= 0x0700
        return Save((UINT)fp->m_hFile);
    #else
        return Save(fp->m_hFile);
    #endif
    }
    plus des differences de signatures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #if _MFC_VER >= 0x0700
     virtual ULONGLONG GetPosition() const;
    #else
      virtual DWORD GetPosition() const;
    #endif
    suffit de regarder les defs des classes

    certaines structures sont differentes, exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #if _MFC_VER >= 0x0700
    struct CCharFormat : public CHARFORMAT2
    #else
    struct CCharFormat : public CHARFORMAT
    #endif
    pd d'acces à des includes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #if _MFC_VER < 0x0700
    #include <..\src\afximpl.h>
    #else
    #include <..\src\mfc\afximpl.h>
    #endif
    un classique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #if _MFC_VER < 0x0700
    #include <fstream.h>
    #else
    #include <fstream>
    #endif
    mais le plus gros pb n'est pas la à mon avis ,j'ai ecris plusieurs OCX pour compenser la grisaille des ctrl statics edit et button de l'IDE pour le portage pas de pb a part quelque <> de signatures ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #if _MFC_VER >= 0x0700
    LRESULT CMyButton::OnDrawItem(WPARAM wParam, LPARAM lParam)
    {
    	int nIDCtl=wParam;
    	LPDRAWITEMSTRUCT lpDrawItemStruct=(LPDRAWITEMSTRUCT)lParam;
    #else
    void CMyButton::OnDrawItem(int nIDCtl,LPDRAWITEMSTRUCT lpDrawItemStruct) 
    {
    #endif
     
     
    #if _MFC_VER >= 0x0700
    return 0L;
    #endif
    }
    dans le .h : section Afx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #if _MFC_VER >= 0x0700
    LRESULT OnDrawItem(WPARAM wParam, LPARAM lParam);
    #else
    afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
    #endif
    jusque la tout va bien ,ca tourne perfect sous XP / 2000 j'ai même trouvé des bugs recalcitrants sous VC6.0
    mais les prgs de gestion fait avec VC7.0 sous 98/95/ME et NT.40
    c'est pas le top , la couche OLE est trop <> les OCX ne s'enregistre pas .
    j'ai donc laisser mes OCX en vc6.0 ,
    voila pour l'essentiel.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Salut tous le monde,
    pour ma part, je n'est pas eu trop de problemes, car je n'est travaillé sous VC++6.0 que pendant 2 mois, puis je suis passé à VC++.Net, donc, pas de probleme notable, ya juste un truc que j'apprécie grandement avec .Net, c'est l'accés à l'arboréscence du .Net (avec le nom d'espace System). Donc, c'est beaucoup plus facile de gérer les Sockets, les Threads ...

    Voila, donc, je n'est pas eu trop de problème
    White_Angel

  7. #7
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    En C++ standard le plus gros probleme c'est <iostream.h> qui disparraît avec VC++ 2003. Il faut passer à <iostream>.
    http://c.developpez.com/faq/cpp/?pag...le#SL_iostream

  8. #8
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    J'avais également eu un problème avec les include "iostream", mais globalement, tous les autres programmes fonctionnaient plutôt bien

  9. #9
    Membre habitué Avatar de CriPpLe
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 157
    Points : 125
    Points
    125
    Par défaut
    Je viens juste d'avoir visual studio .net pro!!!
    J'ai à peine regardé, l'IDE à l'air carrement génial, mais bon j'aurai besoin d'un temps pour m'y adapter

    Je vous dirai mon avis quand j'aurai touché à tout ça de plus près

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Février 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 582
    Points : 218
    Points
    218
    Par défaut La panique totale
    Je viens juste de passer de C++ 6 à .Net.... et c'est l'horreur !!!
    Il me met des erreurs de partout , surtout dans les templates... et à priori, je vois pas le problème...
    Encore des jours à s'arracher les cheveux en perspective!!!!

  11. #11
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut Re: La panique totale
    Citation Envoyé par charliejo
    Je viens juste de passer de C++ 6 à .Net.... et c'est l'horreur !!!
    Il me met des erreurs de partout , surtout dans les templates... et à priori, je vois pas le problème...
    Encore des jours à s'arracher les cheveux en perspective!!!!
    c'est sur que le passage de vc6 a .net pour les STL c'est la cata

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Ce qui est clair c'est que .net simplifie largement l'utilisation des MFC!

    Pour le Pb de Cyrik la solution se trouvait dans-->Projet---->propriétés--->C/C++---->en tête précompilé-->et choisir de ne pas utilisé d'entête précompilé!

    Pour ce qui est de la migration j'ai pas une de gros problème, y a toujours les STL qui ont coincé au début et deux trois active X pas trop compatible (changement de nom de methode...)

    mais sinon je trouve que .net reste un bonne outils pas si compliqué que ça!

  13. #13
    Membre actif
    Inscrit en
    Juin 2003
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    L'intégration en .NET de librairies externes est très fastidieuse (voir le tutoriel de Morpheus). Comme j'ai besoin de DLLs qui ont été développées avec les MFC, j'ai laisser tombé la migration vers .NET. Il faudra d'abord attendre que l'éditeur du SDK sur lequel je développe migre ses bibliothèques en .NET.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2003
    Messages : 50
    Points : 56
    Points
    56
    Par défaut Framework .Net accessible ou non ?
    Salut,

    Je suis juste en train de passer à .net dans un contexte de dvlp d'un logiciel professionnel (environ depuis 2 jours...).

    Une partie du logiciel est en VB .net, l'interface utilisateur, le client en fait.
    Une autre partie est en VC++ .net, le serveur.
    Une chose n'est pas claire pour moi : le framework .net est il accessible en Visual C++ ? J'ai bien retrouvé les MFC, mais je trouve dommage d'utiliser le framework pour la partie VB et de ne pas l'utiliser en Visual C++ d'autant plus si cela risque d'être abandonné dans un futur proche. Si le framework .net est accessible, comment fait on pour y avoir accés ?

    Autre chose, malgré mes recherches dans une librairie spécialisée, il ne semble pas y avoir de livre sur le developpement en Visual C++ .net, est ce normal ? pour quelle raison ? ou ai je mal regardé ?

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 90
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    Je viens de passer à la version .NET, et j'ai rencontré un problème d'include :
    Le compilo m'a renvoyé cette erreur :
    fatal error C1083: Impossible d'ouvrir le fichier include : 'fstream.h' : No such file or directory
    Voilà la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <fstream>
    using namespace std;
    Bonne continuation à tous !

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut
    Les typedef avec valeur par défaut ne marchent pas avec 2005 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef CTBase* (*LPFN_LOADCTBASEEX)(const char *fn, const char *name, bool bDftBase=false);
    Il faut le modifier en faisant une dériv de compil (ou modifier le code tout simplement pour 2005) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #ifdef USE_ST2005
    typedef CTBase* (*LPFN_LOADCTBASEEX)(const char *fn, const char *name, bool bDftBase);
    #else 
    typedef CTBase* (*LPFN_LOADCTBASEEX)(const char *fn, const char *name, bool bDftBase=false);
    #endif

  17. #17
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    merci pour cette information

  18. #18
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    bonjour,
    Pour concrétiser ce post, j’ai écris un tuto pour le portage d’une application VC6 vers Visual 2005.
    J’y relate les principaux problèmes que j’ai rencontré..

    http://farscape.developpez.com/tutor...on-vc6-vc2005/


  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    jusque la tout va bien ,ca tourne perfect sous XP / 2000 j'ai même trouvé des bugs recalcitrants sous VC6.0
    mais les prgs de gestion fait avec VC7.0 sous 98/95/ME et NT.40
    c'est pas le top , la couche OLE est trop <> les OCX ne s'enregistre pas .
    j'ai donc laisser mes OCX en vc6.0 ,
    voila pour l'essentiel.
    Je vais lire ton Tutorial mais j'ai aussi noté des soucis avec un ActiveX écrit en VC6 qui s'enregistre dans Delphi 2006 mais qui ne déclenche pas les évènements... Ou D2006 ne les remonte pas.

    Celà peut-il être en relation avec tes soucis ??

  20. #20
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Slt à tous,

    Ce forum et le tuto de farscape m'ont bien aidé pour la migration de l'appli que je dois porter sur vc8.
    Par contre, un point reste obscur. J'ai bien vu que le crt c runtime a changé et que la lib statique msvcirt.lib est obsolète. Mais, le pb est que cette appli se base toujours sur cette lib et qu'au moment du link, j'obtiens toujours la même erreur:

    LINK : fatal error LNK1104: cannot open file 'msvcirt.lib'

    J'ai bien vu que je pouvais mettre l'option /nodefaultlib:"MSVCIRT.LIB" dans les options du linker. Quand, je la met, ca compiles bien. Par contre, j'obtiens une erreur quelques secondes après le lancement de cette application concernant le C runtime.

    Donc, je me suis dis qu'il y avais un pb par rapport à cette lib.
    Auriez-vous réussi à résoudre ce problème?

    Je travaille sous NT et visual .net 2005. et je suis nOOb au niveau programmation windows.

    Merci d'avance

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/03/2015, 18h58
  2. migration SQL7(2000) +VB6 vers VB.NET + SQL 2008
    Par ensiaste92 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 03/07/2014, 11h39
  3. Communiquez vos retours d'expérience sur Delphi .NET
    Par Laurent Dardenne dans le forum Delphi .NET
    Réponses: 11
    Dernier message: 12/08/2008, 15h46
  4. Vos retours d'expérience sur l'utilisation les SGBD Objet ?
    Par Kentin dans le forum Décisions SGBD
    Réponses: 17
    Dernier message: 15/09/2007, 08h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo