WIR einfache grafische Oberfläche machen?



  • Hallo allerseits,
    Mit der IGEL-Grafik von Ulrich Kaiser konnte ich unter MS-VC++ 6.0
    ganz einfach (ohne irgend etwas von Listener usw. zu verstehen)
    grafisch arbeiten.
    Leider bekomme ich dies mit MS Visual Studio 2005 nicht mehr hin (wenn
    ich ein Projket, das unter MS-VC++ 6.0 funktionierte mit MS Visual
    Studio 2005 öffne (wird dies vorher automatisch umgewandelt), dann
    läuft es nicht mehr, d.h: wenn ich mache
    Erstellen --> Projektmappe neu erstellen
    dann kommt folgende Fehlermeldung:
    Fehler 1 fatal error LNK1104: Datei "libci.lib" kann nicht
    geöffnet werden. demoGrafik1

    1. Was muss ich machen, damit ich diese einfache Grafikoberfläche von
      Ulrich Kaiser auch unter MS Visual Studio 2005 nutzen kann ?

    2. Wenn dies prinzipiell unmöglich sein sollte:
      Kann mir jemand alternativ dazu eine genauso einfache Grafikoberfläche
      benennen (zum Download) ?

    mfg
    Ernst

    -------------------------BESCHREIBUNG -------------------------
    Mit der Grafik-Programmierumgebung - kurz IGEL genannt - aus dem
    Buch "C/C++" von Ulrich Kaiser (ISBN 3-934358-03-9, Verlag: Galileo
    Press), kann man leicht, ohne großen Aufwand, kleine Grafikprogramme
    erstellen.

    Mit MS-VC++ 6.0 erstellt man dazu erst ein leeres Projekt:
    Datei --> neu ---> Projekte ---> Win 32 Anwendung ---> Projektname
    (z.B. "demoGrafik1" eingeben ---> ein leeres Projekt.
    Dann kopiert man (außerhalb der Visual C++ Entwicklungsumgebung) mit
    dem Explorer die 3 Dateien (IGEL.h, IGEL1.obj, IGEL2.obj) der CD des
    Buchs in den automatisch angelegten Ordner hier: "demoGrafik1" des
    Projekts.
    In der Visual C++ Entwicklungsumgebung macht man folgendes:

    1. Datei ---> neu ---> Dateien ---> C++-Quellcodedatei Dateiname z.B.
      "zeichnung" eingeben"
    2. Im linken Fenster geht man auf den Reiter "Dateien" (nicht auf
      "Klassen")
      Dann geht man jeweils mit der rechten Maustaste auf folgende
      Ordnersymbole:
      Quellcodedateien, Header-Dateien, Ressourcedateien
      a) Header-Dateien ---> rechte Maustaste ---> Dateien zu Ordner
      hinzufügen --- > IGEL.h
      b) Ressourcedateien ---> rechte Maustaste ---> Dateien zu Ordner
      hinzufügen (Wichtig: alle Dateien anzeigen lassen) --- > IGEL1.obj,
      IGEL2.obj

    Die Datei zeichnung.cpp muß wie folgt aufgebaut sein:
    --------------------------------------
    #include <stdio.h>
    #include <stdlib.h>
    #include "Igel.h"

    void vorher(){
    }

    void zeichnung(){
    }

    void nachher(){
    }
    --------------------------------------

    In die Funktion "vorher" können z.B. mit scanf sämtliche
    erforderlichen Eingaben gemacht werden, die man für das Grafikprogramm
    benötigt. In die Funktion "vorher" muss die Anweisung set_windowpos
    (siehe unten) vorkommen.

    In die Funktion zeichnung schreibt man sämtliche Funktionen, die eine
    Grafikausgabe haben.
    In die Funktion "nachher" muß vorerst keine Anweisung drinstehen.

    Das IGEL zugrunde gelegte Koordinatensystem ist gekennzeichnet durch
    den Koordinatenursprung O(0|0) links oben im Zeichenbereich.
    Die y-Achse geht nach unten, die x-Achse nach rechts.
    Ein Koordinatenpunkt entspricht genau einem Pixel.

    Anweisungen von IGEL:
    void set_windowpos(int x, int y, int breite, int höhe)
    Das Grafikfenster wird an der Bildschirmposition mit den Koordinaten
    x, y beginnend dargestellt.
    Diese Anweisung muss in der Funktion "vorher" aufgerufen werden.

    Farben:
    Für Farben kann man selbstsprechende Konstanten oder genauso auch eine
    Zahl verwenden:
    SCHWARZ 0
    WEISS 1
    ROT 2
    GELB 3
    GRUEN 4
    BLAU 5
    GRAU 6
    BRAUN 7

    void pixel (int x, int y, int farbe)
    Schreibt ein Pixel mit der entsprechenden Farbe an den Punkt (x,y).

    void moveto(int x, int y)
    void lineto(int x, int y, int farbe)
    Mit moveto bewegt man einen fiktiven Kurosr an den Punkt (x,y). Mit
    lineto wird dann von dort aus zu dem in lineto angegebenen Punkt mit
    der entsprechenden Farbe eine Linie gezogen.

    void rectangle (int x1, int y1, int x2, int y2,
    int rahmenfarbe, int fuellfarbe)
    Damit wird ein Rechteck mit linken oberen Eck (x1, y1), dem rechten
    unteren Eck (x2, y2) und der entsprechenden Rahmen- und Füllfarbe
    gezeichnet.

    void rframe(int x1, int y1, int x2, int y2, int rahmenfarbe)
    Zeichnet nur mit der entsprechenden Rahmenfarbe den Rahmen eines
    Rechtecks.

    void ellipse(int x1, int y1, int x2, int y2,
    int rahmenfarbe, int fuellfarbe)
    Damit wird eine Ellipse in ein fiktives, durch die zwei Eckpunkte (x1,
    y1), (x2, y2) bestimmtes Rechteck, mit der entsprechenden Rahmen- und
    Füllfarbe eingezeichnet.

    void eframe(int x1, int y1, int x2, int y2, int rahmenfarbe)
    Zeichnet nur mit der entsprechenden Rahmenfarbe den Rahmen einer
    Ellipse.

    void text(int x, int y, int groesse, int farbe,
    int mode, char *fmt)
    Gibt Text ab dem Punkt (x,y) mit der entsprechenden Größe, Farbe und
    Modus (DECKEND, NICHT_DECKEND) aus. char *fmt ist die Parameterliste
    wie bei printf.

    Beispiel:
    int zahl = 123;
    text(100, 200, 10, SCHWARZ, DECKEND, "Ergebnis %d", zahl);

    void textbox(int x1, int y1, int x2, int y2, int s, int tf,
    int rf, int ff, int mode, char *fmt)
    Die Textausgabe findet nur in dem entsprechenden Rechteck statt.
    Darüber hinausreichender Text wird abgeschnitten. Der Text wird mit
    der Textgröße s, der Textfarbe tf, der Randfarbe rf, der Füfffarbe ff
    und dem Modus mode ausgegeben. char *fmt ist die Parameterliste wie
    bei printf.

    Beispiel:
    int zahl = 10;
    textbox(10, 10, 200, 30, 10, SCHWARZ, GRAU, GELB, DECKEND,
    "Wert %d", zahl);

    Um Grafikprogramme bis zu einem bestimmten Grad interaktiv gestalten
    zu können, gibt es noch Funktionen zur Abfrage der Maus.
    Es gibt einige symbolische Konstanten, mit denen der betätigte
    Mausbutton zurückgemeldet wird:
    MBTN_LEFT 1
    MBTN_MIDDLE 2
    MBTN_RIGHT 3
    MBTN_SHIFTLEFT 4
    MBTN_SHIFTMIDDLE 5
    MBTN_SHIFTRIGHT 6

    int mouseclick(int *x, int *y)
    Wartet auf einen Mausklick und liefert die die Koordinaten in den
    Koordinaten x und y zurück.
    Die Art des Mausklicks wird im Returnwert zurückgeliefert.

    int checkmouse()
    Prüft, ohne zu warten, ob die Maus geklickt wurde und gibt, falls dies
    der Fall war, den zugehörigen Mausklick (symbolische Konstante)
    zurück. Wurde die Maus nicht betätigt, dann ist der
    Returnwert 0.

    void wait(int millisekunden)
    Wartet die vorgegebene Zeit in Millisekunden und dient dazu, eine
    Computergrafik zu verlangsamen, damit man mit dem Auge folgen kann.



  • GastErnst schrieb:

    dann kommt folgende Fehlermeldung:
    Fehler 1 fatal error LNK1104: Datei "libci.lib" kann nicht
    geöffnet werden. demoGrafik1

    Wie die Fehlermeldung schon sagt, musst du die "libci.lib" Bibliothek mit linken lassen.

    Damit diese mitgelinkt werden kann, muss sie sich natürlich in einem Verzeichnis befinden das von VisualStudio durchsucht wird, z.B. das Verzeichnis des angelegten Projekts.



  • Google liefert zu libci.lib ja auch nur 129000 Treffer ...

    Du musst nur ein paar Namen von Headerdateien ändern.

    http://msdn.microsoft.com/de-de/library/8h8eh904(VS.80).aspx

    Und ganz nebenbei, wer offenbar schon ein paar Jahre mit C++ arbeitet, könnte sich vielleicht ein wenig mit den Grundlagen auseinander setzen.



  • JustSomeCoder schrieb:

    GastErnst schrieb:

    dann kommt folgende Fehlermeldung:
    Fehler 1 fatal error LNK1104: Datei "libci.lib" kann nicht
    geöffnet werden. demoGrafik1

    Wie die Fehlermeldung schon sagt, musst du die "libci.lib" Bibliothek mit linken lassen.

    Damit diese mitgelinkt werden kann, muss sie sich natürlich in einem Verzeichnis befinden das von VisualStudio durchsucht wird, z.B. das Verzeichnis des angelegten Projekts.

    ----------------------------------------
    Danke für den Tipp.
    1)
    Ich habe in den obersten Ordner meines Projketverzueichnisses kopiert:
    libci.lib
    Dann kam die Fehlermeldung:
    LIBC.LIB
    kann nicht geöffnet werden.

    Dann habe ich in den obersten Ordner meines Projketverzueichnisses zusätzlich noch kopiert:
    libc.lib
    Dann kam die Fehlermeldung:
    Fehler 1 error LNK2005: ___initstdio ist bereits in LIBC.lib(_file.obj) definiert. LIBCMTD.lib

    Was muss ich machen, damit mein Programm läuft?

    Gibt es außer dem Kopieren des von dir vorgeschlagenen Libraries in den obersten Ordner meines Projketverzueichnisses, noch einen andere Möglichkeit mein Projekt zum Laufen zu bringen (vielleicht eine Einstellung ändern?)

    mfg
    Ernst



  • [quote="nn"]Google liefert zu libci.lib ja auch nur 129000 Treffer ...

    Du musst nur ein paar Namen von Headerdateien ändern.

    http://msdn.microsoft.com/de-de/library/8h8eh904(VS.80).aspx

    -------------------------------------
    Danke für den Tipp,
    ich habe die folgenden Headereinträge
    # include <stdio.h>
    # include "Igel.h"
    #include <stdlib.h>
    #include <time.h>

    ersetzt durch:
    # include <cstdio>
    # include "Igel.h"
    #include <cstdlib>
    #include <ctime>

    Trotzdem läuft das Projekt nicht.
    Was muss ich noch machen?

    mfg
    Ernst



  • [quote="GastErnst"]

    nn schrieb:

    Google liefert zu libci.lib ja auch nur 129000
    Was muss ich noch machen?

    Wie schon gesagt, Grundlagen lernen. Die *.lib Dateien ins Projektverzeichnis kopieren ist der völlig falsche Weg. Die gehören da hin wo so sie bei der Installation hingekommen sind.

    Es gibt mehrere verschiedene Versionen der Laufzeitbibliothek. Release/Debug, Statisch/Dynamisch und früher Single Thread/Multithread. Die Fehlermeldung mit dem libcmtd.lib deutetet darauf hin, das verschiedene Teile des Projekts mit unterschiedlichen Projekteinstellungen übersetzt werden, das geht natürlich nicht gut.



  • Danke für deine Hilfe,
    ich habe alle Dateien des Projekts zum Download bereitgestellt:

    http://www.kapitalismus-modell.de/tempdownload.html

    Bekommst du das Projekt zum Laufen, oder ist das wegen der verschiedenen Versionen unmöglich?

    mfg
    Ernst



  • Du hast kein Projekt zum Download angeboten!
    Es sind lediglich Dateien die sich nicht mal Downloaden lassen.
    Auch wenn es für Dich jetzt etwas blöd ist.
    Wir standen/stehen hier immer auf dem Standpunkt das man die Arbeit schon selbst machen muss.
    Wenn Du etwas möchtest ohne Programmieren zu lernen erstelle eine Thread im Projekte Forum und bezahle dafür oder lerne es selbst. Beim Lernen bekommst Du hier auch Hilfe. Die Antwort, wie es geht, hast Du ja schon.



  • Unix-Tom schrieb:

    Du hast kein Projekt zum Download angeboten!
    Es sind lediglich Dateien die sich nicht mal Downloaden lassen.
    Auch wenn es für Dich jetzt etwas blöd ist.
    Wir standen/stehen hier immer auf dem Standpunkt das man die Arbeit schon selbst machen muss.
    Wenn Du etwas möchtest ohne Programmieren zu lernen erstelle eine Thread im Projekte Forum und bezahle dafür oder lerne es selbst. Beim Lernen bekommst Du hier auch Hilfe. Die Antwort, wie es geht, hast Du ja schon.

    ----------------

    1. Habe kein Projekt zum Download angeboten, weil ich viele Projekte mit vielen Optionen ausprobiert habe und keines hat funktioniert.
      Deswegen würde mich interessieren, ob jemand von euch mit diesen Dateien von mir ein Projekt erzeugen kann (Anleitung siehe mein 1. Posting).

    2. Meine Dateien lassen sich downloaden:
      Anleitung:
      a)
      Rufe meinen Link auf durch Doppelklick
      b)
      Gehe mit der rechten Maustaste auf die gewünschte Datei, die du downloaden willst
      ---> Ziel speichern unter --> gib den Platz auf deine Festplatte an.

    Ich will in diesem Thread _nicht_ programmieren lernen d.h. Fragen zu der Programmiersprache C++ lernen.
    Ich will nur mit einigen Dingen der _Entwicklungsumgebung_ MS Visual Studio klarkommen....

    mfg
    carlox


Anmelden zum Antworten