Skocz do zawartości

setTime limit i zmiana tekstu


Chimera

Recommended Posts

#define ID_TIMER 1
char szText[32];

//...

case WM_CREATE:
  // Tutaj ustawiamy zegar aby tykal co jedna sekunde
  SetTimer(hWnd, ID_TIMER, 1000, NULL); // 1000 - to jest jednasekunda

//...

// Tutaj odbieramy komunikat co jedna sekunde i rysujemy sobie zmieniony text
case WM_TIMER:
  if(Param==ID_TIMER)
  {
    // Tutaj sobie zmieniasz w jakis sposob swój text w zmiennej szText
    hdc = GetDC(hWnd);
    TextOut(hdc, 0, 0, szText strlen(szText));
    ReleaseDC(hWnd, hdc);
  }

//...

case WM_DESTROY:
  // Tutaj niszczymy zegar
  KillTimer(hWnd, ID_TIMER);

//...

Inny sposob to np ustawic procedure wzrotna dla tego zegara i bedzie ona wywolywana co okreslony czas - w twoim wypadku co sekunde - i tam mzoesz robic co chcesz - ale o tym poczytaj sobie głębiej w MSDNie.
Mozesz takze w komunikacie WM_TIMER tylko zmieniac text i wymuszac odmalwoanie sie okna i w komunikacie WM_PAINT tylko rysujesz napis funkcja TextOut.

Link do komentarza
Udostępnij na innych stronach

Witam!

Mam pytanka nawiazujace do tematu.

W win98 i Dosie bylo cos takiego jak przerwanie zegarowe generowane od timera. Z tego powodu aplikacje nie moga otrzymywac komunikatu WM_TIMER nie czesciej niz 55ms.

W NT ta warosc wynosi 10ms.

1.A jak to jest w 2000/xp/2003 czy to tez jest 10ms?

Bo w MSDN-ie pisza o wartosci USER_TIMER_MINIMUM:

https://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/Timers/TimerReference/TimerFunctions/SetTimer.asp

Ale ile ona wynosi?Ewentualnie jak to sprawdzic?

Jesli bym chcial odmierzyc dokladnie czas w MSDN-ie znalazlem funkcje:
QueryPerformanceCounter
QueryPerformanceFrequency

https://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/Timers/TimerReference/TimerFunctions/QueryPerformanceFrequency.asp

2.Czy czestotliwosc uzywana w funkcji QueryPerformanceFrequency zalezy od czestotliwosci procesora? Bo gdybym chcial przenies programik na kompa o innej czestotliwosci procka to czy bedzie jakas zmiana w tej czestotliwosci?

Dzieki za wszelkie odpowiedzi!

Link do komentarza
Udostępnij na innych stronach

  • 3 weeks later...

Najlepiej do tego wykorzystac osobny watek.

Zakladasz taki watek dla obslugi zmiany tekstu w oknie (lub wielu oknach).
Faszerujesz go GetTickCount-ami czy RDTSC-ami i wysterowujesz kontrolki bez zadnego bawienia sie w minimialne timery, blokowanie petli komunikatow, czy inne niepozadane zjawiska.

Minus taki ze troche sie trzeba napisac, ale plus ze mozna niezle zbajerowac program wysterowujac wiele okien na rozne sposoby.

Link do komentarza
Udostępnij na innych stronach

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...