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)
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
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
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
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…
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…