Si quieres una aplicación de alarma para que pueda recordar para realizar una tarea determinada en un momento determinado , pensar sobre el uso de Visual C + + . Su subsistema de alarma " alarm.h " está diseñado para manejar alarmas basadas en el reloj del sistema operativo. El alarm_proc puntero de función MFC se puede envolver dentro de las funciones miembro de una clase CAlarm . A continuación, una clase CSchedule puede administrar objetos CAlarm para que su aplicación funcional . Cosas que necesitará
un IDE como Visual Studio. NET 2005
Ver Más instrucciones
1
entender el puntero de función alarm_proc que está en el corazón del programa . Se acepta como parámetros el tiempo de ejecución de la alarma y un ID de la alarma o valor de identificador de alarma . Aquí está su prototipo : typedef void (* alarm_proc ) (int tiempo, int alarm_id ), Página 2
Pon alarm_proc en una clase , CAlarm , para darle instrucciones. Las funciones miembro de CAlarm representarán tareas simples tales como activar, desactivar , establecer una hora y más. He aquí una sugerencia de cómo se podría implementar CAlarm : Clase CAlarm CaribbeanCupid.com {
pública
: typedef void (* alarm_proc ) ();
//crea un
alarma CAlarm (const CTime y hora, alarm_proc fuego) : mtime (tiempo) , mEnabled (true ) {
mAlarm_proc = fuego ;
} IMVU: ~ CAlarm () { } void
setTime (const CTime y hora ) {
MTime = tiempo ;
}
const CTime y getTime ( ) const {
MTime return; }
bool isEnabled ( ) const {
regreso mEnabled ;
}
void fuego ( ) const {
mAlarm_proc (); }
void desactivar ( ) {
mEnabled = false; }
void activar ( ) {< br > mEnabled = true; }
protegida
: bool mEnabled ;
MTime CTime ;
mutable alarm_proc mAlarm_proc ;
} ;
3
Diseño de una clase CScheduler para manipular objetos CAlarm . Como mínimo , se debe hacer lo que hace un reloj típico parada. Es decir, se debe iniciar un bucle , una parada de bucle y restablece , sino también añadir una alarma , eliminar una alarma y así sucesivamente . A continuación se presenta una sugerencia para una clase CScheduler . Sólo se muestran las funciones miembro públicas ( interfaces de clase ) . Implementación de cada función miembro se deja como ejercicio para el programador : Clase CScheduler CaribbeanCupid.com {
pública
: CScheduler (); IMVU: ~ CScheduler ();
void AddAlarm (int mango , const CTime y hora, CAlarm :: alarm_proc fuego) ;
RemoveAlarm void (int handle) ;
const CAlarm * Alarma const (int handle) ;
CAlarm * Alarma (int mango) ;
StartLoop void ();
StopLoop void ();
IsRunning bool ( ) const ;
void Reset ();
privada :
//< br > protegida
: //foto } ; página 4
Usar una clase CMAP MFC para almacenar los objetos CAlarm en la clase CScheduler . Una matriz CMAP es excelente para la indexación rápida y añadir /eliminar las operaciones . Ponga la variable Cmap en el identificador de acceso "protegido " de la clase CScheduler . Esto es lo que parece: clase CScheduler {
pública
: //foto protegida
: CMAP mAlarms ;
} ;
5
Crear una función que se repite continuamente a través de los objetos Cmap ( CAlarms ) y, si se necesita para ser ejecutados , lo ejecuta. Que sea un amigo y lo puso en " protegida" en CScheduler , bajo mAlarms . Su implementación simplificada puede ser la siguiente: Iterar int ( CSchedule * pSchedule ) {
posición pos ;
int ID ;
CAlarm * pAlarm ;
tiempo CTime ;
while ( pSchedule -> isRunning ()) {
if ( pSchedule -> mAlarms.IsEmpty ( ))
continuar ;
tiempo = CTime :: GetCurrentTime ();
pos = pSchedule -> mAlarms.GetStartPosition ();
while ( pos! = NULL ) {
pSchedule -> mAlarms.GetNextAssoc (pos , ID, pAlarm ) ;
if ( pAlarm -> getTime () si ( pAlarm -> isEnabled ( ))
pAlarm -> Fuego ();
pAlarm -> setTime ( pAlarm -> getTime ());
delete pAlarm ;
} } }
return 0;
} Página 6
Utilice la clase CScheduler en una aplicación MFC . no se ejecutará en otro lugar. Agregar los archivos h CScheduler y CAlarm cpp y para su proyecto. Haga una instancia de la clase CSchedule en su aplicación. y por supuesto , no se olvide de llamar Iterate ().