berty Geschrieben 28. Februar 2005 Teilen Geschrieben 28. Februar 2005 Hallo, ich müsste unter Win2k aus MS Visual C++ drucken und hab leider keine ahnung wie ich das bwerkstelligen kann es muss nicht schön aussehen hauptsache er druckt einfach eine liste die man vorher angelegt hat (beispielsweise durch ein quiz) vielen dank scho ma im vorraus greetz berty Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 28. Februar 2005 Teilen Geschrieben 28. Februar 2005 Du kannst den Drucker wie eine Datei öffnen und einfach darauf schreiben. Einfach mal die Suchfunktion benutzen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Manfred.Becker Geschrieben 1. März 2005 Teilen Geschrieben 1. März 2005 Hi Berty, ich hab das mal mit dem CDC (class of device-context) gemacht. Ist zwar schon 'ne Ewigkeit her, aber hier meine Klassenfunktion zum Drucken: int CMBLabelPrint::Print(CString LabelName, CString LabelTemplateName, CString LabelPath) { CDC PrintDC; CStdioFile LabelTemplate; DOCINFO DocInfo; int nRet; if (LabelName == "") return LABELPRINT_LABEL_NOT_DEFINED; if (LabelTemplateName == "") return LABELPRINT_LABEL_NOT_DEFINED; if (m_PrinterName == "") return LABELPRINT_PRINTER_NOT_DEFINED; // Drucker-Gerätekontext zuweisen if (!GetPrinterDC(m_PrinterName, PrintDC)) return LABELPRINT_PRINTER_NOT_INSTALLED; // Dokumentenvorlage zum Lesen öffnen if (!LabelTemplate.Open(LabelPath + LabelTemplateName, CFile::modeRead | CFile::typeText)) return LABELPRINT_TEMPLATE_NOT_FOUND; LabelTemplate.SeekToBegin(); DocInfo.cbSize = LabelName.GetLength(); DocInfo.lpszDocName = LabelName; DocInfo.lpszOutput = NULL; // Dokumentenstart an Druckertreiber melden if ((nRet = PrintDC.StartDoc(&DocInfo)) < 0 ) return LABELPRINT_PRINTER_NOT_READY; // Seitenstart an Druckertreiber melden if ((nRet = PrintDC.StartPage()) < 0 ) return LABELPRINT_PRINTER_NOT_READY; BOOL bEOF = TRUE; int nRow = 0; CString TemplateLine; while (bEOF) { // Zeile aus Dokumentenvorlage lesen. bEOF = LabelTemplate.ReadString(TemplateLine); // Ab Windows2000 benötigt der Treiber für X- und Y- Koorninaten Werte > 0! PrintDC.TextOut(10, nRow * 100 + 10, TemplateLine, TemplateLine.GetLength()); // Zeilenzähler erhöhen nRow++; } // Seitenende an Druckertreiber melden if ((nRet = PrintDC.EndPage()) < 0 ) return LABELPRINT_PRINTER_NOT_READY; // Dokumentenende an Druckertreiber melden if ((nRet = PrintDC.EndDoc()) < 0 ) return LABELPRINT_PRINTER_NOT_READY; // Drucker-Gerätekontext löschen if ((nRet = PrintDC.DeleteDC()) < 0 ) return LABELPRINT_PRINTER_NOT_READY; // Dokumentenvorlage schliessen LabelTemplate.Close(); return 0; } [/PHP] Hier noch die Klassenfunktion um den Geräte-Kontext zu erzeugen: [PHP] BOOL CMBLabelPrint::GetPrinterDC(CString PrinterName, CDC& PrintDC) { char msgbuf[1024]; LPSTR pch; LPSTR pchFile; LPSTR pchPort; BOOL bRet = FALSE; PrinterName.TrimLeft(); PrinterName.TrimRight(); DWORD size = GetProfileString("PrinterPorts", PrinterName, "", msgbuf, sizeof(msgbuf)); if (size <= 0) return FALSE; pch = msgbuf; for(pchFile = pch; *pch && *pch != ','; pch = CharNext(pch)); if (*pch) *pch++ = 0; pchPort = pch; while (*pch && *pch != ',' && *pch > ' ') pch = CharNext(pch); if (*pch) *pch++ = 0; try { // Exeptionbehandlung PrintDC.CreateDC ... bRet = PrintDC.CreateDC( pchFile, PrinterName, pchPort, NULL ); } catch (...) { #ifdef _DEBUG afxDump << "Error at CMBLabelPrint::GetPrinterDC()\n"; #endif return FALSE; } return bRet; } Das sollte für deine Zwecke reichen. Schau einfach in der Hilfe über CDC nach. Da solltest du alles weitere finden. Falls du dennoch mein Beispielprojekt haben willst, dann sag Bescheid... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
berty Geschrieben 4. März 2005 Autor Teilen Geschrieben 4. März 2005 hi ich nochma ;-) also irgendwie versteh ich net wirklich viel <-- *Noob bin* :confused: also ich hab mein prog jetzt soweit fertig und hab alles eigentlich in *.txt files geschrieben (sollen logfiles sein deswegen sieht es so aus: blafasel;blafasel;1;0; )......und nun meine frage: kann ich die irgendwie ausdrucken???? am besten so wie sie is und alles automatisch ;-) (Textdatei heißt userlog.txt) ich weiß ich will viel und bin euch unendlich dankbar wenn es endlich klappt greetz berty Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 4. März 2005 Teilen Geschrieben 4. März 2005 ShellExecute mit "print" als Operation sollte die Datei auf dem Standarddrucker ausgeben. Zu ShellExecute solltest du genügend Beispiele im Forum finden können. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
berty Geschrieben 7. März 2005 Autor Teilen Geschrieben 7. März 2005 zu shellexecute ja aber ich kann damit leider nichts anfangen da ich damit einfach nicht klarkomme ich hab auhc schon gegoogelt aber leider kann cih damit auch nichts anfangen weil da für mich nur zeichen und buchstaben stehen und ich nicht wirklich weiß wie das funktionieren soll kann mir das bitte jemand erklären wie es funktioniert einen Datei (TXT) auszudrucken auf dem Standarddrucker.... ich danke euch im vorraus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 7. März 2005 Teilen Geschrieben 7. März 2005 kann mir das bitte jemand erklären wie es funktioniert einen Datei (TXT) auszudrucken auf dem Standarddrucker....Zeig uns deinen Code, sag, was genau nicht funktioniert, und wir helfen dir. Wir geben gern Verständnishilfe, fertige Lösungen zum Abschreiben nicht so gern. ich danke euch im vorrausBitte nur ein 'r' Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
berty Geschrieben 7. März 2005 Autor Teilen Geschrieben 7. März 2005 das ist ja kein Problem ich blick nicht wirklich was ich machen soll ich hab aus der MSDN folgenden Code- schnipsel zusammengebastelt ShellExecute(NULL,print,<C:\\Quiz\\quiz.txt>); aber er sagt mir nur das er print nicht kennt und das ist mein Hauptproblem und das ich nicht wirklihc weiß ob dieser Schnipse passt und ich versteh es auhc wen ihr nciht so gerne abschrieben lasst lass ich auhc net so gern Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Manfred.Becker Geschrieben 7. März 2005 Teilen Geschrieben 7. März 2005 es gibt ja auch noch die F1-Hilfe! Die verwendet man immer dann, wenn die Funktion bekannt ist, aber deren Anwendung Probleme bereitet: //ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd ) ShellExecute( GetSafeHwnd(), "print", "quiz.txt", NULL, "C:\\Quiz\\", SW_HIDE ); [/PHP] ...so etwa sollte das funktionieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
berty Geschrieben 7. März 2005 Autor Teilen Geschrieben 7. März 2005 für was steht den das "GetSafeHwnd()" ShellExecute( GetSafeHwnd(), "print", "quiz.txt", NULL, "C:\\Quiz\\" weil das würde mcih einfach interessieren soll ja nicht so sein das ich es einfach abschreib EDIT: ach ja und ich hab amal den code schnipsel ausprobiert und jetzt kommt das er keinen 5 Parameter akzeptiert..... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
berty Geschrieben 7. März 2005 Autor Teilen Geschrieben 7. März 2005 ich danke euch weil es jetz funktioniert ich hab nämlcih das SW_HIDE am schluss vergessen aber wenn ihr mir jetz noch das erlkären könntet wäre ich euch super dankbar Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 7. März 2005 Teilen Geschrieben 7. März 2005 http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/functions/shellexecute.asp Da steht alles, was du wissen musst. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Manfred.Becker Geschrieben 7. März 2005 Teilen Geschrieben 7. März 2005 Hallo Berty, für was steht den das "GetSafeHwnd()" in meinem Posting hab ich gerade eben noch gesagt, das es die F1-Hilfe gibt. Stell dir vor, die funktioniert auch bei anderen Befehlen/Funktionen! Wieso markierst du nicht einfach die Funktion und drückst F1? Returns the window handle for a window. Returns NULL if the CWnd is not attached to a window or if it is used with a NULL CWnd pointer. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.