Bonjour,
Voila j'ai un grand programme Visual C++ qui au demarrage fait des initialisations sur differents parametres.
J'ai donc un Dialog (IDD_SYSTEMEINITIALISATION) avec une barre de progression et des zones IDC_CHECK (check box control) a cocher si sur ces zones il survient des problemes d'initialisations. Bien sur lors de l'initialisation cette classe CViewSystemeInitialisation fait appel a d'autres classes et fonctions comme ceci:
...............
void CViewSystemeInitialisation::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
unsigned int uiSecurity;
uiSecurity=m_Init.Get_Params_Systeme_Config_Securtiy();
// Vérifie le mode de fonctionnement
if(nIDEvent==ID_CLOCK_SAS)
{
KillTimer(ID_CLOCK_SAS);
CMyPROGDoc *pDoc= (CMyPROGDoc *) GetDocument();
UpdateData(true);
if(m_Init.Get_Params_General_ModeProcess
()==PROCESS_SYSTEME_AUTOMATIQUE)
{
if(uiSecurity& LEVEL_1)
{
if(pDoc->isProblemeCam())
m_bPblCam=true;
else
m_bPblCam=false;
if(pDoc->isIniteCam())
m_bCam=true;
else
m_bCam=false;
}
else
{
m_bPblSCam=false;
m_bCam=true;
}
if(pDoc->isProblemeModbus())
m_bPblModbus=true;
else
m_bPblModbus=false;
if(pDoc->isInitModbus())
m_bModbus=true;
else
m_bModbus=false;
}
UpdateData(false);
SetTimer(ID_CLOCK_SAS,500,NULL);
}
................. Il faut donc que je cree dans ma 'Dialog' un control 'Text Control' 'Edit Control' afin
de recuperer les erreurs lies pour chaques parametres. Mais tout d'abord
malheureusement le pointeur pDoc (qui instancie les threads selon le process) ne donne pas les details, en fait il regarde si tout l'objet existe si oui seulement envoi le statut de la thread concernant cet objet (false ou true).
Alors je suis obliger de passer par les initialisations des objets meme donc par exemple pour celle de la Cam je devrais voir dans sa classe (CCam) sa fonction Init()
.................................
int CCam::Init()
{
try
{
FSRetVal tmp;
CInit m_Init;
string strFile((LPCTSTR)m_Init.Get_Params_Cam_Config_FileInit());
tmp = m_pCam->SetConfigFilePath((char*)strFile.c_str());
if(tmp!= FS_SUCCESS)
{
TRACE("SetConfigFilePath failed\n");
return 1; // je laisse return 1;
}
tmp = m_pCam->Initialize();
if(tmp!= FS_SUCCESS)
{
m_pCam->FreeMem();
TRACE("Initialize NOK\n");
TRACE("Explication %s\n",FSRetVal_Names[tmp]);
return 1; // je mets return 2;
}
char* p_cdllver;
p_cdllver=m_pCam->GetDLLVersion();
m_Init.Set_Params_Cam_Config_Dllversion(p_cdllver);
TRACE("Init OK\n");
return 0;
}
catch(...)
{
TRACE("Init NOK\n");
return 1; // je met return 3;
}
}
Cette fonction renvoi 0 si l'initialisation est OK.
Ainsi je pense que j'appelerais cette fonction Init de la classe CCam et je ferais un switch et afficherais un texte sur le 'Dialog' selon le retour de la fonction comme ceci dans la fonction
void CViewSystemeInitialisation::OnTimer(UINT nIDEvent) :
........
if(pDoc->isProblemeCam())
switch(int CCam::Init())
case 1:
m_bPblCam=true;
SetDlgCtrlID.("SetConfigFilePath failed\n") ; /// je sais pas quel fonction MFC? case 2:
m_bPblCam=true; SetDlgCtrlID.("Initialize NOK\n");
SetDlgCtrlID.("Explication %s\n",FSRetVal_Names[tmp]); // ???
case 3:
m_bPblCam=true;
SetDlgCtrlID.("Init NOK\n"); /// je sa9is quel fonction MFC?
else
m_bPblCam=false;
Voila est-ce que ca devrait aller comme ca pour l'idee ?
Et alors pour mettre les textes dans les controles dois je faire par exemple comme ceci:
SetDlgIDC_STATIC1.("Init NOK\n");
Dois je pas preciser dans l'instruction qu'il s'agit du Dialog general IDD_SYSTEMEINITIALISATION
Et si je veux formatter ma presentation, pour le saut de lignes le
\n derriere le NOK suffirait il?
Merci
DevelDelphi :)