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 :

Probleme avec MFC : GetWindowRect


Sujet :

MFC

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 26
    Par défaut Probleme avec MFC : GetWindowRect
    Bonjour,

    Je rencontre actuellement un problème dans le developpement d'un logiciel sous visual c++ 6 à l'aide des MFC.
    J'ai créé une classe héritant de CDialog dont je voudrais obtenir les dimensions.
    Voici une partie de mon code placée dans le constructeur de ma classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RECT *myRect = new CRect(); 
    GetWindowRect(myRect);
    La compilation se passe sans problème par contre à l'exécution j'obtiens ce message d'erreur :
    "Debug Assertion Failed!
    File : afxwin2.inl
    Line : 96
    ..."

    Si je place l'appel à la fonction GetWindowRect en commentaire le problème disparait.

    Je précise quand même que j'ai éffectué pas mal de recherche (msdn, google, developpez.com, ...) et que je n'ai pas trouvé de solution.

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    euh c pas ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CRect rec = new CRect();
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rect rec = new CRect();

  3. #3
    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,
    bien, nul besoin de faire un new (en dehors du fait que ton code n'etait pas correct).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CRect Rect;
    GetWindowRect(&Rect);
    c'est tout.
    ce code fonctionnera bien si le context est correct ,c'est à dire si la fenetre pour laquelle GetWindowRect s'applique est initialisée graphiquement.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 26
    Par défaut
    Citation Envoyé par hiko-seijuro
    euh c pas ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CRect rec = new CRect();
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rect rec = new CRect();
    Oups ! d'ailleurs j'ai fait une autre erreur en recopiant de tête, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CRect *rec = new CRect();
    GetWindowRect(rec)
    que je fesais, désolé pour les 2 erreurs.

    Citation Envoyé par farscape
    salut,
    bien, nul besoin de faire un new (en dehors du fait que ton code n'etait pas correct).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CRect Rect; 
    GetWindowRect(&Rect);
    c'est tout.
    ce code fonctionnera bien si le context est correct ,c'est à dire si la fenetre pour laquelle GetWindowRect s'applique est initialisée graphiquement.
    J'ai déja essayé de faire cela et j'obtiens la même erreur, donc a priori c'est un problème venant de ma boite de dialogue Pourtant je ne vois rien d'exeptionnel, je débute avec les MFC donc je n'ai pas modifié grand chose, juste ajouter une ou deux variables protected ainsi qu'un control tree et deux ou trois boutons. Petit détail peut-être important cela compile une dll qui est executer en tant que plugin dans le logiciel final, serait-ce un problème de dépendance ?

    En tout cas merci d'avoir pris la peine de répondre.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 26
    Par défaut
    Correction, en fait ce sont mes initialisations dans le constructeur qui me provoquent ces erreurs. Comme je l'ai dis je fait mes premiers pas avec les MFC donc il est tout à fait probable que je fasse une erreur de débutant, je suis donc preneur de tout conseil

  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
    les fenetres graphiques ne sont pas initialisées dans le constructeur.
    la premiere fonction qui permet de faire des traitements graphiques est :
    OnInitDialog pour une CDialog.
    et OnInitialUpdate pour une CView ,CScrollView ,CFormView etc ...
    je te conseille de lire mon tuto ..
    http://farscape.developpez.com/tutor...arrer-mfc-vc6/

  7. #7
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 26
    Par défaut
    Citation Envoyé par farscape
    les fenetres graphiques ne sont pas initialisées dans le constructeur.
    la premiere fonction qui permet de faire des traitements graphiques est :
    OnInitDialog pour une CDialog.
    et OnInitialUpdate pour une CView ,CScrollView ,CFormView etc ...
    je te conseille de lire mon tuto ..
    http://farscape.developpez.com/tutor...arrer-mfc-vc6/
    Je l'avais uniquement survolé Mais maintenant je l'ai completement lu et j'ai compris mon erreur. J'ai déplacé toutes mes initialisations dans OnInitDialog() et je n'ai plus de problème (et GetWindowRect marche très bien).

    Un grand merci à vous pour votre aide, et plus spécialement à farscape pour son excellent tuto

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

Discussions similaires

  1. probleme avec Mfc sous Vc6
    Par raggnar dans le forum MFC
    Réponses: 6
    Dernier message: 25/09/2006, 11h59
  2. [MFC]Probleme avec attributs d'une LOGFONT
    Par Fildz dans le forum MFC
    Réponses: 3
    Dernier message: 08/01/2006, 17h59
  3. Réponses: 18
    Dernier message: 06/10/2005, 09h09
  4. [MFC] probleme avec CFile
    Par benahpets dans le forum MFC
    Réponses: 12
    Dernier message: 18/08/2005, 10h29
  5. Réponses: 13
    Dernier message: 02/02/2005, 00h21

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