windowsvisual-studio-2008visual-c++

Dialog has a modern look on time design , but old look on run time (using Visual C++ and resource editor)


I'm creating a dialog with the resource editor of Visual C++.

When I run the test button of the editor, components of the dialog are displayed with a modern look, while when running the application that creates and shows the dialog, it's displayed with an old look...I'm just using WINAPI calls to display the dialog, not MFC.

Here are the screenshot (the upper image is an example of UI look on design time, the other one is the UI look on run time):

link text

Does anyone know what I'm doing wrong?


Solution

  • Does your application manifest specify that you want to use comctl32.dll version 6? This is one of the requirements of using visual styles and a more modern look in windows XP.

    To create a manifest and enable your application to use visual styles.

    Link to ComCtl32.lib and call InitCommonControls (see the Platform SDK documentation in the MSDN Library).

    Add a file called YourApp.exe.manifest to your source tree that has the following XML format:

    <?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.0"
      processorArchitecture="X86"
      name="CompanyName.ProductName.YourApp"
      type="win32"
     />
     <description>Your application description here.</description>
     <dependency>
      <dependentAssembly>
       <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        processorArchitecture="X86"
        publicKeyToken="6595b64144ccf1df"
        language="*"
       />
      </dependentAssembly>
     </dependency>
    </assembly>
    

    Add the manifest to your application's resource file as follows

    CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"
    

    Note: When you add the previous entry to the resource you must format it on one line. Alternatively, you can place the XML manifest file in the same directory as your application's executable file. The operating system will load the manifest from the file system first, and then check the resource section of the executable. The file system version takes precedence.