#ifndef Maus_H
#define Maus_H

#include "Betriebssystem.h"
#include "ReferenceCounter.h"

namespace Framework
{
    class Bild; //! aus Bild.h
    class Maus; //! aus dieser Datei

    namespace MausId
    {
        const int nichts = 0;
        const int normal = 1;
        const int hand = 2;
        const int warten = 3;
        const int verschieben = 4;
        const int text = 5;
        const int wahgerecht = 6;
        const int senkrecht = 7;
        const int diagonal1 = 8;
        const int diagonal2 = 9;
        const int verboten = 10;
    }

    //! Diese Klasse verwaltet das Bild des Mauszeigers
    //! Sie wird vom Framework intern verwendet
    //! Siehe Globals.h MausZeiger
    class Maus : public virtual ReferenceCounter
    {
    private:
        HCURSOR hMaus;

    public:
        //! Konstruktor 
        DLLEXPORT Maus();
        //! läd eine maus von Windows
        //! \param mausId Werte aus dem Namespace MausId
        //! beispiel: ladeMaus( MausId::hand );
        DLLEXPORT void ladeMaus( int mausId );
        //! Kopiert ein Bild und verwendet es als Mauszeiger.
        //! \param maus Das Bild, was als Mauszeiger verwendet werden soll
        DLLEXPORT void ladeMaus( Bild *maus );
        //! Akzualisiert die Maus. Wird vom Framework selbst aufgerufen
        DLLEXPORT void update();
        //! gibt ein Händle zur maus zurück
        DLLEXPORT HCURSOR getMausHandle();
    };
}

#endif