Ressourcen files, binaer als cpp source tranformieren



  • Hallo Leute,

    ich würde gerne CIcon/CBitmap/CImage object nicht von der rc. (Resource) laden, sonder direkt von binary blob. Grund hierfür ist, dass ich Probleme habe Icons und Bitmap resourcem aufgrund rc-file version Konflike abzulegen weil die gleiche codebase für (unterschiedliche platformen Arm/x86 windows und wince) verwenden will.

    1. Da dachte ich mir dass ich ja files als cpp files mit binary blobs erzeugen könnte!? hab sowas hier gefunden [https://lvgl.io/tools/imageconverter](Link Adresse) oder kennt ihr bessere?

    2. Wie kann ich CIcon und Cbitmaps object aus binary blob also unsigned char* ="" array laden?

    Danke Euch schonmal;)



  • Zu CIcon kann ich nichts sagen, aber es gibt die Methode CBitmap::CreateBitmap, mit der du eine Bitmap aus Binärdaten erzeugen kannst. Höhe/Breite/BPP usw. musst du natürlich kennen.



  • @SoIntMan sagte in Ressourcen files, binaer als cpp source tranformieren:

    Grund hierfür ist, dass ich Probleme habe Icons und Bitmap resourcem aufgrund rc-file version Konflike abzulegen weil die gleiche codebase für (unterschiedliche platformen Arm/x86 windows und wince) verwenden will.

    Ich verstehe nicht was das Problem ist. Du kannst in Resource-Files ja Präprozessor Zeugs verwenden, inklusive #if und #include.

    Verschiedene Resource-Files für verschiedene Plattformen macht ich normalerweise auf eine von zwei Arten:

    1. Header mit plattformabhängigen #defines für die Strings, diese dann im .rc File includen und die #defines an Stelle der Strings verwenden
    2. Pro Plattform ein .rc File das dann gemeinsame Dinge per #include "CommonStuff.rc" reinholt


  • @hustbaer sagte in Ressourcen files, binaer als cpp source tranformieren:

    Ich verstehe nicht was das Problem ist. Du kannst in Resource-Files ja Präprozessor Zeugs verwenden, inklusive #if und #include.
    Verschiedene Resource-Files für verschiedene Plattformen macht ich normalerweise auf eine von zwei Arten:

    Header mit plattformabhängigen #defines für die Strings, diese dann im .rc File includen und die #defines an Stelle der Strings verwenden
    Pro Plattform ein .rc File das dann gemeinsame Dinge per #include "CommonStuff.rc" reinholt

    Hallo husbear,

    ja ich habe es genauso (ähnlich) gemacht , habe eine common.rc welche mir schon Probleme bereitet, wenn ich da bspw. Dialoge anlege. und wenn ich diese dann im Win32 Mfc context durch den Editor erzeuge , funktioniert diese nicht mehr wenn die in WinCE verwendet wird => DIALOG => DIALOGEX.

    Ok gut das konnte ich dann noch von Hand fixen.

    ABER: Das ursprüngliche Problem weswegen ich den thread auf gemacht habe ist , wenn ich ein ICON da hinzufüge, wird die rc nicht übersetzt:

    CVTRES : fatal error CVT1100: duplicate resource.  type:ICON, name:1, language:0x0407
    LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
    

    und ich hab schon alles Ressource Header durchsucht und verglichen und kann keine doppelten IDs finden.
    Wenn ich das icon wieder löscht geht es wieder.


  • Mod

    Du hast in jedem Fall die Resource eben zweimal drin. Mehr gibt es dazu nicht zu sagen.
    Es geht evtl. nicht um doppelte IDs sondern das Du Deinen Common Teil mehrfach in RC Dateien includest...



  • @Martin-Richter sagte in Ressourcen files, binaer als cpp source tranformieren:

    Es geht evtl. nicht um doppelte IDs sondern das Du Deinen Common Teil mehrfach in RC Dateien includest...

    Hallo Martin das verstehe ich nich ganz.

    ich habe eine "common.rc" file, welche in alles Projekten eingebunden habe.
    Jedes Projekt hat dann noch seine eigene concrete.rc Datei.

    und jedes Dialogklasse header includiert dann die common.h resource..

    ab was meinst du jetzt das mein common.rc in concrete.rc includierE?


Log in to reply