les evenements en MFC

les evenements en MFC - C++ - Programmation

Marsh Posté le 26-03-2003 à 09:23:48    

J'aimerai que mon programme qui va tourner sur un pocketPC m'avertisse si le niveau de la batterie du PocketPC est bas.
Pour l'instant, j'arrive a savoir le pourcentage de charge de la batterie mais comment faire un evenement qui se declanche quand je suis par exemple a 20 ou 30% ?

Reply

Marsh Posté le 26-03-2003 à 09:23:48   

Reply

Marsh Posté le 26-03-2003 à 15:14:55    

polo021 a écrit :

J'aimerai que mon programme qui va tourner sur un pocketPC m'avertisse si le niveau de la batterie du PocketPC est bas.
Pour l'instant, j'arrive a savoir le pourcentage de charge de la batterie mais comment faire un evenement qui se declanche quand je suis par exemple a 20 ou 30% ?


 
 
personne?

Reply

Marsh Posté le 26-03-2003 à 15:19:32    

polo021 a écrit :

J'aimerai que mon programme qui va tourner sur un pocketPC m'avertisse si le niveau de la batterie du PocketPC est bas.
Pour l'instant, j'arrive a savoir le pourcentage de charge de la batterie mais comment faire un evenement qui se declanche quand je suis par exemple a 20 ou 30% ?


 
une solution basique : si c'est en Win32, tu peux mettre un timer (par ex toutes les 100 ms), où tu testes ta valeur et si c'est < a 20 alors tu fais ton truc.
 
y a surement mieux, mais chuis pas assez expert pocketPC.
(tu peux essayer de voir aussi du coté des event sink mapping si tu as un controle qui correspond a une gestion de batterie)

Reply

Marsh Posté le 26-03-2003 à 15:22:23    

Konar a écrit :


 
une solution basique : si c'est en Win32, tu peux mettre un timer (par ex toutes les 100 ms), où tu testes ta valeur et si c'est < a 20 alors tu fais ton truc.
 
y a surement mieux, mais chuis pas assez expert pocketPC.
(tu peux essayer de voir aussi du coté des event sink mapping si tu as un controle qui correspond a une gestion de batterie)
 


 
merci Konar  :o  
mais malheureusement c'est du MFC. L'idee parait interessante je vais aller voir ce qu'on dit du cote des timers pour MFC.


Message édité par polo021 le 26-03-2003 à 15:22:55
Reply

Marsh Posté le 26-03-2003 à 15:29:18    

polo021 a écrit :


 
merci Konar  :o  
mais malheureusement c'est du MFC. L'idee parait interessante je vais aller voir ce qu'on dit du cote des timers pour MFC.


 
arf... raté de lire le titre, si c'est des mfc rien t'empeche de faire du timer, apres comment ca marche les timer en mfc, chais pas. ca marche surement presk pareil qu'en Win32 normal...
 
mate du coté de SetTimer ds les msdn

Reply

Marsh Posté le 26-03-2003 à 16:40:52    

CWnd::SetTimer(idtimer, duree)
puis OnTimer(id) si id = idtimer alors tu fait un joli ::SendMessage ou ::PostMessage suivant ce que tu veux

Reply

Marsh Posté le 26-03-2003 à 16:47:08    

VisualC++ a écrit :

CWnd::SetTimer(idtimer, duree)
puis OnTimer(id) si id = idtimer alors tu fait un joli ::SendMessage ou ::PostMessage suivant ce que tu veux


 
comment on declare un timer?
 
int m_nTimer = SetTimer(1, 2000, 0);
 
?

Reply

Marsh Posté le 26-03-2003 à 16:54:10    

oui
 
mais la valuer de retour tu t en fou (enfin tu teste pour savoir si ok ou pas mais c pas l'id du timer), c est 1 la l'id et duree 2000 millisecond
 
Et une fois finie l utilisation fait un KillTimer(idtimer)

Reply

Marsh Posté le 26-03-2003 à 17:03:59    

ca va pas  :sweat:  
 

Code :
  1. CCASView::CCASView()
  2. : CFormView(CCASView::IDD)
  3. {
  4. //{{AFX_DATA_INIT(CCASView)
  5.  // NOTE: the ClassWizard will add member initialization here
  6. //}}AFX_DATA_INIT
  7. // TODO: add construction code here
  8. CWnd::SetTimer(1, 1000, 0);
  9. }
  10. void CCASView::OnTimer(UINT nIDEvent)
  11. {
  12. if(nIDEvent == 1)
  13. AfxMessageBox(CString("timer!" ));
  14. CFormView::OnTimer(nIDEvent);
  15. }


 
t'es sur qu'il n'y a rien d'autre a faire?


Message édité par polo021 le 26-03-2003 à 17:04:59
Reply

Marsh Posté le 26-03-2003 à 17:11:40    

Code :
  1. SetTimer(1, 1000, NULL); << pas besoin d'appeler CWnd:: tu en derives
  2. void CCASView::OnTimer(UINT nIDEvent) 
  3. {
  4. if(nIDEvent == 1) 
  5. AfxMessageBox(CString("timer!" ));
  6. CFormView::OnTimer(nIDEvent);
  7. }


 
Et, tu peut pas le faire l'appel ds le constructeur, ta Vue existe mais tt les handle sont NULL, fait le ds le OnInit ou autre

Reply

Marsh Posté le 26-03-2003 à 17:11:40   

Reply

Marsh Posté le 27-03-2003 à 09:14:32    

:jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed