InitCommonControlsEx + ICC_STANDARD_CLASSES = Fehler



  • Hallo zusammen,

    ich möchte in meinem Programm die XP/Vista Sytles verwenden. Soweit bin ich schon mal:

    INITCOMMONCONTROLSEX CommonControls;
    CommonControls.dwSize = sizeof (INITCOMMONCONTROLSEX);
    CommonControls.dwICC = ICC_STANDARD_CLASSES;
    
    InitCommonControlsEx (&CommonControls);
    

    Ein Manifest habe ich auch:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <description>YOUR APPLICATION NAME</description>
      <!-- Identify the application security requirements (Vista): -->
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges>
            <requestedExecutionLevel
              level="asInvoker"
              uiAccess="false"/>
          </requestedPrivileges>
        </security>
      </trustInfo>
      <!-- Activate Windows Common Controls v6 usage (XP and Vista): -->
      <dependency>
        <dependentAssembly>
          <assemblyIdentity
              type="win32"
              name="Microsoft.Windows.Common-Controls"
              version="6.0.0.0"
              processorArchitecture="*"
              publicKeyToken="6595b64144ccf1df"
              language="*"
            />
        </dependentAssembly>
      </dependency>
    </assembly>
    

    Auch korrekt als RT_MANIFEST in die Resourcen gepackt usw. Das Ganze funktioniert für die Debug-Version, komischerweise schlägt InitCommonControlsEx in der Release-Version fehl?! GetLastError sagt 0. Hat da jemand vielleicht eine Idee?

    Gruß
    yogle



  • comctl32.lib hast du aber inkludiert?



  • jzd schrieb:

    comctl32.lib hast du aber inkludiert?

    Ja klar, es lässt sich ja compilieren, ausführen usw. Nur im Release-Build sieht es Windows 98 mäßig aus.



  • Darf ich dich fragen, was für Projekteinstellungen ich überhaupt machen muss, damit
    die Styles unterstützt werden? Wenigstens in der Debug Version dann ? 🤡 😃
    Ich bekomm das nämlich gar nicht hin *schäm*



  • Hat (sollte zumindest) nichts mit den Projekteinstellungen zu tun haben. Du musst in deinem Programm nur InitCommonControls(Ex) ganz am Anfang aufrufen. Und du musst ein Manifest in deinen Resourcen haben. Dies muss vom Typ RT_MANIFEST und als 1 definiert sein. Also so (hier ist die Manifestdatei natürlich rt_manif.bin):

    1    RT_MANIFEST    "rt_manif.bin"
    


  • Habe jetzt herausgefunden, dass der Aufruf von InitCommonControls in der Release-Version nur fehlschlägt wenn CommonControls.dwICC = ICC_STANDARD_CLASSES ist. Jemand jetzt vielleicht ne Idee? Wäre schon klasse wenn das irgendwann funktionieren würde 😉



  • Fimktioniert bei mir jetzt in der Release-, wie auch in der Debugversion problemlos.
    Ich habe in den Projekteinstellungen unter
    Konfigurationseigenschaften->Manifesttool->Eingabe und Ausgabe
    die Variable "Manifest einbetten" auf "Nein" gestellt und nach dem Buildvorgang
    in dem Releaseordner alle .manifest-Dateien gelöscht, dann funktionierten die Styles.



  • Hey es funktioniert! Einwandfrei, das nenne ich doch mal ne Zusammenarbeit 😉



  • Cool, dann ist ja gut. 🙂
    Vll. kannst du mir dann ja auch dabei helfen(?):
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-220949.html

    😉 🤡
    Danke


Anmelden zum Antworten