Windows API und der Drucker?

Hallo,

ich habe da so ein paar Probleme mit dem Drucker.

Ich möchte in meinem Programm folgendes Verhalten haben:

  • Beim Programmstart ist der Standard-Drucker ausgewählt.
  • Über den Common-Dialog kann ich einen anderen Drucker auswählen, der dann benutzt wird.

Wie es halt so üblich ist.

Jedoch seh ich nicht so durch die Funktionen durch - ich kann mir zwar alle verfügbaren Drucker enummerieren - aber wie komme ich an ein hDC für den Standard-Drucker?

Wenn ich dann den Common-Dialog aufrufe, bekomme ich ja ein hDC zu dem ausgewählten Drucker (sofern angefordert) - besitzt dieser hDC dann auch gleich automatisch die vom User eingestellten Eigenschaften (Papiergröße etc?) - wenn ja, was soll ich mit der zurückgegebenen DEVMODE - Struktur?
Wenn nein, muß ich die DEVMODE - Struktur noch irgendwohin übergeben??

Aber ab StartDoc ist mir dann das Vorgehen klar :o)

Verwirrte Grüße,
Martin Eckel

hi

man kann den Standard Drucker aus der Win.ini auslesen
schon ewig her wo ich das gemacht hab…schaus dir einfach
mal an.
…ist bestimmt nicht die einfachste Lösung…

//GetPrnDC
//Gibt den DC vom Standart-Drucker zurück
HDC GetPrnDC(void)
{
HDC hdc;
int i;
char name[256];
GetProfileString(„windows“,„device“,„NIX“,name,255);
for (i=0;i

Hallo,

inzwischen hab ich es selber gefunden… die einfachste Methode ist wohl, den CommonDialog zu benutzen => PrDlg - mit dem Flag RETURNDEFAULTPRINTER - dann wird der Dialog nicht angezeit, sondern es gibt Rückgabewerte für den Standard-Drucker :smile:

Trotzdem vielen Dank,
Martin

Gruß,

inzwischen hab ich es selber gefunden… die einfachste
Methode ist wohl, den CommonDialog zu benutzen => PrDlg -
mit dem Flag RETURNDEFAULTPRINTER - dann wird der Dialog nicht
angezeit, sondern es gibt Rückgabewerte für den
Standard-Drucker :smile:

Fast richtig.
Das Problem ist, daß auf diese Weise aber der Standard-Drucker auch geändert wird!
Wenn ich also über den Dialog nur Drucken will, dann ändert er mir auch gleich meinen Standard-Drucker…
sehr unschön…

Gruß,Tom

Hallo,

Das Problem ist, daß auf diese Weise aber der Standard-Drucker
auch geändert wird!
Wenn ich also über den Dialog nur Drucken will, dann ändert er
mir auch gleich meinen Standard-Drucker…
sehr unschön…

Das ist nicht korrekt! Ich nehme mal an, Du benutzt das Visual Basic CommonDialog-OCX-Gerödel. Dann passiert das tatsächlich. Ist ein von Microsoft bestätigter Bug.
Bei direkter API-Programmierung passiert dieses nicht…

Gruß,
Martin Eckel