CHtmlView: Drucker-Dialog unterbinden



  • Hallo,

    also ich habe ein SDI, in der das CHtmlView benutzt wird. Nur gibt es auf manchen Websites eine Drucken-Funktion, wo dann der bekannte Drucker-Dialog aufgerufen wird.

    Das will ich unterbinden, es soll kein Dialog mehr angezeigt werden.
    Wie würde das gehen ? Wo muss ich da ansetzen ?? 😕

    Ich bedanke mich einfach schon mal.


  • Mod

    Ist eigentlich nicht schwer.

    CHTMLView::PrintDocument(bool bShowPrintDialog)
    


  • Ok, aber wie komme ich da weiter, ist ja ein Member von CHtmlEditCtrlBase.

    Von meinem View (von CHtmlView) aus weiß ich nicht, wie ich da weitermachen soll.
    Sorry, habe mich noch nie ausgiebig damit beschäftigt.


  • Mod

    Upps sorry!
    Habe ich übersehen.

    Schau Dir den OnFilePrint Code an.
    Bei Exec nun als dritten Parameter nicht 0 übergeben sondern OLECMDEXECOPT_DONTPROMPTUSER

    spTarget->Exec(NULL, OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
    


  • Ist ja kein Problem. 😉

    Habe mir den Source angechaut und die Methode überschrieben, mit der DONTPROMPTUSER Option, aber der Dialog wird trotzdem noch angezeigt.
    Selbst der Breakpoint in meiner Funktion wird nicht angesprungen.

    //.h
    class CMyView : public CHtmlView
    {
    ...
    public:
        afx_msg void OnFilePrint();
    ...
    
    //.cpp
    void CMyView::OnFilePrint()
    {
    	if (m_pBrowserApp != NULL)
    	{
    		CComPtr<IDispatch> spDisp;
    		m_pBrowserApp->get_Document(&spDisp);
    		if (spDisp != NULL)
    		{
    			CComQIPtr<IOleCommandTarget> spTarget = spDisp;
    			if (spTarget != NULL)
    				spTarget->Exec(NULL, OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
    		}
    	}
    }
    

    Fehlt noch irgendetwas oder muss ich noch irgendeine Message behandeln ?
    (Wobei ich jetzt nix anderes in der Basisklasse erkennen kann.)


  • Mod

    Eintrag in der Message Map fehlt vermutlich...



  • Sorry, hatte eher keine Zeit gehabt.

    Habe den Eintrag in der Message-Map noch ergänzt (hat tatsächlich gefehlt), aber trotzdem wird der Breakpoint nicht angesprungen:

    ON_COMMAND(ID_FILE_PRINT, &CMyView::OnFilePrint)
    

    Mir fällt jetzt spontan nix mehr ein...


Anmelden zum Antworten