.jpg als Desktop Hintergrund

Code:
C:/Dokumente und Einstellungen/Ryu/Desktop/C++/Header/Extra_Libs/GDIPlus/GDIPlus/Includes/GdiplusBase.h:25: error: declaration of `operator new' as non-function
C:/Dokumente und Einstellungen/Ryu/Desktop/C++/Header/Extra_Libs/GDIPlus/GDIPlus/Includes/GdiplusBase.h:25: error: expected `;' before '(' token
C:/Dokumente und Einstellungen/Ryu/Desktop/C++/Header/Extra_Libs/GDIPlus/GDIPlus/Includes/GdiplusBase.h:29: error: expected `;' before "void"
C:/Dokumente und Einstellungen/Ryu/Desktop/C++/Header/Extra_Libs/GDIPlus/GDIPlus/Includes/GdiplusBase.h:33: error: declaration of `operator new []' as non-function
C:/Dokumente und Einstellungen/Ryu/Desktop/C++/Header/Extra_Libs/GDIPlus/GDIPlus/Includes/GdiplusBase.h:33: error: expected `;' before '(' token
C:/Dokumente und Einstellungen/Ryu/Desktop/C++/Header/Extra_Libs/GDIPlus/GDIPlus/Includes/GdiplusBase.h:37: error: expected `;' before '}' token
In file included from C:/Dokumente und Einstellungen/Ryu/Desktop/C++/Header/Extra_Libs/GDIPlus/GDIPlus/Includes/GDIplus.h:115,
                 from C:\Dokumente und Einstellungen\Ryu\Desktop\Temp\Deskchanger\main.cpp:2:
C:/Dokumente und Einstellungen/Ryu/Desktop/C++/Header/Extra_Libs/GDIPlus/GDIPlus/Includes/GdiplusEnums.h:29: error: `UINT' does not name a type
C:/Dokumente und Einstellungen/Ryu/Desktop/C++/Header/Extra_Libs/GDIPlus/GDIPlus/Includes/GdiplusEnums.h:30: error: `UINT' does not name a type
C:/Dokumente und Einstellungen/Ryu/Desktop/C++/Header/Extra_Libs/GDIPlus/GDIPlus/Includes/GdiplusEnums.h:531: error: `BOOL' does not name a type
 
Nein, hatte ich nicht, vielen Dank du hast mir sehr geholfen ;)

Ich würde ja gerne deinen Beitrag bewerten, aber da steht es geht nicht, weil ich erst andere bewerten muss, aber vielen dank

EDIT: bekomme es leider nicht so ganz hin, ich habe schon ziemlich viel im Internet gewühlt aber es klappt nicht...

also ich habe folgende Funktion:
C++:
void convertToDeskBmp(char *Pfad)
{
    Image Bild;
    CLSID clsid;

    Bild.FromFile(Pfad);
    GetEncoderClsid('image/bmp', clsid);
    Bild.Save("DesktopBmp.bmp", clsid);

}
und folgende Fehlermeldungen und Warnungen:
Code:
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusHeaders.h|160|warning: statement has no effect|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusHeaders.h||In member function `Gdiplus::Region& Gdiplus::Region::operator=(const Gdiplus::Region&)':|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusHeaders.h|166|warning: statement has no effect|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusHeaders.h|732|warning: statement has no effect|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusHeaders.h||In member function `Gdiplus::CustomLineCap& Gdiplus::CustomLineCap::operator=(const Gdiplus::CustomLineCap&)':|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusHeaders.h|738|warning: statement has no effect|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusMatrix.h|273|warning: statement has no effect|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusMatrix.h||In member function `Gdiplus::Matrix& Gdiplus::Matrix::operator=(const Gdiplus::Matrix&)':|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusMatrix.h|280|warning: statement has no effect|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusBrush.h|86|warning: statement has no effect|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusBrush.h||In member function `Gdiplus::Brush& Gdiplus::Brush::operator=(const Gdiplus::Brush&)':|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusBrush.h|92|warning: statement has no effect|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusPen.h|481|warning: statement has no effect|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusPen.h||In member function `Gdiplus::Pen& Gdiplus::Pen::operator=(const Gdiplus::Pen&)':|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusPen.h|488|warning: statement has no effect|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusPath.h||In member function `Gdiplus::GraphicsPath& Gdiplus::GraphicsPath::operator=(const Gdiplus::GraphicsPath&)':|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusPath.h|998|warning: statement has no effect|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusGraphics.h|2539|warning: statement has no effect|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusGraphics.h||In member function `Gdiplus::Graphics& Gdiplus::Graphics::operator=(const Gdiplus::Graphics&)':|
C:\Dokumente und Einstellungen\\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusGraphics.h|2545|warning: statement has no effect|
C:\Dokumente und Einstellungen\\Desktop\Temp\Deskchanger\main.cpp||In function `void convertToDeskBmp(char*)':|
C:\Dokumente und Einstellungen\\Desktop\Temp\Deskchanger\main.cpp|15|error: `Image' was not declared in this scope|
C:\Dokumente und Einstellungen\\Desktop\Temp\Deskchanger\main.cpp|15|error: expected `;' before "Bild"|
C:\Dokumente und Einstellungen\\Desktop\Temp\Deskchanger\main.cpp|18|error: `Bild' was not declared in this scope|
C:\Dokumente und Einstellungen\\Desktop\Temp\Deskchanger\main.cpp|19|warning: character constant too long for its type|
C:\Dokumente und Einstellungen\\Desktop\Temp\Deskchanger\main.cpp|19|error: `GetEncoderClsid' was not declared in this scope|
C:\Dokumente und Einstellungen\\Desktop\Temp\Deskchanger\main.cpp|15|warning: unused variable 'Image'|
C:\Dokumente und Einstellungen\\Desktop\Temp\Deskchanger\main.cpp|19|warning: unused variable 'GetEncoderClsid'|
||=== Build finished: 4 errors, 16 warnings ===|
 
Zuletzt bearbeitet von einem Moderator:
Die Bibliothek ist sauber designed ;) Namensraum Gdiplus nutzen.
C++:
void convert_to_desktop_image(const wchar_t* image_path)
{
    using namespace Gdiplus;
    Image* ptr_image = Image::FromFile(image_path);
    
    CLSID clsid;
    GetEncoderClsid(L"image/bmp", &clsid);
    ptr_image->Save(L"DesktopImage.bmp", &clsid);
}
so in etwa sollte das gehen ...
 
Es geht immer noch nicht, ich hätte zu deinem Code auch noch Fragen:
C++:
Image* ptr_image = Image::FromFile(image_path);
Laut MSDN ist FromFile eine Methode von Image, und anscheinend ohne Rückgabewert?! Warum rufst du das dann auf diese Art auf? Dürfte das nicht nur in Form von Image.FromFil() gehen? Und was bedeutet das L vor den Strings?

Ach ja, hier die Fehler, die dein Code zurückgeliefert hat, ich habe ja den eindruck dass ich dir Bibliothek nicht richtig installiert bekomme
Code:
||=== Deskchanger, Debug ===|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusHeaders.h|160|warning: statement has no effect|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusHeaders.h||In member function `Gdiplus::Region& Gdiplus::Region::operator=(const Gdiplus::Region&)':|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusHeaders.h|166|warning: statement has no effect|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusHeaders.h|732|warning: statement has no effect|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusHeaders.h||In member function `Gdiplus::CustomLineCap& Gdiplus::CustomLineCap::operator=(const Gdiplus::CustomLineCap&)':|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusHeaders.h|738|warning: statement has no effect|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusMatrix.h|273|warning: statement has no effect|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusMatrix.h||In member function `Gdiplus::Matrix& Gdiplus::Matrix::operator=(const Gdiplus::Matrix&)':|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusMatrix.h|280|warning: statement has no effect|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusBrush.h|86|warning: statement has no effect|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusBrush.h||In member function `Gdiplus::Brush& Gdiplus::Brush::operator=(const Gdiplus::Brush&)':|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusBrush.h|92|warning: statement has no effect|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusPen.h|481|warning: statement has no effect|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusPen.h||In member function `Gdiplus::Pen& Gdiplus::Pen::operator=(const Gdiplus::Pen&)':|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusPen.h|488|warning: statement has no effect|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusPath.h||In member function `Gdiplus::GraphicsPath& Gdiplus::GraphicsPath::operator=(const Gdiplus::GraphicsPath&)':|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusPath.h|998|warning: statement has no effect|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusGraphics.h|2539|warning: statement has no effect|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusGraphics.h||In member function `Gdiplus::Graphics& Gdiplus::Graphics::operator=(const Gdiplus::Graphics&)':|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusGraphics.h|2545|warning: statement has no effect|
C:\Dokumente und Einstellungen\Ich\Desktop\Temp\Deskchanger\main.cpp||In function `void convertToDeskBmp(char*)':|
C:\Dokumente und Einstellungen\Ich\Desktop\Temp\Deskchanger\main.cpp|16|error: no matching function for call to `Gdiplus::Image::FromFile(char*&)'|
C:\Dokumente und Einstellungen\Ich\Desktop\C++\Header\Extra_Libs\GDIPlus\GDIPlus\Includes\GdiplusBitmap.h|115|note: candidates are: static Gdiplus::Image* Gdiplus::Image::FromFile(const WCHAR*, BOOL)|
C:\Dokumente und Einstellungen\Ich\Desktop\Temp\Deskchanger\main.cpp|19|error: `GetEncoderClsid' was not declared in this scope|
C:\Dokumente und Einstellungen\Ich\Desktop\Temp\Deskchanger\main.cpp|19|warning: unused variable 'GetEncoderClsid'|
||=== Build finished: 2 errors, 14 warnings ===|
 
Zuletzt bearbeitet von einem Moderator:
Argh ja okay also du darfst NICHTS am Code ändern! Du musst schon mit UNICODE arbeiten, wenn du GDI+ nutzen willst.

C++:
#include <cstdlib>
#include <string>
#include <windows.h>
#include <gdiplus.h>

int GetEncoderClsid(std::wstring const& format, CLSID& clsid)
{
    using namespace Gdiplus;
  
    UINT count_image_encoders(0);
    UINT size_array(0); 
    GetImageEncodersSize(&count_image_encoders, &size_array);
    if (size_array == 0) return -1;

    ImageCodecInfo* ptr_image_codec_info = reinterpret_cast<ImageCodecInfo*>(std::malloc(size_array));
    if (ptr_image_codec_info == NULL) return -1;

    GetImageEncoders(count_image_encoders, size_array, ptr_image_codec_info);

    for (UINT i(0); i < count_image_encoders; ++j)
    {
        if (format == ptr_image_codec_info[i].MimeType)
        {
            clsid = ptr_image_codec_info[i].Clsid;
            std::free(ptr_image_codec_info);
            return static_cast<int>(i);
        }    
    }

    std::free(pImageCodecInfo);
    return -1;
}

void convert_to_desktop_image(const wchar_t* image_path)
{
    using namespace Gdiplus;
  
    Image* ptr_image = Image::FromFile(image_path);
    
    CLSID clsid;
    GetEncoderClsid(L"image/bmp", clsid);
  
    ptr_image->Save(L"DesktopImage.bmp", &clsid);
}
so sollte das gehen ;) Dann aufrufen:
C++:
convert_to_desktop_image(L"sample.png");
...
 
Also es geht nicht, der spuckt 2 Fehler aus, ich glaube aber nicht, dass an deinem Code liegt, den hast du ja vermutlich bei dir getestet, ich denke ehr, dass es an einer falsch installierten GDI+ liegt, wärst du bereit dir das bei mir mal per Teamviewer anzuschauen?

Schreib mich am besten per pm oder so an, ich bin jetzt erstmal on, und schau hier alle 5min nach
 
Nein ich teste die Codes nicht :D Dann wäre ich ja ewig zu gange :D Ehm heute wird es schlecht ;) Muss hier noch nen PC retten :D
 
Zurück