Bonjour,

En mode release, j'ai un plantage de l'application (1 fois sur 2) que je ne retrouve pas en mode debug (apparemment)!

J'ai t�ch� de me rapprocher par dichotomie au plus pr�s de l'erreur et apparemment elle se situerait au niveau de la ligne de code en gras.
Voici le code de la fonction qui plante:
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
19
20
21
22
23
24
25
26
27
bool X::TraiterEtape5()
{
	bool ret = false;

	//Affichage de la proc�dure
	ChargerFicProcedure();

	//On fournit le HANDLE de la fen�tre pour l'�change de message
	CManipDlg *manipDlg = reinterpret_cast<CManipDlg *>(m_apDlg);
	manipDlg->InitManip(m_hWnd, m_Step);
	
//	TraiterEtape5_1(manipDlg);
//	TraiterEtape5_2(manipDlg);
	
	manipDlg->SetDlgItemText(IDC_STATIC_ETAT_OP,"R�sultat de la VBF");

	GetDlgItem(IDC_BUTTON_SUIV)->EnableWindow(TRUE);
	GetDlgItem(IDC_BUTTON_GO)->ShowWindow(FALSE);
			
	m_ButtonSuiv.SetTextColor(RGB(0,150,0));
	::SetEvent(m_hEventBlink);
	m_nTimer = SetTimer(2, 600, NULL);

	ret = true;

	return ret;
}
Je fournis aussi le code de la fonction InitManip():
void CManipDlg::InitManip(HWND hWnd, UINT step)
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
{
	g_hWndMain = hWnd; 	 //variable statique -> globale à la classe
	g_nStep = step;		//variable statique -> globale à la classe
}
o� la classe CManipDlg, d�riv�e de CDialog, est charg�e dynamiquement par la classe CXDlg.
J'ai �t� aussi oblig� d'utiliser des variables statiques pour la classe CManipDlg car sur l'action d'un control, mes variables n'�taient pas initialis�es aux valeurs pass�es via la fonction InitManip();
Je pense que mon probl�me vient de l� mais je ne sais pas comment y rem�dier...Il me faudrait surement r�cup�rer correctement le handle de la fen�tre fille...

D'apr�s le debbugger, j'ai le message suivant:
Exception non g�r�e � 0x5f4365c6 (MFC42D.DLL) dans X.exe:0xC0000005: Violation d'acc�s lors de la lecture de l'emplacement 0x00000020.
et la variable locale this � NULL(this 0x00000000 {CWnd hWnd=???} CWnd * const)
L'erreur se situe dans WINNOC.cpp � la ligne suivante:
ASSERT(::IsWindow(m_hWnd));
...Arf!!!

Nicolas