Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Drucken - Fehler im Heap

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.04.2006, 14:42 Uhr
-]Dr.LoLig[-



Hi!
Ich will in meiner Dialog Anwendung im Endeffekt eine Listbox ausdrucken, da ich noch nie was mit Drucken gemacht habe und ich au net so richtig aus der msdn schlau geworden hab ich erstmal probiert mit diesen code eine ellipse zu drucken. Nur leider bekomme ich immer einen Speicherfehler. Es eine MessageBox im Visual Studio auf, in der steht:
"Windows hat einen Haltepunkt in druckertest.exe ausgelöst.

Dies kann auf eine Beschädigung des Heaps zurückzuführen sein und weist auf ein Problem in druckertest.exe oder in einer der geladenen DLLs hin.

Weitere Analyseinformationen finden Sie möglicherweise im Ausgabefenster."

Visual Studio spring anschliessend in die malloc.c (Zeile 105)

Drücke ich in der Messagebox auf weiter kommt dann irgendwann meine Ellipse au ausn Drucker, aba irgendwie kommt er mit der DocInfo net klar.

Übrigens benutze Visual Studio 2005

Danke im voraus ;o)
mfg


C++:
#ifdef _WIN64
    return HeapAlloc(_crtheap, 0, size ? size : 1);
#else  /* _WIN64 */
    if (__active_heap == __SYSTEM_HEAP) {
        return HeapAlloc(_crtheap, 0, size ? size : 1);   //Hier ist der Haltepunkt
    } else
    if ( __active_heap == __V6_HEAP ) {
        if (pvReturn = V6_HeapAlloc(size)) {
            return pvReturn;
        }
    }




C++:
void CdruckertestDlg::OnBnClickedButton1()
{
    CPrintDialog dlg(FALSE);        
    if (dlg.DoModal()==IDOK)    
    {                              
    CDC dc;                      
    dc.Attach(dlg.GetPrinterDC());

    DOCINFO di;              
    di.cbSize=sizeof(DOCINFO);    
    di.lpszDocName="Testdokument";
    di.lpszOutput=NULL;    
    di.lpszDatatype=NULL;
    di.fwType=0;

    dc.StartDoc(&di);    //hier tritt der fehler auf        
                                  
    dc.StartPage();              
                                  
    dc.Ellipse(0,0,400,300);      
                                                                
                            
    int erg =dc.EndPage();      
                                
    if (erg>=0)                    
      dc.EndDoc();                
    else                      
      dc.AbortDoc();        
                        
    dc.Detach();              
    }
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.05.2006, 08:50 Uhr
~Flapsi01
Gast


Hallo,

also bei mir in Visual Studio 2003 klappt Dein o.g. Code ohne Fehlermeldung und die Ellipse wird ohne Beanstandung gedruckt !

Gruß

Flapsi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.05.2006, 09:01 Uhr
-]Dr.LoLig[-



Hi!
Ja danke!
Der Fehler lag auch am Drucker Treiber! Er hat aus allen Anwendungen raus noch normal gedruckt nur er hatte Probs mit der DocInfo. Naja Treiber neuinstalliert und alles supi .

Nur wie krieg ich denn die Schrift groesser?

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.05.2006, 11:05 Uhr
-]Dr.LoLig[-



Also so siehts aus, nur kein Plan wie ich den Listbox Inhalt größer krieg


C++:
void CDragTestDlg::OnBnClickedPrint()
    {
    //meine Schriftart
    CFont meine_courier_new;
    //Standarddrucker holen oda Dialog
    CPrintDialog dlg(FALSE);
    //dlg.GetDefaults();
    dlg.DoModal();
    
    Schriftarten_definieren(&meine_courier_new);
    //Stani Drucker installiert?
    HDC hdcPrinter = dlg.GetPrinterDC();
    if (hdcPrinter == NULL)
    {
      MessageBox(_T("Wie wärs mit Drucker kaufen???"));
    }
    else
    {
    //attach it to the default printer
    CDC dcPrinter;
    dcPrinter.Attach(hdcPrinter);

    //StartDoc()um loszulegen
    DOCINFO docinfo;
    memset(&docinfo, 0, sizeof(docinfo));
    docinfo.cbSize = sizeof(docinfo);
    docinfo.lpszDocName = _T("Testdruck bisnu!!!");

    

    // if it fails, complain and exit gracefully
    if (dcPrinter.StartDoc(&docinfo) < 0)
    {
          MessageBox(_T("Drucker nicht initialisiert"));
    }
    else
    {
          //anfang der seite
        if (dcPrinter.StartPage() < 0)
        {
            MessageBox(_T("Konnte Seite nicht beginnen"));
            dcPrinter.AbortDoc();
        }
        else
        {
            // actually do some printing
            CGdiObject* pOldFont = dcPrinter.SelectStockObject(SYSTEM_FONT);
            dcPrinter.select
            //CFont* pOldFont = dcPrinter.SelectObject(&meine_courier_new);
            dcPrinter.SetWindowExt(100,100);
            //dcPrinter.TextOut(50, 50, _T("Hello World!"), 50);
            m_listU.Print(&dcPrinter, PRF_CLIENT);
            //m_listU.PrintClient(&dcPrinter, PRF_CLIENT);

            dcPrinter.EndPage();
            dcPrinter.EndDoc();
            dcPrinter.SelectObject(pOldFont);
        }
    }
    }
}

Dieser Post wurde am 02.05.2006 um 11:06 Uhr von -]Dr.LoLig[- editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.05.2006, 16:52 Uhr
~Flapsi01
Gast


Hihi,

das Problem kenne ich. Siehe dazu:

www.fun-soft.de/showtopic.php?threadid=14240

Ich habe das Problem umgangen, in dem ich den Inhalt der Listbox als Textfile habe ausgeben lassen. Jedoch hat bei mir insbesondere die Anpassung des Druckbereichs in den Funktionen Print(), PrintClient() und PrintWindow() von CListBox nicht geklappt. Beim Ausdruck wurde der Inhalt der Listbox nur ganz klein und unleserlich in der linken oberen Ecke des Ausdruckes dargestellt. Die Schriftart konnte ich durch Veränderung des Fonts vergrößern, jedoch nicht das Druckfenster an sich, so dass der Inhalt nach dem Vergrößern der Schriftarten nicht mehr korrekt dargestellt, sondern abgeschnitten wurde.

Wenn Du eine Lösung findest, würde ich mich über ein Posting freuen.

Beste Grüße

Flapsi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: