Problem mit mehrseitigem Drucken und Maus Cursor
-
Hallo Leute,
heute habe ich gleich zwei Probleme!
1. Ich habe eine Cursor Resource erstellt. Wie kann ich diesen Cursor laden wenn ich auf einen Button drücke und wieder durch den standart Mauszeiger austauschen wenn ich den gleichen Button wieder drücke?2. Ich habe in einer OnDraw(...) Methode diverse pDC->TextOut() aufrufe. Das ganze Fenster ist von CScrollView abgeleitet. Wie schaffe ich es nun den Text der NICHT auf ein DIN A4 Seite passt auf mehrere Seiten aufzuteilen? Wenn ich in OnPreparePrinting() SetMaxPage auf z.B. 5 setzt dann zeigt mir Windows fünf mal die gleiche Druckvorausschau an.
Danke im Voraus!
-
1. Schau dir folgendes in der MSDN an:
LoadCursor und SetCursor2. Schau dir mal OnBeginPrint, OnEndPrint und OnPrint an. Vor allem OnPrint, denn da zeichnest du, was auf das Blatt kommt. Der Basisaufruf von OnPrint ruft deine OnDraw Funktion auf. Du musst also OnPrint überschreiben und durch die Info, welche du mitgeliefert bekommst, das Zeugs entsprechend Zeichnen. Also rausfinden auf welcher Seite das Zeugs hingehört und dann entsprechend zeichnen. (sehr mühsam ^^)
Grüssli
-
Das mit dem Mauscursor scheint nicht ganz zu wollen.
Ich habe die Windows API funktionen genutzt. Im Konstruktor meiner von CView abgeleiteten Klasse, habe ich eine MembervariableHCURSOR hAndererCursormit folgendem Wert initialisiert
hAndererCursor = LoadCursor(IDC_CROSS);An der stelle wo ich den Cursor benötige habe ich dann mit
HCURSOR hAlterCursor = SetCursor(hAndererCursor); . . . SetCursor(hAlterCursor);Den Cursor geladen und hinterher wieder den alten geladen. Leider ist der Cursor gar nicht erschienen! Hätte ich noch eine andere Funktion um den neuen Cursor sichtbar zu machen aufrufen müssen????
-
Die WinAPI-Version von LoadCursor verlangt aber zwei Parameter. Die MFC allerdings nur einen. Welche Funktion hast nun genutzt? Hast du das Programm schon mal debuggt? Was wird denn nach LoadCursor in deinem Handle aufgeführt? Also ist das HANDLE ein NULL-Zeiger oder hat es eine Adresse drin?
SetCursor funktioniert übrigens nur begrenzt. Hab mal irgendwas gehört, dass es nur innerhalb von einer Funktion oder sowas funktioniert. Weiss allerdings nicht mehr wie die Definition genau war. Steht auch ein wenig was dazu in der MSDN, schadet also auch nicht mal dort einen Blick reinzuwerfen.
Grüssli
-
Die WinAPI-Version von LoadCursor verlangt aber zwei Parameter. Die MFC allerdings nur einen. Welche Funktion hast nun genutzt?
Ich habe die WinAPI Version, habe
hCursor = LoadCursor(NULL, IDC_SIZEALL);geschrieben.
Hast du das Programm schon mal debuggt? Was wird denn nach LoadCursor in deinem Handle aufgeführt? Also ist das HANDLE ein NULL-Zeiger oder hat es eine Adresse drin?
Ja ich habe es debuggt, alle Werte sind voll OK, kein einziger NULL Pointer/Handler
Trotzdem danke für die Hilfe, werde mich mit der MSDN noch mal rumschlagen.
Wie funktioniert eigentlich die MFC Variante um einen Cursor zu laden? Funktioniert das auch?
-
Die MFC-Version liegt in der Klasse CWinApp.
AfxGetApp()->LoadCursor(IDC_IRGENDWAS);So kommst z.b. auch an selbst erstelle Cursors in den Resourcen ran.
Grüssli