Improved Console 4.0
-
IC scheint ja ziemlich interessant zu sein, leider habe ich keine möglichkeit es zu testen. Ich bin noch recht neu in cpp und würde gern wissen ob es möglich ist IC auf Linux zu portieren. Ich arbeite zwar mit Windows compiliere aber unter Cygwin mit g++
leider mault g++ das es eine tchar.h nicht finden kann.Gibt es eine möglichkeit IC trotzdem unter Linux zu verwenden?
-
naja ich habe folgendes Problem:
ich habe dev C++ und weiß jetzt nicht genau wie ich improved console mit meinem Compilierer bakannt machen soll. Ich habe auch mal das Dev C++ paket runtergeladen aber das kam mir auch sehr suspekt vor und da wusste ich dann auch nciht weiter.....
ich hänge also schon ganz am start obwohl der rest denke ich dann hoffentlich klappt
ich erhoffe schnelle hilfe und sag schon mal danke
-
@Xalazhar:
Eine Verwendung in Linux ist ausgeschlossen, so hart das klingt, leider ist es so. Die IC kapselt einfach Funktionen der WinAPI, die die Konsole betreffen und macht diese zugänglicher und überschaubarer. Nun gibt es eben diese WinAPI, wie du sicher schon weißt, nur für Windows. Von daher keine Chance auf Linux, da müsste man eine Linux IC proggen, die die Linux API des Kernels kapselt, aber das ist, meines Erachtens nach, nicht geplant.@Martin L
Welche Fragen hast du denn zum Bekanntmachen? Hast du früher schon mit Dev Packages gearbeitet? Außerdem welche Version von DevC++ benutzt du? Da ich der Maintainer (danke dir SideWinder, dass du mich mit dem Wort bekannt gemacht hast ), also der Entwickler des Packages bin( nicht aber der IC, das ist SideWinder), richtest du deine Fragen bezüglich dem Umgang mit DevC++ und der IC am Besten an mich, auch sonst stehen ich dir immer gern zu Fragen zur IC zur Verfügung, sollte ich sie denn beantworten können und SideWinder nicht in der Nähe sein.
-
Mahlzeit!
Erstmal ein riesiges Kompliment an Sidewinder: IC ist echt der Wahnsinn! Erinnert mich sehr an meine seeligen C64-Zeiten zurück.
Wie auch immer, ich hab da eine Frage bei der sich die Profis vermutlich schreiend an den Kopf fassen werden: Kann ich irgendwie mehrere Konsolen-Fenster öffnen? Mein Ziel ist es, bei Bedarf ein zweites Konsolen-Fenster einzublenden, das quasi als Hilfe-Fenster fungiert.
Falls das nicht funktionieren sollte (und davon gehe ich aus - zu fragen schadet hoffentlich trotzdem nicht), kann mich jemand zu einer Website weiterleiten, wo erklärt wird, wie man das aktuelle Konsolen-Fenster ausliest und zwischenspeichert und es auch wiederherstellt?
Danke!
-
Das funktioniert leider nicht: Windows lässt nur eine Konsole pro Prozess zu.
Den Inhalt auslesen und wiederherstellen ist allerdings kein Problem:
ReadConsoleOutput: http://msdn2.microsoft.com/en-us/library/ms684965.aspx
WriteConsoleOutput: http://msdn2.microsoft.com/en-us/library/ms687404.aspxbzw. wenn du nur Zeichen und nicht die Formate mitkopieren willst: ReadConsoleOutputCharacter sowie WriteConsoleOutputCharacter.
MfG SideWinder
-
Mahlzeit!
Vielen Dank! Hab's schon auspropiert (das angegebene Beispiel modifiziert) und es funktioniert.
-
Side, muß Dich hier mal loben, ich wußte davon gar nichts, hab's per Zufall gesehen, die IC hat seit meinem ersten Minifundament ja mächtig zugelegt... gute Arbeit.
-
Marc++us schrieb:
Side, muß Dich hier mal loben, ich wußte davon gar nichts, hab's per Zufall gesehen, die IC hat seit meinem ersten Minifundament ja mächtig zugelegt... gute Arbeit.
Hört man natürlich gerne
MfG SideWinder
-
Ich bilde mir ein, in den Weiten dieser Foren irgendwo gelesen zu haben, dass es mal eine Version der Improved Console gab, bei der man die Textcolor während der Ausgabe eines Strings ändern konnte. Stimmt das, oder habe ich mir das nur erträumt? Und wenn's stimmt, wo finde ich das?
EDIT: Und bevor mich jemand auf die Suchfunktion des Forums verweist: Habe ich mehrfach probiert aber nichts gefunden. Entweder bin ich zu blöd für die Suchfunktion (glaub' i obah net), oder die Suchfunktion kann Beiträge für "Improved Console" nicht finden, wenn man als Suchbegriff "console" eingibt. Nicht einmal dieser Threat hier wurde gefunden.
-
Wie meinst du das genau? Du kannst doch einfach die Ausgabe des Strings zerteilen und währenddessen eine textcolor-anweisung einfügen?
-
Kevinus schrieb:
Wie meinst du das genau?
Wenn ich mich recht erinnere, hat da jemand eine kleine Funktion gebastelt, die man mit std::cout verwenden konnte. So in der Art wie:
std::cout << Funktion(FG_YELLOW) << "Gelber Text gefolgt von " << Funktion(FG_BLUE) << "blauem Text";
Kevinus schrieb:
Du kannst doch einfach die Ausgabe des Strings zerteilen und währenddessen eine textcolor-anweisung einfügen?
Ja, schon. Aber wenn man eine Bildschirm-Maske mit vielen Farbwechseln bauen will, wird der Quellcode sehr schnell unnötig lang und unübersichtlich.
textcolor(FG_YELLOW); std::cout << "Gelber Text gefolgt von "; textcolor(FG_BLUE); std::cout << "blauem Text";
-
Hab's gefunden! Allerdings nicht über die Suchfunktion des Forums (die mag mich anscheinend nicht ), sondern durch manuelles Suchen. Egal, Hauptsache ich hab's jetzt.
-
Proximo schrieb:
Ich hab ebenfalls folgendes bekommen:
Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__ShowWindow@8" in Funktion ""public: void __thiscall ic::Console::hide(void)" (?hide@Console@ic@@QAEXXZ)". ic.obj Fehler 2 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetWindowRect@8" in Funktion ""public: int __thiscall ic::Console::getWndPosX(void)const " (?getWndPosX@Console@ic@@QBEHXZ)". ic.obj Fehler 3 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__SetWindowPos@28" in Funktion ""public: void __thiscall ic::Console::setWndPos(int,int)" (?setWndPos@Console@ic@@QAEXHH@Z)". ic.obj
Gibt es da schon eine Lösung?
SDK installiert, beide Quelldateien geladen, main.cpp mit folgendem Inhalt:
#include <iostream> #include "ic.hpp" using namespace ic; using namespace ic::shorties; using namespace std; int main () { textcolor(FG_RED); cout << "Hello World" << endl; return 0; }
Ich hoffe auf eine Antwort.
MFG Proximo
HI,
ich hab genau das selbe Problem, hab auch VC++ EE und Plattform SDK nachhttp://www.c-plusplus.net/forum/viewtopic-var-t-is-143003.html installiert.Wisst ihr, woran das liegt? Muss ich noch irgendwas einstellen?
-
Dann hast du die Einbindung des Platform SDK noch nicht 100% hinbekommen. Hier fehlen eindeutig die zu linkenden Bibliotheken.
MfG SideWinder
-
Es funktioniert jetzt, hatte zuvor Win32 Konsolenprojekt begonnen, das funktionierte nicht.
Wenn ich jedoch einfach ein leeres Projekt starte, klappt alles bestens. Weiß jmd woran das liegt? Hatte eigentlich gedacht Win32 wäre für die Konsole der richtige Anwendungstyp!?
-
Der richtige Projekttyp ist "Win32-Konsolenanwendung"
MfG SideWinder
-
ja, das hatte ich auch genommen, funktionierte aber nicht. Es funktioniert (zumindest jetzt) nur bei einem leeren Projekt...
-
SideWinder schrieb:
Am Borland-Support wird gearbeitet, sollte soweit uach schon klappen, doch irgendwas versteht der Borland an HMODULE nicht.
Welche Version des BCC verwendest du? Mit BCC 5.6.4 (C++Builder 6) und BCB 5.8.2 (C++Builder 2006) läßt sich die IC problem- und warnungslos übersetzen.
Nur die "Mover"-Demo bedarf einer Änderung:
#include <conio.h> // Für _getch() #include "ic.hpp" // Includieren der Improved Console using namespace ic; // Auflösen des Improved Console-Namespace using namespace ic::shorties; // Für die Verwendung von Shorties (Siehe unten)
Bei Borland enthält die conio.h bereits eine Funktion namens gotoxy(), so daß eine Mehrdeutigkeit entsteht. Das Problem läßt sich lösen, wenn man entweder ::gotoxy() (conio.h) oder ic::shorties::gotoxy() (IC) verwendet.
Btw, wie wäre es, wenn die IC eine Alternative zu getch() anbieten würde?
-
Leute berichteten immer wieder, dass der Einsatz nicht möglich sei. Vielleicht haben sie aber auch nur Probleme mit dem Einbinden der IC
Alternative zu getch() wäre ein ReadConsole()-InputStream ähnlich cout/cin mit strikter Typüberprüfung und einer RAW-Lesemöglichkeit. Das braucht Zeit und kommt frühestens nach meiner Matura. Wäre aber in der Tat eine Version 5.0 wert.
In der sollen dann auch endlich mal "Multiple screen buffers" unterstützt werden.
MfG SideWinder
-
SideWinder schrieb:
Leute berichteten immer wieder, dass der Einsatz nicht möglich sei.
Was für Leute waren das? Und von welchen Problemen berichteten sie?
SideWinder schrieb:
Alternative zu getch() wäre ein ReadConsole()-InputStream ähnlich cout/cin mit strikter Typüberprüfung und einer RAW-Lesemöglichkeit. Das braucht Zeit und kommt frühestens nach meiner Matura. Wäre aber in der Tat eine Version 5.0 wert.
Möglicherweise wäre eine Implementation von getch() für dich interessant. Wenn bei Visual C++ der RTL-Quelltext mitgeliefert ist (bei Turbo C++ ist er das), schau doch dort mal rein.
Aber schulische Abschlüsse gehen natürlich vor