Frage

Einige der Kontrollen habe ich erstellt scheinen auf das alte Windows 95 Thema auf Standard, wie kann ich das verhindern? Hier ist ein Beispiel für eine Schaltfläche, die nicht das Betriebssystem des nativen Aussehen zurückbehält (Ich verwende Vista als meine Entwicklungsumgebung):

HWND button = CreateWindowEx(NULL, L"BUTTON", L"OK", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
                                  170, 340, 80, 25, hwnd, NULL, GetModuleHandle(NULL), NULL);

Ich bin mit native C ++ mit dem Windows-API, nicht verwalteten Code.

War es hilfreich?

Lösung

Ich glaube, es hat sich nichts bekam mit Ihrem Code zu tun, aber Sie müssen eine richtige Manifest Datei zu erhalten, die Themen-Kontrollen einzurichten.

Einige Informationen hier: @ msdn.com und hier: @ blogs.msdn.com

Sie können einen Unterschied zwischen der Anwendung mit und ohne manifeste siehe hier: heaventools.com

Andere Tipps

Um ein Manifest an die Anwendung fügen Sie eine MyApp.manifest Datei erstellen müssen, und fügen Sie die Anwendungsressourcendatei:

//-- This define is normally part of the SDK but define it if this 
//-- is an older version of the SDK.
#ifndef RT_MANIFEST
#define RT_MANIFEST              24
#endif

//-- Add the MyApp XP Manifest file
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "MyApp.manifest"

Bei neueren Versionen von Visual Studio gibt es ein Manifest-Tool Registerkarte in den Projekteinstellungen gefunden und die Zusätzliche Manifestdateien Feld auf diese gefunden Reiter können auch die Manifest-Datei definiert werden.

Hier ist eine einfache MyApp.manifest-Datei für eine Win32-Anwendung:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.1"
    processorArchitecture="X86"
    name="Microsoft.Windows.MyApp"
    type="win32"
/>
<description>MyApp</description>
</assembly>

Wenn Sie Anwendung hängt von den anderen dlls diese Angaben auch auf das Manifest und Windows hinzugefügt wird diese Informationen benutzen, um sicherzustellen, dass Ihre Anwendung immer die richtigen Versionen dieser abhängigen DLLs verwendet.

Zum Beispiel hier sind die offensichtliche Abhängigkeit zu den gemeinsamen Steuer- und Version 8.0 C-Laufzeitbibliotheken:

<dependentAssembly>
    <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        processorArchitecture="X86"
        publicKeyToken="6595b64144ccf1df"
        language="*"
    />
</dependentAssembly>
<dependentAssembly>
  <assemblyIdentity
        type="win32"
        name="Microsoft.VC80.CRT"
        version="8.0.50608.0"
        processorArchitecture="x86"
        publicKeyToken="1fc8b3b9a1e18e3b" />
</dependentAssembly>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top