Brauche Handle auf CDC



  • Hallo,
    ich habe ein DI-Bitmap in meine MFC-Anwendung implementiert und von der DC dieser eine kompatible DC erstellt. Ich habe auch eine Methode zum speichern dieser CBitmap. Jetzt möchte ich auch die neu erstellte DC genauso abspeichern und brauche aber dafür den Handle (den ich vorher benutze um die alte zu speichern).

    also:

    HBITMAP m_BOriginal;
    HDC m_HDCDia; !!!!!!!!!!!!!!!!
    CDC *pDC=pWnd->GetDC();
    CDC *pOrgDC=new CDC;
    CDC pDiaDC=new CDC;
    CBitmap
    pCOriginal=CBitmap::FromHandle(m_BOriginal);
    CBitmap pCDiamant;

    m_BOriginal=(HBITMAP)::LoadImage(0,datei,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

    pOrgDC->CreateCompatibleDC(pDC);
    pOrgDC->SelectObject(pCOriginal);

    // Neuen DC im Speicher erstellen
    pDiaDC->CreateCompatibleDC(pDC);
    pCDiamant.CreateCompatibleBitmap(pOrgDC, dia_bmp_breite, dia_bmp_hoehe);
    pDiaDC->SelectObject(pCDiamant);
    //
    // ... hier modifiziere ich den pDiaDC
    //
    BITMAP BitmapParam;
    pCDiamant.GetBitmap(&BitmapParam);

    // und hiermit zeige ich ihn auf dem Bildschirm an.
    pDC->BitBlt(0,0,BitmapParam.bmWidth,BitmapParam.bmHeight,pDiaDC,0,0,SRCCOPY);
    // das klappt alles 🙂
    }

    und jetzt kann ich mit Hilfe des Handles m_BOriginal die Datei im Original abspeichern.
    Was ich aber will ist die modifizierte pDiaDC speichern und dazu muss der Handle m_HDCDia auf mein neues pDiaDC zeigen.

    Wie kann ich diesen Handle erstellen?

    Vielen Dank für die Antwort,
    guybrush



  • versuch's mal mit "pDC->m_hDC" oder "pDC->GetSafeHDC()" 😉

    (die meisten MFC-Klassen sind "nur" Wrapper um irgendwelche WinAPI-Handles)



  • CStoll (off) schrieb:

    pDC->m_hDC

    Datt klappt!! Auf Anhieb!

    Danke 🙂
    Guybrush


Anmelden zum Antworten