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 :

VC7 AfxGetMainWnd()


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    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
    Par défaut VC7 AfxGetMainWnd()
    J'ai un nouveau problème depuis ma conversion de VC6 en VC7, en effet, la fonction AfxGetMainWnd() ne retourne plus rien.
    Est-ce normal? Y a t-il une nouvelle fonction???

    Merci

  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,
    a mon avis il y a erreur sur le constat ,
    j'ai deja compiler des 10 de milliers de lignes sur vc7 et afxGetMainWnd() etait largement utilisé ..

  3. #3
    Membre éclairé
    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
    Par défaut Ca parait bizarre
    Mais j'ai pas fait de changement autres que les modifications de conversion alors je vois pas d'où ça peut venir...
    Et surtout comment AfxGetMainWnd() peut retourner null ? Je vois pas bien d'où pourrait venir l'erreur...

  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,
    a quel endroit est situé l'appel ?
    ce qui est possible c'st que ton probleme soit temporel ( )...

  5. #5
    Membre éclairé
    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
    Par défaut
    L'appel est situé dans une fonction dans ma classe document. Cette fonction est lancé à partir d'un menu de mon application.

  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
    application SDI ou MDI ?

  7. #7
    Membre éclairé
    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
    Par défaut
    Application SDI.
    Mais j'utilise un CreateThread, est-ce que cela peut venir de ça?

  8. #8
    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
    par contre moi j'utiliserais AfxBeginThread au lieu de CreateThread
    dans une Appli MFC .

  9. #9
    Membre éclairé
    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
    Par défaut
    Avec AfxBeginThread , ça marche à priori... je rencontre d'autres poblèmes du coup mais ça devrait être bon.

    Merci beaucoup

  10. #10
    Membre éclairé
    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
    Par défaut
    Il y a bien une différence dans la fonction AfxGetMainWnd() en VC7 et versions précédentes..
    En effet, cette fonction appel la fonction AfxGetThread(), or c'est cette fonction qui est différente.
    en VC7 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CWinThread* AFXAPI AfxGetThread()
    {
      // check for current thread in module thread state
      AFX_MODULE_THREAD_STATE* pState = AfxGetModuleThreadState();
      CWinThread* pThread = pState->m_pCurrentWinThread;
      return pThread;
    }
    Et avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CWinThread* AFXAPI AfxGetThread()
    {
      // check for current thread in module thread state
      AFX_MODULE_THREAD_STATE* pState = AfxGetModuleThreadState();
      CWinThread* pThread = pState->m_pCurrentWinThread;
      //if no CWinThread for the module, then use the global app
      if (pThread == NULL)
          pThread = AfxGetApp();
      return pThread;
    }
    C'est pourquoi en passant mon code en VC7 la fonction AfxGetMain me retourner NULL alors qu'avant ça marchait !!!

  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
    Par défaut
    effectivement ,
    je ne comprends par leur modification ,

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    C'est bien beau de savoir que ça fonctionne pas, mais y'a-t-il une fonction qui ferait sensiblement la même chose que "AfxGetMainWnd()" et qui fonctionnerait ici ?

    J

    Voici le code du callBack appelé par le thread secondaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    /* static */ void WINAPI CPipeTestDlg::funcCallBack(string buf)
    {
        ::SendMessage(*AfxGetMainWnd(),WM_USER+1,0,(LPARAM)buf.c_str());
    }

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/08/2005, 17h22
  2. [VC7] Multithread et Critical section
    Par runn2 dans le forum MFC
    Réponses: 4
    Dernier message: 05/05/2005, 14h04
  3. VC7, template et const
    Par charliejo dans le forum MFC
    Réponses: 3
    Dernier message: 31/03/2005, 19h57
  4. [Win32-VC7]WaitableTimer
    Par jmv dans le forum MFC
    Réponses: 7
    Dernier message: 25/09/2004, 11h24
  5. Fonctions template+friend sous VC7
    Par patapetz dans le forum MFC
    Réponses: 12
    Dernier message: 24/09/2004, 11h16

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