Accueil > Forum > > > > timer en mfc
timer en mfc
mardi 4 mai 2004 à 15:48:32 |
timer en mfc

dambeaufort
|
bonjour, pourriez me fournir un exemple simple de timer cree sous mfc. J'ai regarder dans le forum mais je n'y comprend rien. Pour moi Settimer, une fois appele, apelle une fonction processtimer executer toute les xx ms..... les exemples ici me paraissent tres compliques!!!! pouvez vous m'aider!!!!!!!!!!!!!!! merci
|
|
mardi 4 mai 2004 à 18:45:49 |
Re : timer en mfc

ymca2003
|
VOID CALLBACK TimerProc( HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime ) { // appélée régulièrement }
// création du timer toutes les dwTimeOut ms TimerProc sera appelé. int nId=SetTimer(NULL, 0, dwTimeOut, TimerProc);
// destruction: KillTimer(NULL, nId);
|
|
mercredi 5 mai 2004 à 10:22:25 |
Re : timer en mfc

dambeaufort
|
je te remercie mais je ne sais pas si le timer se lance actuellement car je fais incrementer une variable a l'interieure et elle ne change pas d'etat.
Autre chose: dans une telle fonction de timer, il n'est pas possible d'appeler une fonction d'une classe ? car j'ai essayer mais ca me dit que la fonction est non static. si je la met static, mes variable Cedit ... ne sont plus reconnues comment faire?
|
|
mercredi 5 mai 2004 à 11:33:36 |
Re : timer en mfc

ymca2003
|
la variable que tu modifie est-elle globale ou locale à la fct TimerProc (dans le second cas c'est normal que ça marche pas).
TimerProc ne peut avoir accès qu'a des variables globales, il faut donc mettre en global l'objet en question.
Si tu est en MFC, tu peut utilser SetTimer(IdTimer, dwTimeOut, NULL) dans la classe dérivant de CWnd dont tu souhaite accéder aux membres. Dans ce cas, OnTimer sera appelée. (classwizard->MemberFct WM_TIMER)
|
|
mercredi 5 mai 2004 à 11:37:00 |
Re : timer en mfc

dambeaufort
|
la variable est une variable globale dans une classe. le probleme est que je ne peux acceder a cette classe via le timer. A moins peut etre de faire comme tu dis. Peut tu me donner plus de precision (faut t'il intecepter le message WM_TIMER et comment?)
|
|
mercredi 5 mai 2004 à 11:52:43 |
Re : timer en mfc

ymca2003
|
On reprend depuis le début : - Ton timer va te servir à quoi ? - A quelles variables de quelles classes doit-it accéder ? - Type des classes (perso ou dérivé de CWnd, CDialog, CFrameWnd...) ?
|
|
mercredi 5 mai 2004 à 11:59:47 |
Re : timer en mfc

ymca2003
|
HBITMAP ResizeBmp(HBITMAP hBmpSrc, SIZE newSize) { // taille actuelle BITMAP bmpInfo; GetObject(hBmpSrc, sizeof(BITMAP), &bmpInfo); SIZE oldSize; oldSize.cx = bmpInfo.bmWidth; oldSize.cy = bmpInfo.bmHeight;
// selection source ds un DC HDC hdc = GetDC(NULL); HDC hDCSrc = CreateCompatibleDC(hdc); HBITMAP hOldBmpSrc = (HBITMAP)SelectObject(hDCSrc, hBmpSrc);
// création bitmap dest et sélection ds un DC HDC hDCDst = CreateCompatibleDC(hdc); HBITMAP hBmpDst = CreateCompatibleBitmap(hdc, newSize.cx, newSize.cy); HBITMAP hOldBmpDst = (HBITMAP)SelectObject(hDCDst, hBmpDst);
// resize StretchBlt(hDCDst, 0, 0, oldSize.cx, oldSize.cy, hDCSrc, 0, 0, newSize.cx, newSize.cy, SRCCOPY);
// libération ressources SelectObject(hDCSrc, hOldBmpSrc); SelectObject(hDCDst, hOldBmpDst); DeleteDC(hDCSrc); DeleteDC(hDCDst); ReleaseDC(NULL, hdc);
return hBmpDst; }
|
|
mercredi 5 mai 2004 à 12:00:39 |
Re : timer en mfc

ymca2003
|
oupps, je me suis gouré de sujet...
|
|
mercredi 5 mai 2004 à 15:04:00 |
Re : timer en mfc

dambeaufort
|
en fait voila le probleme:
Grace a une fenetre de dialogue, j'affiche et je met a jour les positions d'un robot que je commande. (progressbar, edit....)
actuellemnt, lorsque j'appui sur un bouton, je lance un mouvement, je vais ensuite relire la position du robot et je met a jour mon affichage (ceci ce fait dans une boucle while avec un sleep de 200 ms) Le probleme c qu'il arrive que l'affichage de ma boite de dialogue plante et je ne vois alors plus rien. (si j'ouvre une autre fenetre alors que je suis dans un while) je pensais donc me servir d'un timer pour mettre a jour mes barres de progression et mes fenetres edit toutes les ms pendant le mouvement. Peut etre que ca resoudrait le probleme?
Le timer servira donc a adapter et faire avancer si tu veux des barres de progression et des edit dans ma fenetre de dialogue. je dois donc avoir acces aux variables Cedit et Cprogressbar de ma fentres principale. Donc je dois acceder a la classe de ma fenetre principale qui est derivee de Cdialog.
Vois tu un peu mieux le truc?
|
|
mercredi 5 mai 2004 à 18:51:12 |
Re : timer en mfc

ymca2003
|
voici un petit chrono qui doit pouvoir de servir de base pour ton prog. le dialog IDD_TIMER contien un contrôle static (IDC_STC_TIMER) et 3 boutons (IDC_BTN_START, IDC_BTN_STOP et IDCANCEL). TestTimerDlg.h //***************************************************************************** // TestTimerDlg.h : // //*****************************************************************************
#ifndef AFX_TESTTIMERDLG_H_INCLUDED_ #define AFX_TESTTIMERDLG_H_INCLUDED_
//***************************************************************************** // Classe CTestTimerDlg. //***************************************************************************** class CTestTimerDlg : public CDialog { //============================================================================= // Membres privés. //============================================================================= private :
// police de caractères pour l'affichage CFont m_Font;
// début du chrono DWORD m_dwStartTime;
//============================================================================= // Méthodes publiques. //============================================================================= public : // constructeur CTestTimerDlg(CWnd* pParent = NULL);
//============================================================================= // Données de la boîte de dialogue. //============================================================================= //{{AFX_DATA(CTestTimerDlg) enum { IDD = IDD_TESTTIMER }; CButton m_BtnStop; CButton m_BtnStart; CStatic m_StcTimer; //}}AFX_DATA
//============================================================================= // Méthodes virtuelles redéfinies. //============================================================================= //{{AFX_VIRTUAL(CTestTimerDlg) protected : virtual void DoDataExchange(CDataExchange* pDX); //}}AFX_VIRTUAL
//============================================================================= // Traitement des messages. //============================================================================= protected : //{{AFX_MSG(CTestTimerDlg) virtual BOOL OnInitDialog(); afx_msg void OnBtnStart(); afx_msg void OnBtnStop(); afx_msg void OnTimer(UINT nIDEvent); //}}AFX_MSG DECLARE_MESSAGE_MAP() };
#endif // AFX_TESTTIMERDLG_H_INCLUDED_
|
TestTimerDlg.cpp: //***************************************************************************** // TestTimerDlg.cpp : // //*****************************************************************************
#include "StdAfx.h" #include "TestTimer.h" #include "TestTimerDlg.h"
//============================================================================= // Table des messages. //============================================================================= BEGIN_MESSAGE_MAP(CTestTimerDlg, CDialog) //{{AFX_MSG_MAP(CTestTimerDlg) ON_BN_CLICKED(IDC_BTN_START, OnBtnStart) ON_BN_CLICKED(IDC_BTN_STOP, OnBtnStop) ON_WM_TIMER() //}}AFX_MSG_MAP END_MESSAGE_MAP()
//***************************************************************************** // Constructeur //***************************************************************************** CTestTimerDlg::CTestTimerDlg(CWnd* pParent) : CDialog(CTestTimerDlg::IDD, pParent) { //{{AFX_DATA_INIT(CTestTimerDlg) //}}AFX_DATA_INIT }
//***************************************************************************** //***************************************************************************** void CTestTimerDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTestTimerDlg) DDX_Control(pDX, IDC_BTN_STOP, m_BtnStop); DDX_Control(pDX, IDC_BTN_START, m_BtnStart); DDX_Control(pDX, IDC_STC_TIMER, m_StcTimer); //}}AFX_DATA_MAP }
//***************************************************************************** // OnInitDialog : //***************************************************************************** BOOL CTestTimerDlg::OnInitDialog() { // appel fonction de la classe de base CDialog::OnInitDialog();
// chargement et affectation icone (grande et petite) HICON hIcon = LoadIcon(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_APPICON)); SetIcon(hIcon, TRUE); SetIcon(hIcon, FALSE);
// état des boutons m_BtnStart.EnableWindow(TRUE); m_BtnStop.EnableWindow(FALSE); m_BtnStart.SetFocus(); // création police de caractère et affectation CFont* pCurFont = m_StcTimer.GetFont(); LOGFONT lg; pCurFont->GetLogFont(&lg); lg.lfHeight = -40; lg.lfWeight = FW_BOLD; m_Font.CreateFontIndirect(&lg); m_StcTimer.SetFont(&m_Font); // retour return TRUE; }
//***************************************************************************** // OnBtnStart : //***************************************************************************** void CTestTimerDlg::OnBtnStart() { // création timer SetTimer(0x100, 100, NULL); m_dwStartTime = GetTickCount(); m_StcTimer.SetWindowText(_T("0"));
// état des boutons m_BtnStart.EnableWindow(FALSE); m_BtnStop.EnableWindow(TRUE); m_BtnStop.SetFocus(); }
//***************************************************************************** // OnBtnStop : //***************************************************************************** void CTestTimerDlg::OnBtnStop() { // destruction timer KillTimer(0x100);
// état des boutons m_BtnStart.EnableWindow(TRUE); m_BtnStop.EnableWindow(FALSE); m_BtnStart.SetFocus(); }
//***************************************************************************** // OnTimer : //***************************************************************************** void CTestTimerDlg::OnTimer(UINT nIDEvent) { // mise à jour du chrono TCHAR szText[16]; itoa((GetTickCount()-m_dwStartTime)/1000, szText, 10); m_StcTimer.SetWindowText(szText); }
|
|
|
Cette discussion est classée dans : timer, mfc
Répondre à ce message
Sujets en rapport avec ce message
Timer en MFC [ par superteta2003 ]
Salut...Je dois faire une mise à jour d'une CString dans une fenetre windows toutes les seconde en utilisant un Timer... Comment faire pour que le tra
[MFC Visual 6] timer, debug assertion et autres questions [ par vladii ]
J'ai quelques questions sur les MFC avec Visual 6, si quelqu'un peut m'aider, ça serait sympa: (projet en sdi) - je voudrais qu'au départ de mon appl
TIMER avec MFC [ par pcrafale ]
Bonjour à tous,Je n'arrive pas à programmer un timer sur un programme utilisant les MFC.Tous les codes expliquants les timer n'accepte pas les MFC.Sur
Timer MFC C++ [ par tren13 ]
Bonjour, j'aurais une question concernant les TIMER au niveau du MFC. j'ai cherché sur internet mais en général jai trouvé des gros exemples, et jaime
Timer en MFC [ par akalys ]
Bonsoir, Realisant un lecteur MP3 j'aurais besoin d'utiliser un timer pour la progression d'un slider suivant le temps. J'essais en créant un WM_TI
Ouvrir EXE application WCE MFC 6 [ par sharingtop ]
Bonjour a Tous, J'aimerais ouvrir une application .exe basée sur WCE MFC 6. J'ai essayer de l'ouvrir avec eMbedded Visual C++ 4.0. Le fichier en q
Quel avenir pour les MFC ?? [ par isir ]
quel avenir pour les MFC ??
Pb compilation sample drawcli MFC 9.0 [ par Flow8002 ]
Bonjour , J'essaye de creer une application de dessin vectoriel pour mon projet de fin d'année. J'essaye de m'appuyer sur le sample fournit avec la
Bouton tournant en MFC [ par med_mt ]
Je suis débutant dans l'utilisation de MFC, et je veux réaliser un bouton tournant dans mon interface comme celui de l'oscilloscope. Est-ce que quelqu
pbm code jock mfc [ par lamingrari12000 ]
hi i have a big pblem i made a good progamme in c++ mfc in .net 2005 with Codejock Xtreme Toolkit Pro v11.20 the pblem is i ame using Codejock Xtreme
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|