Borland c++5.0 MouseClick in Konsole



  • hallo.

    Ich will ein mausKlick ereignis (wenn es sowas gibt) in der Konsole auswerten, und möglichst die Koordinaten des ClickOrtes erfahren. ist das irgendwie möglich?
    hab schon die integrierte Hilfe bemüht, aber da seht nichts drin( oder ich war blind).



  • ich kenne zwei möglichkeiten:

    entweder funzt folgender code bei dir im borland (kenne den borland leider nicht), oder du machst es mit winapi und schaust im konsolenfaq, da ist eine weitere möglichkeit beschrieben.

    #include <stdio.h>
    #include <dos.h>
    #include <stdlib.h>
    #include <conio.h>
    
    #define MOUSE_LBUTTON 1
    #define MOUSE_RBUTTON 2
    #define MOUSE_MBUTTON 3
    
    const int MOUSE_INT=0X33;;
    
    int mouse_init();
    void mouse_on();
    void mouse_off();
    int mouse_getpos(int*px, int*py);
    
    int main(){
    
        int tasten;
        int posx, posy;
    
    if ((tasten=mouse_init())==-1)
       {
        printf("keine maus da");
        return EXIT_FAILURE;
        }
    
    printf ("Maus mit %d Tasten installiert.\n", tasten);
    printf ("zum beenden druecke eine maustaste\n");
    
    mouse_on();
    
    while(! (tasten=mouse_getpos(&posx, &posy)));
    printf("an der position %d/%d wurde die ", posx, posy);
    if(tasten & MOUSE_LBUTTON) printf (" linke %d",MOUSE_LBUTTON );
    if(tasten & MOUSE_RBUTTON) printf (" rechte %d",MOUSE_RBUTTON);
    if((tasten & MOUSE_MBUTTON)==MOUSE_MBUTTON) printf (" mittlere %d",MOUSE_MBUTTON); //mouse mbutton hat mehrere bits
    printf (" Tasten gedrueckt\n");
    mouse_off();
    
    return EXIT_SUCCESS;
    }
    
    int mouse_init(){
    
        union REGS regs;
        regs.x.ax=0;
        int86(MOUSE_INT, &regs, &regs);
        if (regs.x.ax!=0XFFFF)
        return -1;
    
        return regs.x.bx;
    }
    void mouse_on(){
         union REGS regs;
        regs.x.ax=1;
        int86(MOUSE_INT, &regs, &regs);
    }
    
    void mouse_off()
    {
         union REGS regs;
        regs.x.ax=2;
        int86(MOUSE_INT, &regs, &regs);
    }
    int mouse_getpos(int*px, int*py)
    {
        union REGS regs;
        regs.x.ax=3;
        int86(MOUSE_INT, &regs, &regs);
    
        if(px)*px=regs.x.cx>>3;
        if(py)*py=regs.x.dx>>3;
        return regs.x.bx & 7;
    }
    

Anmelden zum Antworten