Pb avec SetTimer pour faire une Image de demarrage

Signaler
Messages postés
63
Date d'inscription
vendredi 6 décembre 2002
Statut
Membre
Dernière intervention
16 janvier 2009
-
Messages postés
63
Date d'inscription
vendredi 6 décembre 2002
Statut
Membre
Dernière intervention
16 janvier 2009
-
Salut,

Est ce ke quelqu'un pourrait m'éclairer un peu car je lutte...
J'ai trouvé sur Cpp france du code permettant de créer une image de demarrage qui et tres sympa d'ailleurs ( bravo Win32 !!), j'ai donc voulu l'intégrer dans ma SDI mais sans succes. (J'utilise VC++6.0 avec MFC)

J'ai donc testé de créer un boite de dialogue dans laquelle je met une image, et ensuite dans mon Initinstance avant l'ouverture de ma SDI je lance ma boite de dialogue en mode non modal. Seulement voilà je voudrai k'elle reste affichée suffisemment longtemps pour qu'on la voit et donc j'ai essayer d'utiliser la méthode setTimer mais en fait je ne comprends pas trop comment elle marche, et le msdn ne m'a pas beaucoup aidé, alors si quelqu'un peut m'aider ce serait tres sympa merci.

Voici ci dessous mon code que j'integre dans mon Initinstance

CDemarrage* _dlg = new CDemarrage;

_dlg->Create(IDD_DIALOG2,NULL);
_dlg->ShowWindow(SW_SHOW);

_dlg->SetTimer(UINT nIDEvent,UINT nElapse,void(__cdecl *lpfnTimer)(HWND,UINT,UINT,DWORD))

/*et ici j'essaie de fermer ma boite de dialogue à la fin du timer*/
_dlg->ShowWindow(SW_HIDE);
_dlg->CloseWindow();

ou se trouve mon (ou mes erreurs), et comment y remedier, et en fait c'est réellement le setTimer que je ne sais pas utiliser donc ce serait cool de me montrer un exemple simple

Merci d'avance :)

5 réponses

Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
Bonjour,
tu utilises les MFC
le plus simple est de créer ta fenêtre (on l'appelle SplashWindow) ainsi dans InitInstance de ta classe Application:
//*********************************
//Chargement de la splash window
CSplash* dlgSplash = new CSplash;
dlgSplash->Create(IDD_SPLASH,NULL);
dlgSplash->ShowWindow(SW_SHOW);
//Armement du timer de 4 secondes
UINT idTimer = dlgSplash->SetTimer(1,4000,0);
//Attente (simulation ...)
Sleep(5000);
//*********************************

ensuite tu interceptes un message WM_TIMER dans ta boite de dialogue amodale (CSplash) ainsi :
/////////////////////////////////////////////////////////////////////////////
// CSplash message handlers

void CSplash::OnTimer(UINT nIDEvent)
{//au bout de 4 secondes, l'evt timer est reçu, on tue le timer
KillTimer(1);
CDialog::OnTimer(nIDEvent);
ShowWindow(SW_HIDE);
CloseWindow();
}

voila,
a toi de faire beau
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
Salut,
je viens demettre un exemple en boite de demarrage.
Elle se ferme par un timer. Tu devras transposer en mfc.
Pourquoi tu utilises mfc, obligatoire ???
C'est tellement souple sans.
ciao...
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
re bonjour,
le mieux (avec MFC et visual C++6)
est de profiter de la gallerie qui te fournit tout ça en standard
Project/Add to Project/Components and controls/VisualC++Components/SplashScreen
et c'est tout... la classe et le code sont insérés dans ton projet
A toi de mettre l'image de ton choix
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Salut,
> >
> > Est ce ke quelqu'un pourrait m'éclairer un peu car je lutte...
> > J'ai trouvé sur Cpp france du code permettant de créer une image de demarrage qui et tres sympa d'ailleurs ( bravo Win32 !!), j'ai donc voulu l'intégrer dans ma SDI mais sans succes. (J'utilise VC++6.0 avec MFC)
> >
> > J'ai donc testé de créer un boite de dialogue dans laquelle je met une image, et ensuite dans mon Initinstance avant l'ouverture de ma SDI je lance ma boite de dialogue en mode non modal. Seulement voilà je voudrai k'elle reste affichée suffisemment longtemps pour qu'on la voit et donc j'ai essayer d'utiliser la méthode setTimer mais en fait je ne comprends pas trop comment elle marche, et le msdn ne m'a pas beaucoup aidé, alors si quelqu'un peut m'aider ce serait tres sympa merci.
> >
> > Voici ci dessous mon code que j'integre dans mon Initinstance
> >
> > CDemarrage* _dlg = new CDemarrage;
> >
> > _dlg->Create(IDD_DIALOG2,NULL);
> > _dlg->ShowWindow(SW_SHOW);
> >
> > _dlg->SetTimer(UINT nIDEvent,UINT nElapse,void(__cdecl *lpfnTimer)(HWND,UINT,UINT,DWORD))
> >
> > /*et ici j'essaie de fermer ma boite de dialogue à la fin du timer*/
> > _dlg->ShowWindow(SW_HIDE);
> > _dlg->CloseWindow();
> >
> > ou se trouve mon (ou mes erreurs), et comment y remedier, et en fait c'est réellement le setTimer que je ne sais pas utiliser donc ce serait cool de me montrer un exemple simple
> >
> > Merci d'avance :)
>
Messages postés
63
Date d'inscription
vendredi 6 décembre 2002
Statut
Membre
Dernière intervention
16 janvier 2009
1
Salut vieuxLion,

:big) Alors là je dis MERCI MERCI GRAND GRAND GRAND et même énorme MERCI parce que d'une part tes explications sont simples et j'ai tt de suite compris , ensuite parce ke t'as répondu assez rapidement et parce ke bon ben maintenant ca marche , et mon appli d'un seul coup a plus de gueule :) .

Encore une fois MERCI !!! et à la prochaine, j'espere pouvor un jour faire quelque chose pour toi 8-)

@ +
Messages postés
63
Date d'inscription
vendredi 6 décembre 2002
Statut
Membre
Dernière intervention
16 janvier 2009
1
Re Salut à toi

Ahh ben merci pour cette info, effectivement si c'est déjà fournie dans les galleries c'est plus simple de s'en servir.

Je tiens à te remercier pour l'aide que tu m'as apporté.
:)