Zum Inhalt springen

Mehrseitiges drucken??


Net-srac

Empfohlene Beiträge

Hi Leutz,

ich schaff mich hier immernoch fleißig am drucken, und wollt etwas mehrseitig ausdrucken.

Ich habe in OnPreparePrinting die pInfo->SetMaxPage(2) gestellt.

Laut einem Buch hier soll das ja dann die Funktion onPrint 2x aufrufen richtig?

Jetzt hab ich in OnPrint folgendes geschrieben.

str++;

pDC->StartPage();

// Endpreis wird formatiert und ausgegeben.

endpreis.Format("Gesamtpreis %d", str);

pDC->TextOut(0,0,endpreis);

Er sollte doch jetzt auf die erste Seite eine Zahl schreiben, und auf die 2. die selbe Zahl um eins erhöht schreiben oder lieg ich da falsch.

str ist als public member variable deklariert.

Er schreibt mir aber auf beide Seiten die schon um eins erhöhte Zahl. Soll er doch aber nicht??!

Kann mir jemand helfen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi, Du mußt StartPage(); und EndPage(); für zwei Seiten auch zweimal aufrufen. Sonst wird wohl die Seitenformatierung nicht so richtig stimmen. Wahrscheinlich gibt er zweimal den letzten Stand der Seite aus! Kannst ja mal hier schaun. Du zwingst ihn also 2 Seiten zu drucken, gibst ihm aber nur eine Seite als Vorlage.

http://www.fachinformatiker.de/cgi-bin/ubbcgi/ultimatebb.cgi?ubb=get_to pic&f=21&t=000121&counterhit=yes

<FONT COLOR="#a62a2a" SIZE="1">[ 29. August 2001 13:43: Beitrag 2 mal editiert, zuletzt von Crush ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, das dacht ich auch schon, aber normalerweise wird ja, wenn ich die MaxPage auf 2 setze, OnPrint acuh 2x aufgerufen. Also werden 2 Seiten erzeugt, wenn ichs so mache funtzt es ja.

if (pInfo->m_nCurPage == 1)

str;

if (pInfo->m_nCurPage == 2)

str++;

pDC->TextOut(0,0,str);

Dann brauch ich auch kein StartPage. Weil er halt bei jedem Aufruf von OnPrint was unterschiedliches macht.

.amaizing.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mir fällt gerade auf, Du redest dauernd von einer Zahl aber irgendwie assoziiere ich mit str einen String? Sowas kann schnell zu mißverständnissen führen. Außerdem wenn sich str in OnPrint() befindet, mußt Du ihn unbedingt als static definieren, sonst weiß man nie was der Inhalt beim 2. Aufruf ist.

<FONT COLOR="#a62a2a" SIZE="1">[ 30. August 2001 13:28: Beitrag 1 mal editiert, zuletzt von Crush ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, ok, das mit dem str der als Int deklariert ist, ist schon klar, aber ich hab ihn doch schon als Membervariable der Klasse deklariert in dem auch diese OnPrint() liegt.

Er ist als public deklariert. Also müßte er doch, wenn er beim ersten lauf verändert wird sich auch den wert merken oder denk ich da falsch?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nicht unbedingt. Eine Member-Variable ist nicht unbedingt eine Garantie, daß der Inhalt überall geshared und erhalten bleibt. Ich habe mal einen Resize() auf einen Dialog und die Komponenten gemacht und habe mich gewundert, warum der Wert manchmal überhaupt nicht gestimmt hat - obwohl auch als Member definiert. Static hat alles gerettet. Es kann sein, daß str bei jedem Aufruf von OnPrint() auf dem Stack als Variable neu angelegt wird. Nach verlassen von OnPrint() wird der Stack aufgeräumt und von anderen Funktionen verwendet - das wäre übel. Probiere mal einfach ein static davor zu schreiben. Vielleicht ist das des Pudels Kern! (seit wann haben eigentlich Pudel Kerne?)

Static heißt übrigens, daß nur immer der gleiche Speicherplatz für eine Variable verwendet werden soll. Das Problem ist nur, daß wenn dieser Platz auf dem Stack ist (wegen Call by Value, z.B.), dann wird zwar tatsächlich immer die gleiche Position am Stack angesprochen, allerdings wird dieser ja jedesmal aufgelöst bei verlassen des Namensbereiches. Wird ausgerechnet dann (wieso auch immer) halt ausgerechnet an diese Adresse geschrieben, weil sie ja offiziell "frei" ist, dann klappt das nicht mehr. Die Variable darf also nicht innerhalb der Funktion definiert werden (auch wenn static) sondern im Header (am besten im Konstruktor), damit es wirklich keinen Ärger gibt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...