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 ( ) {
 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 : 
 //
  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 (). 
 
 
          
