CWinThread und Printer Setup



  • Guten Tag,

    mein Problem: wie öffne und verwende ich den Printer Setup (ID_FILE_PRINT_SETUP) aus dem Menü eines User Thread Fensters. Mir ist bekannt, daß erst CWinApp, welches von CWinThread abgeleitet ist die Funktion OnFilePrintSetup() enthält, welche den Printer Setup Dialog öffnet. Wie aber mache ich das mit CWinThread?

    Leute, ich bin dabei mir die Ohren zu brechen und bitte um Hilfe.


  • Mod

    Schau doch in den Source-Code:

    void CWinApp::OnFilePrintSetup()
    {
    	CPrintDialog pd(TRUE);
    	DoPrintDialog(&pd);
    }
    


  • Guten Tag Martin,

    herzlichen dank für Deine schnelle Antwort. Dein Hinweis hat bei mir ungeheure Aktivitäten ausgelöst, aber leider mit einem etwas enttäuschenden Ergebnis. Da ich meine User Threads ja von CWinTread abgeleitet habe, kann ich auf keine der Funktionen, welche ja in CWinApp deklariert und implementiert wurden zugreifen, zumal CWinApp auch noch von CWinTread abgeleitet wurde. Was tun sprach Zeus.

    Bei meiner Suche stieß ich auf den folgenden Beitrag, welcher die Lösung des Problems als nicht ganz trivial beschreibt:

    http://support.microsoft.com/kb/166130/en-us

    Ich habe den englischen Text gewählt, da diese Automaten-Übersetzungen oft in Teilen nur schwer verständlich sind.

    Mal sehen ob ich damit klar komme. Möglicherweise muß ich noch ein paar dumme Fragen stellen.

    Nochmals danke für deinen Hinweis.


  • Mod

    Sag mal, warum schreibst Du nicht einfach nur eine Funktion die geenau das ausführt:

    CPrintDialog pd(TRUE); 
        DoPrintDialog(&pd);
    


  • verzeih bitte aber das habe ich nicht kapiert! Wie soll das gehen?

    Ich habe die Funktionen wie im angeführten Beitrag beschrieben in meinen von CWinThread abgeleiteten Thread einfach übernommen und die beiden HGLOBAL Variablen (public) ebenfalls. Der Aufruf erfolgt aus meinem CMyThreadView. Läßt sich Compilieren und Linken, läuft auch. Die Wirkung z.B. auf die Vorschau - ich wähle LANDSCAPE ORIENTATION im Dialog - ist im Moment allerdings gleich Null. Irgend etwas ist da noch falsch! Im Moment habe ich keine Ahnung was das sein könnte.


  • Mod

    Warum soll denn das in einem anderen Thread sein. Dann sind auch alle Daten in dem anderen Threads...



  • ich glaube, ich habe mich mißverständlich ausgedrückt und bitte hierfür um Entschuldigung.

    Meine User-Threads werden aus einer DLL heraus per Befehl aus einer beliebigen Anwendung gestartet. Jeder gestartete Thread öffnet ein Fenster mit einem Menü. alle Thread basieren (momentan) auf dem gleichen Sourcecode. Jeder Thread ist eine "eigenständige" SDI Anwendung welche ebenfalls von Außen beim Start über die DLL mit Anfangsdaten versorgt wird. Ich vermeide damit das mir suspekte MDI. Das funktioniert gut, flott und sehr sicher. Die Threads werden von der DLL verwaltet. Sie können individuell über ihre Fenstermenüs, oder per Außenbefehl alle gestoppt werden. Es können max. 64 Threads gleichzeitig laufen was in der Praxis aber nicht vorkommen dürfte.

    Tja, nun will ich - wie bekannt - die Daten eines jeden Threads individuell per Menübefehl drucken können. Das klappt auch, nur das verdammte Drucker-Setup für die Vorschau habe ich bisher nicht hinbekommen wie bekannt ist.

    Also: Aus dem Fenstermenü des Views der jeweiligen laufenden "Threadanwendung" wird die Funktion OnFilePrintSetup() in dieser "Threadanwendung" aufgerufen. Ich habe damit die Art der Implementierung von CWinApp in meinen Thread-Sourcecode kopieren wollen. Die Vorschau müßte bei Wechsel der Orientation im Dialog ja eine Reaktion zeigen, da alle Daten sich ja im gleichen Thread befinden. Tut sie aber nicht! Da fehlt wohl noch irgendeine Datenverbindung zwischen dem Thread und seinem "persönlichen View". Noch keine Ahnung wo!

    Das ist mein Problem. Kannst Du mir einen Tip geben?


Anmelden zum Antworten