#ifndef Maus_H
#define Maus_H

#include "Betriebssystem.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
    {
    private:
        HCURSOR hMaus;
        int ref;

    public:
        // Konstruktor 
        __declspec( dllexport ) Maus();
        // l�d eine maus von Windows
        //  mausId: Werte aus dem Namespace MausId
        // beispiel: ladeMaus( MausId::hand );
        __declspec( dllexport ) void ladeMaus( int mausId );
        // Kopiert ein Bild und verwendet es als Mauszeiger.
        //  maus: Das Bild, was als Mauszeiger verwendet werden soll
        __declspec( dllexport ) void ladeMaus( Bild *maus );
        // Akzualisiert die Maus. Wird vom Framework selbst aufgerufen
        __declspec( dllexport ) void update();
        // gibt ein H�ndle zur maus zur�ck
        __declspec( dllexport ) HCURSOR getMausHandle();
        // Erh�ht den Reference Counting Z�hler.
        //  return: this.
        __declspec( dllexport ) Maus *getThis();
        // Verringert den Reference Counting Z�hler. Wenn der Z�hler 0 erreicht, wird das Zeichnung automatisch gel�scht.
        //  return: 0.
        __declspec( dllexport ) Maus *release();
    };
}

#endif