[Win32] Maus



  • Die Maussteuerung in der Konsole funktioniert über WinAPI-Aufrufe.

    Hier einige sinnvolle Funktionen und am Ende ein kleines Programm das zeigt wie man mit der Maus in der Konsole sinnvoll arbeiten kann - die Konsole darf sich dabei nicht im "QuickEdit"-Mouds befinden!

    #include <windows.h>
    
    // Initialisiert die Maus und gibt die Anzahl der Maustasten zurück 
    DWORD mouseInit () 
    { 
        DWORD mode;
        GetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),&mode);
        SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),mode|ENABLE_MOUSE_INPUT);
    
        DWORD buttons;
        GetNumberOfConsoleMouseButtons(&buttons);
    
        return buttons;
    } 
    
    // Zeigt oder versteckt den Mauscursor 
    void showCursor (bool show = true) 
    { 
        ShowCursor(show);
    } 
    
    int main ()
    {
        mouseInit();
        showCursor();
    
        bool running = true;
        do
        {
            DWORD count;
            INPUT_RECORD ir;
            ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE),&ir,1,&count);
    
            switch(ir.EventType)
            {
                case KEY_EVENT:
                    running = false; // Beenden bei Tastendruck
                break;
    
                case MOUSE_EVENT:
                    cout << "X: " << ir.Event.MouseEvent.dwMousePosition.X;
                    cout << " Y: " << ir.Event.MouseEvent.dwMousePosition.Y;
                    if(ir.Event.MouseEvent.dwButtonState & FROM_LEFT_1ST_BUTTON_PRESSED)
                        cout << " | Linke Taste gedrueckt!";
                    if(ir.Event.MouseEvent.dwButtonState & RIGHTMOST_BUTTON_PRESSED)
                        cout << " | Rechte Taste gedrueckt!";
                break;
            }
        }
        while(running);
        return 0;
    }
    

    Viel genauere Informationen zu den WinAPI-Aufrufen findet ihr in der MSDN.

    MfG SideWinder

    PS: Wenn ihr Fehler findet, meldet euch bitte umgehend.