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 :

AfxGetMainWnd() MS VC++ 6.0 et MS VC++.NET 2003 [FAQ]


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 17
    Par défaut AfxGetMainWnd() MS VC++ 6.0 et MS VC++.NET 2003
    Bonjour,

    Je suis entrain demigrer un code de MS C++ 6.0 pour MS C++.NET 2003,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void CControlSocket::OnAccept(SOCKET Server)
    {
        if((CFullScreenWnd*)AfxGetMainWnd()!=NULL)  
        {
            (CFullScreenWnd*)AfxGetMainWnd()->AcceptSocket();
        }
    }
    il fonctionne correctement sous 6.0 mais avec VC++.NET, l´appelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (CFullScreenWnd*)AfxGetMainWnd()!=NULL
    renvoie NULL ce que je ne comprends pas et ca me fait croire qu´il y a une difference d´implementation de la fonction AfxGetMainWnd() chez Microsoft.

    Je serais heureux si quelqu´un pouvait m´aider.
    Merci bien.
    Armand

    Pense à mettre la balise de code, Merci Farscape

  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,
    Il y a bien une différence dans la fonction AfxGetMainWnd() à partir de VC7 et les versions précédentes..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    _AFXWIN_INLINE CWnd* AFXAPI AfxGetMainWnd()
        { CWinThread* pThread = AfxGetThread();
            return pThread != NULL ? pThread->GetMainWnd() : NULL; }
    Cette fonction appel la fonction AfxGetThread(), et cette fonction est implementée differement à partir de VC7...
    en VC7 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CWinThread* AFXAPI AfxGetThread()
    {
      // check for current thread in module thread state
      AFX_MODULE_THREAD_STATE* pState = AfxGetModuleThreadState();
      CWinThread* pThread = pState->m_pCurrentWinThread;
      return pThread;
    }
    En VC6.0 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    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;
    }
    donc tu peux remplacer ton appel de AfxGetMainWnd() par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AfxGetApp()->GetMainWnd();
    pourquoi ce code a été modifié reste un mystére ...

  3. #3
    Membre averti
    Inscrit en
    Février 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 17
    Par défaut
    Merci bien Ca marche comme sur des rouellettes SUPER !!!!


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

Discussions similaires

  1. A ceux qui ont migré de VB6 vers VB.Net
    Par Fox dans le forum VB 6 et antérieur
    Réponses: 81
    Dernier message: 21/05/2008, 14h56
  2. VC7 AfxGetMainWnd()
    Par charliejo dans le forum MFC
    Réponses: 11
    Dernier message: 26/04/2006, 15h23
  3. Réponses: 3
    Dernier message: 30/08/2005, 17h22
  4. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  5. Fichier PDOXUSRS.NET
    Par yannick dans le forum Paradox
    Réponses: 5
    Dernier message: 05/04/2002, 09h45

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