IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Cr�ation du timer dans une Dll


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm� Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par d�faut Cr�ation du timer dans une Dll
    Salut � tous,

    Je suis en train d'essayer de cr�er un timer dans une Dll,mais je bloque .

    Je d�veloppe sous Embedded VC++ 4 et j'ai cr�� une Dll de type "EmptyProject".

    Pour tenter de faire un Timer, j'utilise la fonction SetTimer comme ceci:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    extern"C" int WINAPI LancerTimer(int Frequence)
    {
    	res = ::SetTimer(NULL, 1, Frequence, NULL);
     
    	return res; 
    }
    Le probl�me c'est que je ne sais pas comment appeler la fonction OnTimer, dans laquelle j'aimerais indiquer ce que je veu faire dans ce Timer. Car elle n'existe pas dans le 'global space' comme me le dit le compilateur.

    Si vous avez une id�e la dessus n'h�sitez pas

    A noter aussi qu'il est possible d'invoquer la fonction KillTimer de la m�me mani�re qu'avec la fonction SetTimer.

    Merci.

  2. #2
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    salut,

    il te faut une callback en static

    ou alors, une autre solution est d'utiliser timeSetEvent

  3. #3
    Membre confirm� Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par d�faut
    D�sol� de ne pas r�pondre plus t�t, mais merci de m'aider

    Sinon, qu'es-ce qu'une CallBack en static ? et comment je pourrais l'utiliser, j'ai regard� dans l'aide de visual, mais je ne trouve rien qui ne parle d'un timer.

    Pour ce qui est du TimeSetEvent, j'ai l'impression que l'embedded visual C++4 ne la connait pas.

  4. #4
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    il te faut une fonction du type timerProc http://msdn.microsoft.com/library/de.../timerproc.asp, d�finie en static, donc avec le mot cl� static

  5. #5
    mat.M
    Invit�(e)
    Par d�faut
    Oui il faut faire une fonction CALLBACK mais c'est fortement d�conseill� de faire un timer dans une dll !
    Une dll n'est pas faite pour �a ,c est une erreur; une dll c'est fait pour encapsuler du code commun � plusieurs applications.
    L� ou c'est une erreur de proc�der c'est qu'une dll n'a pas de gestion de message comme la classe d'une fen�tre ( classe au sens API Windows , WNDCLASS et non C++).
    Un timer c'est g�rer dans la boucle de message d'une fen�tre pas d'un composant externe.

  6. #6
    Membre confirm� Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par d�faut
    Dans ce cas, comment faut il faire pour r�p�ter une action toutes les 'n' secondes sans utiliser de timer ?

    D'un autre c�t� l'utilisation de timer n'est pas exclusivement faite pour la gestion de message comme une classe fen�tre, en effet, on peu tr�s bien en retrouver dans des gestions d'interruptions en programmation bas niveau pour cartes �lectroniques.

  7. #7
    Membre exp�riment� Avatar de BertrandA
    Inscrit en
    Ao�t 2003
    Messages
    170
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2003
    Messages : 170
    Par d�faut
    Dans ce cas, comment faut il faire pour r�p�ter une action toutes les 'n' secondes sans utiliser de timer ?
    C'est plut�t � la partie cliente de la DLL d'invoquer ce code de mani�re p�riodique.

  8. #8
    Membre confirm� Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par d�faut
    Il m'est malheureusement impos� de ne pas le faire comme tel

  9. #9
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    mais pourquoi veux-tu te passer de timer ? on peut le faire avec un timer

  10. #10
    Membre confirm� Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par d�faut
    Personnelement je voudrais bien le faire avec un timer

    Mais je ne comprend pas comment lier la fonction SetTimer, avec la fonction CALLBACK.

    Pourrais tu m'aider la dessus ?

    Merci.

  11. #11
    mat.M
    Invit�(e)
    Par d�faut
    Citation Envoy� par Hokagge
    Il m'est malheureusement impos� de ne pas le faire comme tel
    comme l'indique BertrandA c'est la partie cliente qui doit g�rer cela.
    Pq faut-il mettre un timer dans la DLL ?

    C'est impossible car contrairement � une appli cliente fen�tr�e GUI une dll ne re�oit pas de messages de l'OS , n'est pas "Scheduled"
    Tu peux utiliser SetTimer et capter WM_TIMER mais la dll ne recevra jamais WM_TIMER.
    Sinon utiliser timeGetTime() et calculer le delta de temps pour effectuer des actions

  12. #12
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Puisque la DLL ne poss�de pas de pompe � message, qu'il ex�cute son timer dans un thread de son appli cliente.

  13. #13
    Membre confirm� Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Par d�faut
    Ok, je crois que je vais m'otienter vers un thred, mais est-ce que je peu mettre un thread dans une Dll ?

    (d�sol� d'�tre chia*t, mais je ne peu vraiment pas mettre de timer ou autre thread dans l'appli cliente cahier des charges oblige )

  14. #14
    mat.M
    Invit�(e)
    Par d�faut
    Citation Envoy� par Hokagge
    Ok, je crois que je vais m'otienter vers un thred, mais est-ce que je peu mettre un thread dans une Dll ?

    (d�sol� d'�tre chia*t, mais je ne peu vraiment pas mettre de timer ou autre thread dans l'appli cliente cahier des charges oblige )
    Avant de passer � la programmation d'un thread ce qui est parfaitement possible , je le r�p�te utiliser timeGettime c'est plus simple.

    Sinon il ya aussi les EVENT

Discussions similaires

  1. Probl�me de survol en cr�ation d'objet dans une DLL
    Par KlausGunther dans le forum Composants VCL
    R�ponses: 20
    Dernier message: 07/01/2015, 12h19
  2. R�ponses: 8
    Dernier message: 20/06/2008, 09h00
  3. Timer ou OnIdle dans une DLL
    Par oliver_mpt dans le forum C
    R�ponses: 1
    Dernier message: 05/06/2008, 21h11
  4. Creer un composant non visuel(Timer) dans une DLL
    Par hugobob dans le forum Composants VCL
    R�ponses: 1
    Dernier message: 06/06/2006, 16h20
  5. R�ponses: 4
    Dernier message: 16/05/2006, 23h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo