home *** CD-ROM | disk | FTP | other *** search
- #ifndef CPP_INTUITION_IDCMP_H
- #define CPP_INTUITION_IDCMP_H
-
- // Klassen zur Verwaltung des IDCMP
- // HandlerCklassen für die Antwort auf ein bestimmtes EventC,
- // Klasse zur Verwaltung von HandlerClisten und eines IDCMP
- // Message Ports und eine Listenklasse dieser Klasse
- //
- // Autor: Jochen Becher
- //
- // Historie:
- // Version 1.0 am 8. Januar 94
- //
-
- #ifndef EXEC_PORTS_H
- #include <exec/ports.h>
- #endif
-
- #ifndef INTUITION_INTUITION_H
- #include <intuition/intuition.h>
- #endif
-
- #ifndef CPP_EXEC_PORTS_H
- #include <classes/exec/ports.h>
- #endif
-
- class IntuiMessageC : public MessageC {
- public:
- ULONG Class;
- UWORD Code;
- UWORD Qualifier;
- APTR IAddress;
- WORD MouseX, MouseY;
- ULONG Seconds,Micros;
- struct Window *IDCMPWindow;
- struct IntuiMessage *SpecialLink;
- };
-
- class IDCMPEventHandlerC : public MessageHandlerC {
- public:
- IDCMPEventHandlerC(ULONG IDCMPclass);
- ULONG eventClass() const { return evClass; };
- BOOL handle(MessageC &);
- BOOL forMe(MessageC &);
- protected:
- virtual BOOL _handle(IntuiMessageC &msg);
- virtual BOOL _forMe(IntuiMessageC &msg);
- private:
- ULONG evClass;
- };
-
- class IDCMPEventHandlerChainC
- : public IDCMPEventHandlerC, public HandlerChainC {
- public:
- IDCMPEventHandlerChainC(ULONG IDCMPclass);
- VOID add(IDCMPEventHandlerC &h) { HandlerChainC::add(h); };
- BOOL handle(MessageC &msg) { return HandlerChainC::handle(msg); };
- BOOL exit() { return HandlerChainC::exit(); };
- };
-
- class IDCMPortC : public HandlerPortC {
- public:
- IDCMPortC() throw (PortX, MemoryX)
- : HandlerPortC() { };
- IDCMPortC(STRPTR name, BYTE pri = 0) throw (PortX, MemoryX)
- : HandlerPortC(name,pri) { };
- IDCMPortC(struct MsgPort *port) throw (PortX, MemoryX)
- : HandlerPortC(port) { };
- VOID add(IDCMPEventHandlerC &h) { HandlerPortC::add(h); };
- protected:
- BOOL handleMsg(MessageC &msg);
- IntuiMessageC imsg;
- };
-
- // Ein EventHandlerC zu einer IDCMP Class mit bestimmten Qualifiern
- class IDCMPQEventHandlerC : public virtual IDCMPEventHandlerC {
- public:
- IDCMPQEventHandlerC(ULONG IDCMPclass, UWORD IDCMPqualifier);
- protected:
- BOOL _forMe(IntuiMessageC &msg)
- { return qualifier == msg.Qualifier };
- private:
- UWORD qualifier;
- };
-
- // Ein EventHandlerC zu einer IDCMP Class mit einem bestimmten Code
- class IDCMPCEventHandlerC : public virtual IDCMPEventHandlerC {
- public:
- IDCMPCEventHandlerC(ULONG IDCMPclass, UWORD IDCMPcode);
- protected:
- BOOL _forMe(IntuiMessageC &msg)
- { return code == msg.Code };
- private:
- UWORD code;
- };
-
- // Ein EventHandlerC zu einer IDCMP Class mit bestimmten Qualifiern
- // und einem bestimmten Code
- class IDCMPQCEventHandlerC
- : public virtual IDCMPQEventHandlerC,
- public virtual IDCMPCEventHandlerC {
- public:
- IDCMPQCEventHandlerC(ULONG IDCMPclass, UWORD IDCMPqualifier, UWORD IDCMPcode);
- protected:
- BOOL _forMe(IntuiMessageC &msg)
- { return IDCMPQEventHandlerC::_forMe(msg) && IDCMPCEventHandlerC::_forMe(msg); };
- };
-
- #endif
-