GDI+ in MF Anwendung



  • Hallo,

    versuche seit Tagen das GDI+ in einer MFC Anwendung zu verwenden, um ein JPEG hochzuladen und anzuzeigen. Habe folgenden Code:

    include <gdiplus.h>
    
    ...
    
    void CAX1Ctrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
    {
    	   ... 
    
    	GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);  
    
    	Gdiplus::Image::FromFile(S"10560206.jpg");
    
    	GdiplusShutdown(gdiplusToken);  
    
                ...
    
    }
    

    beim Erstellen bekomme ich den Linkerfehler:

    ...AX1\AX1Ctrl.cpp(156): fatal error C1190: Verwalteter abzielender Code erfordert '#using <mscorlib.dll>' und den '/CLR'-Schalter

    Das Einbinden von <mscorlib.dll> nützt selbstverständlich auch nix und was der '/CLR' Schalter ist, weiß ich leider nicht.
    Wäre sehr dankbar für einen Hinweis.

    Grüße,
    Thomas



  • Du vermischst hier managed (CLR) mit nativem code, GDI+ wird von einigen mfc- klassen verwendet, z.B. CImage, mehr findest du in der msdn 😉



  • Ok, dann frage ich anders:
    1.) Wie kann man Jpeg in unmanaged Code duch die Gdiplus behandeln?

    2.) Was an der Gdiplus ist managed Code, was nicht? Wie erkenne ich das?

    3.) Oder kann man Gdiplus nur in managed Code verwenden?

    4.) Kann man prinzipiell managed Klassen in MFC Projekten nutzen, wenn ja wie?

    Danke und Grüße,
    Thomas



  • Zu 1: Müsste ich erst in der Doku nachlesen...

    Zu 2: Nix

    Zu 3: GDI+ kann man in unmanaged code verwenden; .NET bietet einen Wrapper um diesen unmanaged Code

    Zu 4: Ja. Dazu musst Du in den Projekteinstellungen "Common Language Runtime Support" auf "/clr" stellen; Dir muss aber bewusst sein, dass auf dem Zielsystem dann das .NET-Framework installiert sein muss!


  • Mod

    zu 1: Um JPGs zu laden benötigt man kein GDI+, das macht IPicture genauso.
    http://msdn.microsoft.com/msdnmag/issues/01/10/c/

    http://www.codeproject.com/vcpp/gdiplus/cgdiplusbitmap.asp


Anmelden zum Antworten