Полезно за вас: Речник | Игри | Новини | Фирми | Рецепти | Обяви
Начало на реферати

Входно изходен интерфейс.Таймер


Информационни технологии | 2009-12-04 | 69 сваляния

16 Вх./изх. интерфейс.Таймер.Call-back ф-ии. Прихващане на ф-ии в Windows


Таймер

Софтуерен таймер-периодично чрез отлагане на съобщения информира, че е изминал определен времеви интервал. При програми, които по някъкъв начин са свързани с време; в програми които периодично правят определени измервания на началната памет в компютъра; при много задания, работа, когато програмата освобождава ресурсите и да ги предоставим на други; при програми, които автоматично апериодично съхраняват данни при операции.

Ето един фрагмент от програма, дефиниращ 2 таймера:

#define TIMER_SEC 1

#define TIMER_MIN 2

.....

SetTimer(hwnd, TIMER_SEC, 1000, NULL);

SetTimer(hwnd, TIMER_MIN, 60000,NULL);

....

case WM_TIMER :

switch(wParam) / /съдържа идентификатор на таймер

{case TIMER_SEC : // обработка веднаж в секунда;

break;

case TIMER_MIN : // обработка веднаж в минута;

break;

......

CALL-BACK функции

Това е функция предназначена да се вика през ОС на която може да се предават определени аргументи.Викането не става явно.Те позволяват:

  • свързване с прозорец

  • да приемат за обработка съобщения

  • функционално модифицирана обикновено стандартна Арр функция

  • позволява както ние да подадем параметри, така и Windows като мине през него да допълни със стойности параметри.

Списъка на Call-back функцията е фиксиран.

Пр.1

WORD FAR PASCAL TimerProc(HWND hwnd, WORD message,WORD wParam,LONG lParam)

{//отработване на съобщенията от таймера; return 0; }

EXPORT xxxxx

TimerProc

FARPROC lpfnTimerProc; // декларация на дълъг указател

......

lpfnTimerProc = MakeProcInstance (TimerProc, hInstance);

.....

SetTimer(hwnd,1, Interval, lpfnTimerProc);

Този пример прави следното - създава в паметта служебна структура, шлюз през който задължително минава всяко извикване на тази функция, а служебна защото се изпълнява от Win. Всяка Win програма взема съдържанието на ахи го поставя като даннов сегмент.Ако не изработим по този начин адреса извикването на TimerProc ще се намери (кода), но данните - не . Когато Windows размества код и данни в паметта, той има грижата да ги премести в шлюза. Мястото на данни и код е променливо за това понятието на адреса губи смисъл, но за нас адреса е постоянен, защото ние го вземаме от шлюза.

Таймери в 32 битови среди

CWnd:: SetTimer() CWnd::KillTimer();

MFC макросът ON_WM_TIMER насочва WM_TIMER към CMainWindows::OnTimer(UINT nTimerID);

Обработката на таймер със съобщения става по 2 начина:

  1. Чрез свързване към съобщението и той се връща до пр.1.

  2. Чрез свързване с Call-back функция

Таймерското съобщение е ниско приоритетно, т.е ако getmessаge изтегли всички съобщения от опашката тогава ще провери дали е вдигнат флага от таймера. Тогава то се изтегля от getmеssаge а Dispatch message проверява има ли Call-back функция. Ако има подава на нея съобщение, а ако няма се свързва с PROC функцията, която е обща за всички.

1. Приложението с таймер би трябвало да изглежда така:

BEGIN_MESSAGE_MAP ( CMainwindow, CFrameWindow)

ON_WM_CREATE()

ON_WM_TIMER()

END_MESSAGE_MAP


int CMainWindow::OnCreate()

{if(!SetTimer(ID_TIMER_XX,100,NULL)) {..} return 0;}

void CMainWindow::PnTimer(UINT nTimerID)

{ // например изрисува нещо през 100 мс }

2.Ако искаме да свържем таймера с callback ф-ия:

SetTimer( ID_TIMER, 100, TimerProc); ..

void CALLBACK TimerProc( HWND hWnd, UINT nMsg, UINT nTimerID, DWORD dwTime )

Всяка Call-back функция трябва да е или глобална или статична. Глобална да не е метод на никакъв клас. За да е описана в клас трябва да е статична. Call-back функциите са статични, защото списъка с параметрите е фиксиран. Много от Call-back

Входно изходен интерфейс.Таймер

Добави своя коментар:



Тагове от реферата: , , , , , ,


Подобни материали


Основни понятия в ОС Информационни технологии | 2010-11-19 | 150 прочитания
Рисуване на сгради в CorelDraw Информационни технологии | 2010-11-19 | 195 прочитания
Основни свойства на ентропията Информационни технологии | 2010-11-19 | 57 прочитания
Архитектура (топология) на локалната мрежа. Предимства и недостатъци на отделните видове топологии Информационни технологии | 2010-11-19 | 222 прочитания
Работа с двойчни файлове в С++ Информационни технологии | 2010-11-19 | 119 прочитания
Същност и предмет на Информатиката. Понятия Информационни технологии | 2010-11-19 | 91 прочитания
Рекурсия 1 Информационни технологии | 2010-11-19 | 34 прочитания
Създаване, закриване и модифициране на потребителски акаунти Информационни технологии | 2010-11-19 | 152 прочитания
СУБДАccess.Запитвания.Сортиране Информационни технологии | 2010-11-19 | 58 прочитания
РАБОТА С ИКОНИ И ФАЙЛОВЕ Информационни технологии | 2010-11-19 | 83 прочитания