Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako si vyrobiť MFC alarm aplikácie

Ak chcete aplikáciu , alarm , takže si môžete pamätať vykonať určitú úlohu v určitej dobe , myslím , že o použití Visual C + + . Jeho alarm subsystém " alarm.h " je určený pre spracovanie alarmov na základe operačného systému hodiny . Alarm_proc ukazovateľ funkcie MFC môže byť zabalený vo vnútri členských funkcií triedy Calar . Potom trieda CSchedule podarí Calar objekty , aby sa vaše aplikácie funkčné . Veci , ktoré budete potrebovať
IDE , ako Visual Studio . NET 2005
Zobraziť ďalšie inštrukcie Cestuj 1

Pochopiť alarm_proc funkcie ukazovateľ , ktorý je jadrom programu . Prijíma ako parametre čas spustenia alarmu a alarmu ID alebo alarmu rukoväte hodnoty . Tu je jeho prototyp : typedef void ( * alarm_proc ) ( int time , int alarm_id ) ;
2

Vložte alarm_proc do triedy , Calar , aby jej pokyny . Členské funkcie Calar bude reprezentovať jednoduché úlohy , ako je povoliť , zakázať , nastavenie času a viac . Tu je návrh , ako by ste mohli realizovať Calar : trieda Calar
{
verejné Foto :
typedef void ( * alarm_proc ) ( ) ;
//vytvorí alarm
Calar ( const ctím a čas , alarm_proc oheň ) : mtime ( čas ) , mEnabled ( true ) {
mAlarm_proc = požiaru ;
}
~ Calar ( ) { } void
setTime ( const ctím a čas ) {
mtime = čas ,
}
const ctíme & getTime ( ) const {
vrátiť mtime ;
}
bool IsEnabled ( ) const {
vrátiť mEnabled ;
}
void oheň ( ) const {
mAlarm_proc ( ) ; }
void zakázať ( ) {
mEnabled = false ; }
void umožniť ( ) {
mEnabled = true ; }
chránené Foto :
bool mEnabled ;
ctíme mtime ;
premenlivé alarm_proc mAlarm_proc ,
} ;
3

Navrhnite triedu CScheduler pre manipuláciu Calar objekty . Minimálne by mal robiť to , čo typický stopky robí . To znamená , že by mal začať slučku , zastaviť slučku a resetovať , ale aj pridať alarm , odstrániť alarm a tak ďalej . Nasleduje návrh pre triedu CScheduler . Sú zobrazené iba verejnej funkcie členov ( trieda rozhranie ) . Vykonávacie každú členskú funkciu je ponechaný ako cvičenie pre programátora : trieda CScheduler klipart { klipart verejné Foto :
CScheduler ( ) ;
~ CScheduler ( ) ;
void AddAlarm ( int rukoväť , const ctím a čas , Calar :: alarm_proc oheň ) ;
void RemoveAlarm ( int rukoväť ) ;
const Calar * Alarm ( int rukoväť ) const ;
Calar * Alarm ( int rukoväť ) ;
void StartLoop ( ) ;
void StopLoop ( ) ;
bool IsRunning ( ) const ;
void reset ( ) ;
súkromnú Foto : HONDA //
chránené Foto : HONDA //
} ; Stránka 4

Použite triedu MFC cmap uložiť Calar predmety v triede CScheduler . Cmap pole je vynikajúci pre rýchle indexovanie a pridať /odstrániť operáciou . Dajte premennú cmap v " chránenom " identifikátor prístupového triedy CScheduler . Tu je , ako to vyzerá : trieda CScheduler {
verejné Foto : HONDA //
chránené Foto :
cmap mAlarms ,
} ;
5

Vytvorte funkciu , ktorá ustavične prechádza objekty cmap ( CAlarms ) a , ak je potrebné byť popravený , spustí ju . Nech je to kamarát a vložte ho do "chránené " v CScheduler , pod mAlarms . Jeho zjednodušená implementácia môže byť nasledujúce : int iteráciu ( CSchedule * pSchedule ) {
polohy Pos ;
int ID ,
Calar * pAlarm ;
Ctíme čas ,
while ( pSchedule - > IsRunning ( ) ) {
if ( pSchedule - > mAlarms.IsEmpty ( ) )
pokračovať ;
čas = ctím :: GetCurrentTime ( ) ;
pos = pSchedule - > mAlarms.GetStartPosition ( ) ;
while ( pos! = NULL ) {
pSchedule - > mAlarms.GetNextAssoc ( pos , ID , pAlarm ) ;
if ( pAlarm - > getTime ( ) if ( pAlarm - > IsEnabled ( ) )
pAlarm - > fire ( ) ;
pAlarm - > setTime ( pAlarm - > getTime ( ) ) ;
odstrániť pAlarm ;
}
}
}
return 0 ;
} Praha 6

Použite triedu CScheduler v aplikácii MFC . To nebude fungovať inde . Pridajte CScheduler a Calar cpp ah súbory do projektu . Vytvorte inštanciu triedy CSchedule vo vašej aplikácii . a samozrejme , nezabudnite zavolať iterácii ( ) .

Najnovšie články