Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> C /C + + Προγραμματισμός

Πώς να κάνει ένα MFC Application συναγερμού

Αν θέλετε μια εφαρμογή συναγερμού , έτσι ώστε μπορείτε να θυμηθείτε να εκτελέσει μια συγκεκριμένη εργασία σε ορισμένο χρονικό διάστημα , σκεφτείτε για τη χρήση της Visual C + + . Συναγερμού του υποσυστήματος " alarm.h " είναι σχεδιασμένο να χειρίζεται συναγερμούς με βάση το ρολόι του λειτουργικού συστήματος . Το MFC alarm_proc δείκτη συνάρτησης μπορεί να είναι τυλιγμένο μέσα σε συναρτήσεις σε μια τάξη CAlarm . Στη συνέχεια, μια κατηγορία CSchedule μπορεί να διαχειριστεί CAlarm αντικείμενα για να κάνετε την αίτησή σας λειτουργικό . Τα πράγματα που θα χρειαστείτε
Μια IDE όπως το Visual Studio . NET 2005
Η Εμφάνιση Περισσότερες οδηγίες
Η 1

Κατανοήστε τον δείκτη της alarm_proc που είναι στην καρδιά του προγράμματος . Δέχεται ως παραμέτρους το χρόνο εκτέλεσης του συναγερμού και ένα αναγνωριστικό συναγερμού ή την αξία λαβή συναγερμού . Εδώ είναι το πρωτότυπό του : typedef void ( * alarm_proc ) (χρόνος int , int alarm_id ) ?
2

Βάλτε alarm_proc σε μια τάξη , CAlarm , για να του δώσει οδηγίες. Τα καθήκοντα μέλους της CAlarm θα εκπροσωπήσει απλές εργασίες όπως ενεργοποίηση , απενεργοποίηση , θέτοντας ένα χρόνο και περισσότερο . Εδώ είναι μια πρόταση για το πώς θα μπορούσαν να εφαρμόσουν CAlarm : class CAlarm
{
δημόσια Φωτογραφία:
typedef void ( * alarm_proc ) ( ) ?
//Δημιουργεί ένα
συναγερμού CAlarm ( const ctime & ώρα , alarm_proc φωτιά ) : mtime (χρόνος ) , mEnabled ( true) {
mAlarm_proc = φωτιά?
}
~ CAlarm ( ) { }
άκυρη setTime ( const ctime & ώρα ) {
mtime = χρόνος ?
}
const ctime & getTime ( ) const {
επιστρέψει mtime ?
}
bool isEnabled ( ) const {
επιστρέψει mEnabled ?
}
άκυρη φωτιά ( ) const {
mAlarm_proc ( ) ? }

άκυρη απενεργοποίηση ( ) {
mEnabled = false ? }

κενό ενεργοποιήσετε ( ) {
mEnabled = true ?
}
προστατεύεται Φωτογραφία:
bool mEnabled ?
ctime mtime ?
ευμετάβλητος alarm_proc mAlarm_proc ?
} ?
Η 3

Σχεδιάστε μια κατηγορία CScheduler για το χειρισμό CAlarm αντικείμενα . Στο ελάχιστο , θα πρέπει να κάνει ό, τι κάνει ένα τυπικό χρονόμετρο . Δηλαδή , θα πρέπει να ξεκινήσει μια θηλιά , να σταματήσει ένα βρόχο και επαναφορά , αλλά επίσης να προσθέσετε μια ειδοποίηση, να καταργήσετε μια αφύπνιση και ούτω καθεξής . Μετά είναι μια πρόταση για μια κατηγορία CScheduler . Μόνο οι λειτουργίες της δημόσιας μέλος ( διασυνδέσεις κατηγορίας ) εμφανίζονται . Εφαρμογή κάθε συνάρτηση μέλος αφήνεται ως άσκηση για τον προγραμματιστή : class CScheduler
{
δημόσια Φωτογραφία:
CScheduler ( ) ?
~ CScheduler ( ) ?
Άκυρη AddAlarm ( λαβή int , const ctime & ώρα , CAlarm :: alarm_proc φωτιά ) ?
άκυρη RemoveAlarm ( λαβή int ) ?
const CAlarm * Συναγερμός ( λαβή int) const ?
CAlarm * Συναγερμός ( λαβή int ) ?
άκυρη StartLoop ( ) ?
ακυρώσει StopLoop ( ) ?
bool IsRunning ( ) const ?
άκυρη Επαναφορά ( ) ?
ιδιωτικό Φωτογραφία:
//
προστατεύονται Φωτογραφία:
//
} ?
4

Χρησιμοποιήστε μια τάξη MFC CMAP να αποθηκεύετε τα αντικείμενα CAlarm στην κατηγορία CScheduler . Μια συστοιχία CMAP είναι εξαιρετική για γρήγορη δημιουργία ευρετηρίου και να προσθέσετε /διαγράψετε εργασίες . Βάλτε τη μεταβλητή CMAP στην "προστατευμένη " αναγνωριστικό πρόσβασης της τάξης CScheduler . Εδώ είναι τι μοιάζει : class CScheduler {
δημόσια Φωτογραφία:
//
προστατεύεται Φωτογραφία:
CMAP mAlarms ?
} ?
5

Δημιουργήστε μια λειτουργία που συνεχώς επαναλαμβάνεται μέσα από τα αντικείμενα CMAP ( CAlarms ) και , αν κάποιος πρέπει να εκτελεστεί , εκτελεί . Κάντε το σε ένα φίλο και το βάζουμε στο "προστατευμένο" σε CScheduler , υπό mAlarms . Απλοποιηθεί η εφαρμογή της μπορεί να είναι ως εξής : int επαναλήψεις ( CSchedule * pSchedule ) {
pos ΘΕΣΗ ?
Int ID ?
CAlarm * pAlarm ?
Χρόνο ctime ?
Ενώ ( pSchedule - > isRunning ( ) ) { αν
( pSchedule - > mAlarms.IsEmpty ( ) )
συνεχίσει?
χρόνος = ctime :: GetCurrentTime ( ) ?
Πίσω pos = pSchedule - > mAlarms.GetStartPosition ( ) ?
ενώ ( pos! = NULL) {
pSchedule - > mAlarms.GetNextAssoc ( pos , ID , pAlarm ) ?
αν ( pAlarm - > getTime ( ) εάν ( pAlarm - > isEnabled ( ) )
pAlarm - > φωτιά ( ) ?
pAlarm - > setTime ( pAlarm - > getTime ( ) ) ?
διαγραφή pAlarm ?
}
} }

επιστροφή 0?
}
6

Χρησιμοποιήστε την κλάση CScheduler σε μια εφαρμογή MFC . δεν θα τρέξει αλλού . Προσθέστε το CScheduler και CAlarm cpp και τα αρχεία h στο έργο σας . Κάντε μια παρουσία της κλάσης CSchedule στην εφαρμογή σας . και , φυσικά , μην ξεχάσετε να καλέσετε επαναλήψεις ( ) .
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα