Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Visual C++ i WM_Timer

[es] :: C/C++ programiranje :: Visual C++ i WM_Timer

[ Pregleda: 2851 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nbeograd
Goran Blecic
Beograd

Član broj: 36881
Poruke: 9
195.252.85.*



Profil

icon Visual C++ i WM_Timer30.10.2004. u 03:20 - pre 236 meseci
Kako da u Visual C++ (6 ili .NET) pozovem funkciju na svakih 300
mikrosekundi (intervali za WM_Timer poruke su u milisekundama)?

Hvala
 
Odgovor na temu

Milan Aksic

Član broj: 412
Poruke: 1053
213.244.197.*



Profil

icon Re: Visual C++ i WM_Timer31.10.2004. u 21:43 - pre 236 meseci
Koriscenjem Win32 API funkcija, "tajmer" se startuje pozivom SetTimer() funkcije (npr. tokom obrade poruke WM_CREATE), i dodavanjem case uslova za obradu WM_TIMER poruke u switch (ili else if) uslovnoj petlji za obradu poruka. Na primer:
Code:

switch (message) {
   case WM_CREATE:
      SetTimer(hwnd, 1, 1000, NULL);
      /* ostali kood */
      return 0;
   case WM_TIMER:
      /* kood koji bi se izvrsavao nakon dobijanja WM_TIMER poruke */
      return 0;
    /* ostali uslovi */
}

Koricenjem MFC biblioteke, "tajmer" se startuje pozivom preklopljene funkcije istog naziva SetTimer(), naznacavanjem obrade WM_TIMER deklarisuci poziv afx_msg void OnTimer(UINT nIDEvent) u deklaraciji "Frame" (izvedene iz CFrameWnd) klase i naznacavanje imena poruke u implementaciji iste klase. Na primer:
Code:

// cglavnifrejm.h
class CGlavniFrejm : public CFrameWnd {
   public:
      CGlavniFrejm();
      ~CGlavniFrejm();
      // ostali kood
   private:
      //{{AFX_MSG(CGlavniFrejm)
      afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
      afx_msg void OnTimer(UINT nIDEvent);
      //}}AFX_MSG
      DECLARE_MESSAGE_MAP()
      // ostali kood
}

// cglavnifrejm.cpp
#include "cglavnifrejm.h"
BEGIN_MESSAGE_MAP(CGlavniFrejm, CFrameWnd)
   //{{AFX_MSG_MAP(CGlavniFrejm)
   ON_WM_CREATE()
   ON_WM_TIMER()
   //}}AFX_MSG_MAP
END_MESSAGE_MAP()

// implementacija kostruktora CGlavniFrejm klase
// implementacije destruktora CGlavniFrejm klase

int CGlavniFrejm::OnCreate(LPCREATESTRUCT lpCreateStruct) {
   SetTimer(1, 100, NULL);
   // ostali kood
   return 0;
}

void CGlavniFrejm::OnTimer(UINT nIDEvent) {
   // kood koji bi se izvrsavao nakon dobijanja WM_TIMER poruke
}

// ostali kood

U oba gornja primera, kood za obradu poruke WM_TIMER ce se verovatno (u zavisnosti od samog kooda) izvrsavati svake sekunde (1 sek. == 1000 ms).
Takodje, najkraci vremenski interval slanja WM_TIMER poruke, ako se dobro secam, ne moze biti kraci od 50 ms na Win9x odnosno 15 ms na WinNT verzijama.
 
Odgovor na temu

`and

Član broj: 32490
Poruke: 776
*.verat.net.

Sajt: www.bitbyterz.org


Profil

icon Re: Visual C++ i WM_Timer01.11.2004. u 12:32 - pre 236 meseci
http://www.elitesecurity.org/tema/70506
 
Odgovor na temu

[es] :: C/C++ programiranje :: Visual C++ i WM_Timer

[ Pregleda: 2851 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.