Net-srac Geschrieben 22. August 2001 Geschrieben 22. August 2001 Hi Leutz, wer von euch hat denn sowas schonmal gemacht, und kann sich noch an die schritte erinnern und den Code finden. Ich sitze jetzt hier schon seid einer Woche 8h an dem thema drucken, hab aber keine Ahnung wie ich mein prog dazu bewege, den Inhalt seiner Textfelder an den Drucker zu schicken. Also hab ich mir überlegt, vielleicht eine Datei mit den Daten zu erzeugen und sie dann an den LPT zu schicken. Ich hab nur keinen blassen schimmer. der standard Print befehl funtzt bei mir nicht. gibts da vielleicht noch andere möglichkeiten? Ich arbeite hier mit der MFC. In diversen Büchern steht zwar was zum thema drin, aber das hab ich nicht verstanden. gibts hier einen der mir das vielleicht erklären könnte? Oder die Funktion postet, mit der ich den LPT öffne und die Datei rausschicke? Danke Zitieren
Crush Geschrieben 22. August 2001 Geschrieben 22. August 2001 File*drucker=fopen("PRN","w"); fputs("Jetzt sollte ich drucken!",drucker); fclose(drucker); Wozu eine Extra-Datei erzeugen, wenn der Drucker doch ein Standard-Stream ist? Zusätzliche Farbänderungen kann man glaub so erreichen: Siehe: http://www.fachinformatiker.de/cgi-bin/ubbcgi/ultimatebb.cgi?ubb=get_to pic&f=21&t=000236&counterhit=yes <FONT COLOR="#a62a2a" SIZE="1">[ 22. August 2001 16:38: Beitrag 4 mal editiert, zuletzt von Crush ]</font> Zitieren
Net-srac Geschrieben 22. August 2001 Autor Geschrieben 22. August 2001 Sorry, aber ich hab 0 Verstanden. Zitieren
Shadax Geschrieben 22. August 2001 Geschrieben 22. August 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Crush: <STRONG>File*drucker=fopen("PRN","w"); </STRONG> Zitieren
Crush Geschrieben 22. August 2001 Geschrieben 22. August 2001 stdprn ist in stdio.h als PRN definiert. Daneben gibt es noch die Standard-Schnittstelle AUX und CON. Allerdings sollte man noch vielleicht hinzufügen, daß das natürlich nur funktioniert, wenn der Drucker direkt am Computer angeschlossen ist. In Netzwerken geht das so nicht! Aber ich konnte das auch nicht so einfach testen, weil mein Drucker gerade kaputt ist. Sollte aber klappen. Es gibt aber auch die Möglichkeit über die DOS Funktionen des BIOS zu arbeiten. Hier wird über die Interrupt Vektoren und den Prozessor-Registern das ganze ausgegeben. Beispiel: Man kann über diese Interrupts direkt Funktionen im Bios ausführen. #include <stdio.h> #include <dos.h> void cls() { union REGS myregs; myregs.h.ax=0; erstmal alle Register xtended löschen myregs.h.cx=0; myregs.h.dx=0; myregs.h.bh=7; dann entsprechende Werte setzen (funktionsnummer, usw) myregs.h.ah=6; myregs.h.dh=24; Zeilen myregs.h.dl=79: Spalten int86(0x10,&inregs,&inregs); 0x10=VIDEO } löscht den MS-DOS Bildschirm Die DOS-Funktionen können über Interrupt 21h angesprochen werden mit der Funktion bdos(functno, dx, al) oder intdos(inregs, outregs): 5 = Zeichen an Drucker 3 = Zeichen von Serieller Schnittstelle 4 = Zeichen an serielle Schnittstelle 2 = Zeichen an Bildschirm 1 = Zeichen von Tastatur Beispiel: #include <stdio.h> #include <dos.h> void main() { static char*string="Hallo, das sollte auf den Drucker!"; while(*string) bdos(0x5,*string++,0); } Und intdos funktioniert eigentlich gleich wie das erste Beispiel, nur das die 21h Interrupts damit aufgerufen werden. Jaja, mit C kann man auch hart an der Assemblergrenze arbeiten! (oder gleich komplett mit inline-Assembler) <FONT COLOR="#a62a2a" SIZE="1">[ 25. August 2001 18:45: Beitrag 4 mal editiert, zuletzt von Crush ]</font> Zitieren
Net-srac Geschrieben 23. August 2001 Autor Geschrieben 23. August 2001 Ok, also soweit so gut, aber eine möglichkeit, wie ich den daten sagt, dass sie sich übers NEtzwerk zum drucker machen sollen kennt ihr nicht oder? Erklärungen bitte so, als ob ihr es einem Metzger erklärt. Ich hab wirklich noch nicht so viel ahnung von der Materie. Thnx4Help Zitieren
Crush Geschrieben 23. August 2001 Geschrieben 23. August 2001 Schau mal hier nach, da hab ich das schonmal beschrieben. http://www.fachinformatiker.de/cgi-bin/ubbcgi/ultimatebb.cgi?ubb=get_topic&f=21&t=000121&counterhit=yes Zitieren
Net-srac Geschrieben 23. August 2001 Autor Geschrieben 23. August 2001 Ja, dadurch hab ich mich ja auch schon gekämpft, aber z.b. was ist hWnd Und dann dass pd.nFromPage = 0xFFFF;. Ich hab halt ziemlich probleme durch die Syntax zu steigen?! Aber wenn du Dir die mühe nochmal machen würdest es mir zu erklären, würde ich auch gern den Job übernehmen künftig die Fragen mit dem Drucker hier im Forum zu beantworten . Viele Grüße Carsten Zitieren
Crush Geschrieben 23. August 2001 Geschrieben 23. August 2001 hWnd ist der Handle eines Windows, in dem Du aktuell arbeitest. Alle diese ausgaben werden getätigt, wie die Ausgaben in ein Window. Nur werden diese auf den Drucker-Spooler umgeleitet. Daher kannst Du so sogar Grafiken, etc. WYSIWYG ausdrucken, d.h. so wie es auf dem Bildschirm erscheinen würde. Wenn Du mit Windows-Programmierung noch nichts anfangen kannst, solltest Du Dich allerdings erst dort ein Wenig einarbeiten, bevor Du Dich an sowas ranmachst. pd.nFromPage = 0xFFFF; pd ist Dein PrinterDevice (ein Objekt) nFromPage ist eine Grundeinstellung. Wahrscheinlich die NumbersFromPage (also Anzahl) und 0xFFFF=dez. 65535 und so viele Seiten hat wohl kaum ein Dokument, deshalb wird einfach alles ausgedruckt. Und wenn mir jetzt noch einer sagt, ohne Englisch kann man problemlos in der Programmiererwelt auskommen, der bekommt gleich was auf die Nase, denn das haben auf unserer Schule die Leute dauernd versucht den anderen wei(s/ß?)zumachen. (Scheiß Rechtschreibung) <FONT COLOR="#a62a2a" SIZE="1">[ 23. August 2001 20:15: Beitrag 1 mal editiert, zuletzt von Crush ]</font> Zitieren
Net-srac Geschrieben 24. August 2001 Autor Geschrieben 24. August 2001 Also, ich werd jetzt erstmal auf Borland umstellen. Dort scheint es mir leichter und es gibt auch bessere lektüre für Anfänger. Wenn ich dann mein Problem gelößt hab.(ich steh nämlich gerade unter zeitdruck) dann kann ich mich ja immernoch an der MFC probieren. Thnx4Help Zitieren
Crush Geschrieben 24. August 2001 Geschrieben 24. August 2001 Also ich habe hier das Borland C++ B(u)ilder-Buch rumstehen und muß sagen, daß der keineswegs einfacher ist. Vieles kommt mir eh vor wie Wrapper-Klassen um MS - und ein paar Versuchen was eigenes auf die Beine zu stellen (wie die BDE). Das einzige Problem ist, daß es mit Lektüre um Borland wesentlich schlechter bestellt ist - auch wenn die mitgelieferten PDFs ziemliche Oberklasse sind! Die kochen halt eben auch nur mit Wasser. Zitieren
Net-srac Geschrieben 24. August 2001 Autor Geschrieben 24. August 2001 ich wollt euch nur sagen <schrei> ICH HAB ES GESCHAFFT </schrei> Ich hab es endlich vollbracht, und so kurz vor dem Wochenende noch meinen Durchbruch gehabt. Des weiteren hab ich mich entschlossen für alle, die es irgendwann mal genauso trifft ein Tut zu schreiben. Eins von einem Anfänger für andere die auch Anfangen wollen Also besten Dank an alle. Ich hab übrigens ein Programm geschrieben mit dem man suchanfragen an eine Access DB stellt. Via ODBC. wenn man eine Artikelnummer eingibt stellt es einem diesen Datensatz dar, und schreibt ihn dann auf die Seite, die dann später ausgedruckt wird. So hatt man die Werte, die man aufgrund der DB abfrabe zurückbekommt gleich da und kann sie sich ausdrucken. Vielleicht für die fortgeschrittenen unter euch eine leichte Übung, aber für mich newbee doch schon ziemlich komplex. Aber jetzt hab ichs. Schönes Wochenende. <FONT COLOR="#a62a2a" SIZE="1">[ 24. August 2001 17:55: Beitrag 1 mal editiert, zuletzt von FaFo ]</font> Zitieren
Crush Geschrieben 24. August 2001 Geschrieben 24. August 2001 Gratulation!!! Ja und wie hast Du das mit dem Drucken jetzt gemacht? Mit dem Netzwerkdrucker, normal oder hast Du das ganz anders angestellt als das was man hier so geschrieben hat? Zitieren
Net-srac Geschrieben 27. August 2001 Autor Geschrieben 27. August 2001 Also, ich hab mir mit den Wizards eine MDI erstellen lassen und dann einfach die Funktionen OnDraw und OnPrint so abgeändert. Aber genaueres schreib ich in meine Doku. Ich geb hier in diesem Post bescheid, wenn ich sie auf meine Seite stelle. Greetz Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.