Programação  
 
Conhecimento computador >> Programação >> C /C + + programação >> 
Como fazer um aplicativo de alarme MFC
Se você quiser um aplicativo de alarme para que você possa se ​​lembrar de executar uma tarefa específica em determinado período de tempo , pense em usar o Visual C + +. O alarme subsistema " alarm.h " é projetado para lidar com alarmes com base no relógio do sistema operacional. O alarm_proc ponteiro de função MFC pode ser acondicionada dentro funções de membro em uma classe CAlarm . Em seguida, uma classe CSchedule pode gerenciar objetos CAlarm para tornar a sua aplicação funcional . Coisas que você precisa
Uma IDE como o Visual Studio. NET 2005
Show Mais instruções
1

Entenda o ponteiro de função alarm_proc que está no coração do programa. Ele aceita como parâmetros o tempo de execução do alarme e um ID de alarme ou alarme valor do identificador . Aqui é o seu protótipo : typedef void ( * alarm_proc ) ( tempo int, int alarm_id ); Página 2

Coloque alarm_proc em uma classe , CAlarm , para dar-lhe instruções . As funções de membro do CAlarm representará tarefas simples, como ativar, desativar , estabelecendo um tempo e muito mais. Aqui vai uma sugestão de como você poderia implementar CAlarm : classe CAlarm
{
público :
typedef void ( * alarm_proc ) ();
//cria um alarme
CAlarm (const CTime e hora, alarm_proc fogo ) : mtime (tempo) mEnabled (true) {
mAlarm_proc = fogo ;
}
~ CAlarm () {}
setTime void ( const CTime e hora) {
mtime = tempo ; }

const CTime & getTime () const {
retornar mtime ;
}
bool isEnabled () const {
retornar mEnabled ;
}
fogo void ( ) const {
mAlarm_proc (); }

disable void ( ) {
mEnabled = false; }

vazio permitir () { < br > mEnabled = true; }

protegido
:
bool mEnabled ;
CTime mtime ;
mutável mAlarm_proc alarm_proc ;
};
3

Projete uma classe CScheduler para manipular objetos CAlarm . No mínimo, ele deve fazer o que um cronômetro normal faz. Ou seja, ele deve iniciar um loop, parar um loop e redefinir , mas também adicionar um alarme, remover um alarme e assim por diante . A seguir é uma sugestão para uma classe CScheduler . Apenas as funções de membro público (interfaces de classe) são mostrados. Implementação de cada função de membro é deixado como um exercício para o programador : classe CScheduler
{
pública , Foto:
CScheduler ();
~ CScheduler ();
AddAlarm vazio (int handle , const CTime e hora, CAlarm :: alarm_proc fogo );
RemoveAlarm void ( int handle) ;
CAlarm const * Alarme (int handle) const;
CAlarm * Alarme (int handle) ;
vazio StartLoop ();
anular StopLoop ();
bool IsRunning () const;
void Reset ();
privado :
//< br > protegido
:
//Tablet };
4

Use uma classe do MFC CMap para armazenar os objetos CAlarm na classe CScheduler . Uma matriz CMap é excelente para indexação rápida e adicionar /excluir operações. Coloque a variável CMap no identificador de acesso "protegido" da classe CScheduler . Aqui está o que parece : classe CScheduler {
público :
//
protegido :
CMap mAlarms ;
};
5

Crie uma função que continuamente percorre os objetos CMap ( CAlarms ) e , se a pessoa precisa ser executado, executa. Torná-lo um amigo e colocá-lo em "protegido" em CScheduler , sob mAlarms . Sua implementação simplificada pode ser a seguinte : int iterate ( CSchedule * pSchedule ) { posição pos
;
int ID ;
CAlarm * pAlarm ;
CTime tempo;
while ( pSchedule -> IsRunning ()) {
if ( pSchedule -> mAlarms.IsEmpty ())
continuar ;
time = CTime :: GetCurrentTime ();
pos = pSchedule -> mAlarms.GetStartPosition ();
while ( pos! = NULL ) {
pSchedule -> mAlarms.GetNextAssoc (pos , ID , pAlarm );
if ( pAlarm -> getTime () if ( pAlarm -> isEnabled ())
pAlarm -> fogo ();
pAlarm -> setTime ( pAlarm -> getTime ());
apagar pAlarm ;
} } }


retornar 0 ;
}
6

Use a classe CScheduler em um aplicativo MFC. Ele não será executado em outro lugar. Adicione o cpp CScheduler e CAlarm e arquivos h ao seu projeto. Faça uma instância da classe CSchedule em sua aplicação. e é claro, não se esqueça de chamar Iterate ().

Anterior :

Próximo : No
  Os artigos relacionados
·Como usar o Xcode 
·Como criar um arco em GTK Radiant 
·Como posso mudar meu arquivo EXE para um arquivo CPP 
·Como criar um novo arquivo DAT em ​​Matlab 
·Como expoentes de entrada em C 
·Como fazer divisões de ponto flutuante 
·Como reinstalar o Visual C 
·Recursos incorporados no Silverlight 
·C #: Como obter ou ajustar a data 
·Como Fazer um Asterisk Espaço Padrão em C + + 
  Artigos em destaque
·Como passar parâmetros para MVC View 
·Como compilar código C + + Usando GNU 
·Como inserir um Array no primeiro elemento usando C + +…
·Como ocultar os botões no Xcode 
·Como abrir um PDF em C # 
·Como formatar datas e horas com Iostream 
·Como escrever um + + Programa Média C 
·Como calcular Sin Com Series Poder em C + + 
·Como fazer um jogo de RPG em C + + 
·O que é uma herança de conflitos 
Cop e direita © Conhecimento computador http://ptcomputador.com Todos os Direitos Reservados