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

Visual C++ Discussion :

probleme migration VC6->VC2005 avec MFC


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Décembre 2006
    Messages : 166
    Par défaut probleme migration VC6->VC2005 avec MFC
    j'ai un petit sous de migration de code (de VC6.0 à VC2005)

    Voilà j'ai une appli qui possède plusieurs ToolBar qui sont positionnées les unes à côté des autres selon la largeur de la MainFrame et qui peuvent être soit cachées soit visibles.

    Sous VC6.0 ça marche impeccable, par exemple GetWindowRect retour bien les bons paramètres de chaque ToolBar.

    Sous VC2005 ça marche pas...
    GetWindowRect fonctionne que si la ToolBar à été affichée au moins une fois.
    j'ai même une erreur d'exécution avec les RecalcLayout() dans mon CMainFrame::OnCreate() au démarrage de mon application.

    S'il existe une technique je suis preneur.
    Merci d'avance

    Ci dessous une de mes fonctions qui place une Toolbar à côté d'une autre :
    Cette fonction est appelée dans MainFrame::OnCreate() à la place de certain DockControlBar();

    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
    16
    17
    18
    void CMainFrame::DockControlBarLeftOf(CToolBar* Bar,CToolBar* LeftOf)
    {
    CRect rect;
    DWORD dw;
    UINT n;
     
    //RecalcLayout(); Ici je suis obliger de le retirer sous VC2005 car sinon ça plante.
    LeftOf->GetWindowRect(&rect);
    rect.OffsetRect(1,0);
    dw=LeftOf->GetBarStyle();
    n = 0;
    n = (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : n;
    n = (dw&CBRS_ALIGN_BOTTOM && n==0) ? AFX_IDW_DOCKBAR_BOTTOM : n;
    n = (dw&CBRS_ALIGN_LEFT && n==0) ? AFX_IDW_DOCKBAR_LEFT : n;
    n = (dw&CBRS_ALIGN_RIGHT && n==0) ? AFX_IDW_DOCKBAR_RIGHT : n;
     
    DockControlBar(Bar,n,&rect);
    }

    balise [code] rajoutée par r0d. Merci d'y penser la prochaine fois.

  2. #2
    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
    Par défaut
    salut ,
    tu peux essayer avec cette méthode ?
    http://www.developpez.net/forums/sho...68#post1146468

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Décembre 2006
    Messages : 166
    Par défaut Nop
    Désolé mais quand je fais ça j'ai une erreur lors de l'exécution... ça plante sur le RecalcLayout()

    D'ailleurs si je met un quelconque RecalcLayout() ou équivalent (comme ShowControlBar) dans mon CMainFrame::OnCreate() ça fait cette erreur sous VC2005. l'erreur me renvoie sur la fonction Windows : UpdateWindow() qui n'arrive pas a s'executer.

    Je comprends vraiment pas.

    Petite précision, j'ai un SplashScreen avant l'apparition de la fenêtre principale... c'est peut être du a ça, qu'on ne puisse pas rafraichir la MainFrame...

    Si quelqu'un a une idée...??

    Merci d'avance

  4. #4
    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
    Par défaut
    salut,
    c'est bizarre je viens de faire l'essai sur un projet 2005 (celui de mon tuto)
    je n'ai pas de probléme, j'arrive bien a placer les deux barres de controles et à appeller RecalcLayout()
    le seul point que je n'ai pas essayé c'est le splash window.
    tu peux peut etre essayé de le desactiver pour voir...

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Décembre 2006
    Messages : 166
    Par défaut
    Je suis en train de tester... j'ai supprimé le SplashScreen...

    bah toujours pareil ... j'ai une erreur a l'execution et toujours au meme endroit

  6. #6
    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
    Par défaut
    salut,
    donc il y a autre chose ...
    peut etre un probleme d'initialisation dans ton OnCreate .
    verifie bien le retour de tes fonctions.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Migration VC6 -> VC8] Ambigüité avec MSXML
    Par JoSii dans le forum MFC
    Réponses: 3
    Dernier message: 17/01/2007, 16h24
  2. Réponses: 5
    Dernier message: 11/01/2007, 08h53
  3. probleme avec Mfc sous Vc6
    Par raggnar dans le forum MFC
    Réponses: 6
    Dernier message: 25/09/2006, 11h59
  4. Réponses: 7
    Dernier message: 11/07/2006, 09h31
  5. Réponses: 4
    Dernier message: 02/06/2005, 13h08

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