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
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
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é ..
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
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...
salut,
a quel endroit est situé l'appel ?
ce qui est possible c'st que ton probleme soit temporel ()...
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
L'appel est situé dans une fonction dans ma classe document. Cette fonction est lancé à partir d'un menu de mon application.
application SDI ou MDI ?
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Application SDI.
Mais j'utilise un CreateThread, est-ce que cela peut venir de ça?
par contre moi j'utiliserais AfxBeginThread au lieu de CreateThread
dans une Appli MFC .
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Avec AfxBeginThread , ça marche à priori... je rencontre d'autres poblèmes du coup mais ça devrait être bon.
Merci beaucoup
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 :
Et avant :
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; }
C'est pourquoi en passant mon code en VC7 la fonction AfxGetMain me retourner NULL alors qu'avant ça marchait !!!
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; }
effectivement ,
je ne comprends par leur modification,
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
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()); }
Partager