Graphik Menu



  • Hallo zusammen,
    ich möchte ein DOS-Programm schreiben. Ein DOS-Programm wegen lernzwecken(Damit mir keiner mit Windows kommt).
    Nun arbeite ich mit dem Borland C 3.1 Compiler und suche nach einem Graphik Menü.
    Ich würde gerne mit der Bibliothek Graphic.h arbeiten.
    hat da jemand ne Linke oder ne Source ?



  • Mit der graphics.h musst du aber alles selber am Bildschirm zeichnen. (Ich hoffe das ist dir bewusst.)

    Die Verwendung selber ist eigentlich nicht schwer. Am Anfang musst du erstmal in den Grafikmodus wechseln initgraph() o. ä. Die Parameter, die du angeben musst, geben an um welchen Modus es sich handelt (normalerweise VGA). Am besten stellst du es einfach auf automatisch ;). Dann kanns gleich losgehen mit dem Zeichnen. Wenn du dein Programm beendest, dann solltest du wieder in den alten Modus zurückkehren, also den Grafikmodus verlassen. Das geht mit closegraph() o. ä.



  • Das ist mir alles nichts neues,
    mir geht es darum wie ich z.b. eine globale Variable erstelle.
    Damit ich weiss welcher Menüpunkt offen ist.
    Oder wie ich die Maus da einbinde.

    Hast du beispiele ?



  • Wegen der Maus suche einfach mal mit der Suche hier danach. Da sollte es ein paar Threads schon geben. Evtl. brauchst du auch noch einen Treiber. Den dürfte elise noch haben.

    Das merken des Menüpunkts hast du eh schon gut erfasst. Merk es dir einfach in einer Variable. Entweder durch Nummern, Buchstaben oder ganze Zeichenketten, wie es dir beliebt.

    Aja damit du auch nachprüfen kannst, ob der User auf einen deiner Menüpunkte geklickt hat, solltest du dir die Positionen (links, oben, breite, höhe) merken und mit den Koordinaten, die von der Maus kommen, vergleichen ;).



  • Aber wie binde ich eine Globale Variable ein ?



  • #include <stdio.h>
    
    int aktmenu;
    
    int main(void)
    {
       //hier und in jeder anderen Funktion, die noch definiert wird, kann aktmenu verwendet werden
       ...
    
       return(0);
    }
    


  • THX



  • Hat vielleicht einer einen guten link über die "Graphic.h".
    Also welche funktionen ect. die header hat.
    Naja ansonsten wären links über grafickprogrammieren auch hilfreich 😃



  • Die unterstützten Funktionen stehen eh in der graphic.h und sind eigentlich auch recht sprechend benannt.

    Für Grafikprogrammierung allgemein empfehle ich dir das Spiele- und Grafikforum hier. 🙂



  • *aufwach da urlaub*

    @SideWinder
    pack doch die oder ähnliche maus auch noch ins faq plz, dann haben wir ne runde maussammlung:

    #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;
    }
    


  • @elise
    Super Idee!!



  • Huhu elise 🙂

    Was ich nnoch anmerken würde : Der Mouse-Interrupt 0x33 ist so nicht funktionsfähig im DOS, es sei denn, ein Mousetreiber wird installiert. Ich sag das nur, weil auf nem Wim9x-Rechner im DOS-Modus klappt des sonst nich...
    Wie das mit den NT-basierten Dingern ist, hab ich noch nicht probiert..



  • @DocJunior
    Hauptsache das Programm ist auf 16Bit compiliert ;).



  • DocJunioR schrieb:

    Huhu elise 🙂

    Was ich nnoch anmerken würde : Der Mouse-Interrupt 0x33 ist so nicht funktionsfähig im DOS, es sei denn, ein Mousetreiber wird installiert. Ich sag das nur, weil auf nem Wim9x-Rechner im DOS-Modus klappt des sonst nich...
    Wie das mit den NT-basierten Dingern ist, hab ich noch nicht probiert..

    jo, bei mir sind auf allen dos fähigen rechner (win 98, 3/86) mousetreiber drauf..

    dann bräuchten wir noch ein dos maus programm, für "ohne treiber geladen".. *denk*



  • schöne GUI für Borland C++ (3.1) hab ich geschrieben, ist bestandteil von meinem TodoX... ich hab die GUI mal aus TodoX "extrahiert" und in eine extra zip-file gesteckt, dort ist auch ein einfaches menü dabei, schau einfach mal, ob du dort was ausschlachten kannst...

    http://www.geocities.com/tobiasdoerffel/downloads/objgui.zip



  • @elise: Öhm ich glaub dein Code steht schon in der FAQ: http://www.c-plusplus.net/forum/viewtopic.php?t=39315 - ist doch der Gleiche oder?

    Man merkt offenbar wieder, dass wenn ich etwas nicht selbst schreibe es zu wenig auffällt ;).

    Eventuell setz ich mich am Weekend hin und schreib einen umfassenden Text über Maus mit 16bit und 32bit.

    MfG SideWinder


Anmelden zum Antworten