Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> C /C + + Programming >> .

Come fare un allarme Applicazione MFC

Se si desidera un'applicazione di allarme in modo che si possa ricordare di eseguire un particolare compito ad una certa ora , pensare di utilizzare Visual C + + . Il suo sottosistema di allarme " alarm.h " è progettato per gestire gli allarmi in base all'orologio di sistema operativo . Il alarm_proc puntatore a funzione MFC può essere avvolto all'interno di funzioni membro di una classe CAlarm . Poi una classe CSchedule in grado di gestire gli oggetti CAlarm per rendere l'applicazione funzionante . Cose che ti serviranno
Un IDE come Visual Studio . NET 2005
Mostra più istruzioni
1

capire il puntatore a funzione alarm_proc che è al centro del programma . Si accetta come parametri il tempo di esecuzione di allarme e un ID di allarme o di valore di handle di allarme . Ecco il suo prototipo : typedef void ( * alarm_proc ) (int tempo , int alarm_id ) ;
2

Mettere alarm_proc in una classe , CAlarm , per dargli istruzioni . Le funzioni membro di CAlarm rappresenteranno compiti semplici come attivare, disattivare l'impostazione di un tempo e di più . Ecco un suggerimento su come si potrebbe implementare CAlarm : class CAlarm
{
pubblico
: typedef void ( * alarm_proc ) ();
//crea un
allarme CAlarm ( const CTime e ora , alarm_proc fuoco ) : mTime (tempo) , mEnabled (true ) {
mAlarm_proc = fuoco ;
}
~ CAlarm ( ) { }
vuoto setTime ( const CTime e ora) {
mTime = tempo ;
}
const CTime & getTime ( ) const {
mTime return; }

isEnabled bool ( ) const {
ritorno mEnabled ;
}
vuoto fuoco ( ) const {
mAlarm_proc (); }

vuoto disable ( ) {
mEnabled = false; }

vuoto abilitare ( ) {
mEnabled = true ; }

protetto
: bool mEnabled ;
CTime mTime ;
mutevole alarm_proc mAlarm_proc ;
} ;
3

Progettare una classe CScheduler per la manipolazione di oggetti CAlarm . Come minimo , si deve fare ciò che un tipico cronometro fa. Che è, dovrebbe iniziare un ciclo, un ciclo fermata e riportata, ma anche aggiungere un allarme , rimuovere un allarme e così via . Di seguito è riportato un suggerimento per una classe CScheduler . Vengono visualizzate solo le funzioni membro pubbliche ( interfacce di classe ) . Attuazione di ciascuna funzione membro è lasciata come esercizio per il programmatore : classe CScheduler
{
pubblico
: CScheduler ();
~ CScheduler ();
vuoto AddAlarm (int handle , const CTime e ora , CAlarm :: alarm_proc fuoco ) ;
vuoto RemoveAlarm ( int handle ) ;
const CAlarm * Alarm ( int handle ) const ;
CAlarm * Alarm ( int handle ) ;
vuoto StartLoop ();
vuoto StopLoop ();
IsRunning bool ( ) const ;
void Reset ();
privato
: //
protetto
: //Games } ;
4

utilizzare una classe CMap MFC per memorizzare gli oggetti CAlarm nella classe CScheduler . Un array di CMap è eccellente per l'indicizzazione rapida e aggiungere /eliminare le operazioni . Mettere la variabile CMap nel identificativo di accesso "protetto" della classe CScheduler . Ecco come si presenta : class CScheduler {
pubblico
: //Games protetto
: CMap mAlarms ;
} ;
5

Creare una funzione che consente di scorrere continuamente attraverso gli oggetti CMap ( CAlarms ) e, se si ha la necessità di essere eseguiti , lo esegue. Ne fanno un amico e metterlo in "protetto" in CScheduler , sotto mAlarms . La sua attuazione semplificata può essere la seguente : int Iterate ( CSchedule * pSchedule ) {
posizione Pos ;
int ID ;
CAlarm * pAlarm ;
tempo CTime ;
mentre ( pSchedule - > IsRunning ( ) ) {
se ( pSchedule - > mAlarms.IsEmpty ( ) ) per continuare ;
tempo = CTime :: GetCurrentTime ();
pos = pSchedule - > mAlarms.GetStartPosition ( ) ;
mentre ( pos! = null) {
pSchedule - > mAlarms.GetNextAssoc (pos , ID , pAlarm ) ;
se ( pAlarm - > getTime ( ) if ( pAlarm - > isEnabled ( ) ) per pAlarm - > fuoco ();
pAlarm - > setTime ( pAlarm - > getTime ());
delete pAlarm ;
} }


} return 0;
} Pagina 6

Utilizzare la classe CScheduler in un'applicazione MFC . non funzionerà altrove. Aggiungere il file h CScheduler e CAlarm cpp e al progetto. Fai un'istanza della classe CSchedule nell'applicazione. ed , Naturalmente , non dimenticate di chiamare iterate ( ) .

 

Programmazione © www.354353.com