Cursor Position Abfragen



  • Hallo,

    ich will mit Inline-Assembler die aktuelle Cursor-Position abfragen.
    Mein Programm läuft aber auf einen Fehler.

    Was mache ich falsch.

    #include <stdio.h>

    void get_cur(int *z, int *s);

    struct REGS
    {
    unsigned char dh,dl;
    unsigned char dr[2];
    };

    struct REGS regs;

    void get_cur(int *z, int *s)
    {

    __asm
    {

    mov ah,3
    mov bh,0

    INT 0x10

    mov eax,edx
    mov regs,eax

    }

    *z = regs.dh;
    *s = regs.dl;
    }



  • Ist dein Programm eine Konsolen-Anwendung fuer Windows?
    Wenn ja, gehst du da voellig falsch ran. In Windows kannst du keine Interrupts benutzen.
    Frag in diesem Fall mal in einem der C++-Foren, welche WinAPI-Funktionen dir die aktuelle Cursor-Position in einem DOS-Fenster liefern. 😉

    [ Dieser Beitrag wurde am 04.06.2002 um 22:01 Uhr von Nobuo T editiert. ]



  • kann sein, dass ich mich irre, aber ob das geht??

    *z = regs.dh;
    *s = regs.dl;

    so gehts auf jeden Fall..

    z = ®s.dh;
    s = ®s.dl;

    ansonsten müsste das hinhauen.
    Übrigens läuft das sehr wohl unter Windows (hab sogar schon im 2k Interrupts benutzt!) Du musst allerdings für die DOS-Konsole einen Mouse-Treiber installieren.

    cYa
    DjR



  • Jup. Interrupts funtkionieren unter windows und einige auch noch in Win2K. Was mir bis hierhin neu ist: Interrupts in 32Bit konsolenanwendungen. Hab ich bisher eigentlich noch nicht gesehen und halte ich auch fuer eine umstaendliche Methode, wenn man schon Zugriff auf die WinAPI hat... Aber egal, einen Versuch ists vielleicht wert. 😕


Anmelden zum Antworten