Zitat von
PAX:
PHYSICALHEIGHT scheint mir bei der GetDeviceCaps-Funktion am zutreffendsten zu sein.
Das ist soweit korrekt!
Zitat von
PAX:
Auch frag ich mich schon seit längerem, was der Typ "
Handle" eigentlich genau ist. Ein Zeiger?
Es handelt sich dabei mehr um eine Identifikationsnummer, der Sinn kommt aber dem eines Zeigers sehr nahe/gleich. Windows verwaltet alle Ressourcen über Handles. Ein
Handle ist dabei ein Zahl (glaube ein DWord), die eine beliebige Ressource identifiziert. Letztlich geht man hier aber über eine zusätzliche Indirektion sicher, dass niemand direkt auf Adressen zugreift. Man muss immer den "Umweg" über Windows-Funktionen gehen (ohne ginge es eh nicht), die dann sicherstellen können, dass ein konsistenter Zustand erhalten bleibt.
Zitat von
PAX:
Code:
if(!PrintDialog1->Execute()) return;
//Form1->Caption=SetMapMode(GetDC(Form1->
Handle),MM_HIMETRIC);
int i=GetDeviceCaps(GetDC(
Handle),PHYSICALHEIGHT);
Form1->Caption =i;
Du musst für das
Handle der Funktion GetDC das
Handle des Druckers verwenden. Du müsstest in der Bibliothek Printers eine Funktion printer() finden, die ein TPrinter-Objekt zurück gibt. Dieses Objekt hat dann wiederum die Eigenschaft
Handle besitzt. Übergibst Du dieses
Handle an die Methode, solltest Du einen korrekten Wert bekommen (wäre zumindest der Delphi Weg, sollte aber für die Borland C++
IDE gleich sein).
Ansonsten bliebe der nur der Weg über die Methode EnumPrinters (Win-
API), über die Du dann das
Handle des Druckers ermitteln müsstest.
Gruß Der Unwissende