正常查看按钮与c ++/win32

jma*_*erx 2 c++ winapi

我正在尝试制作一个按钮,但它总是看起来像Windows 95平面按钮.如何让它看起来像vista风格?

    hWndEdit = CreateWindowA("button", "Test",
        WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,
100, 20, 140, 20, hWnd, NULL, NULL, NULL);
Run Code Online (Sandbox Code Playgroud)

我错在哪里?谢谢

Nic*_*ord 7

它可以只看Vista中的Vista风格.您的应用程序还必须根据http://msdn.microsoft.com/en-us/library/aa289524(v=VS.71).aspx嵌入清单以启用视觉样式.

  • -1 当链接有效时,这个答案可能很有用,但现在链接已失效,这里没有其他内容。 (2认同)

Sta*_*ked 6

在项目目录中创建名为"MyApp.exe.manifest"的文件(MyApp是您的应用程序名称).然后使用您的fav编辑器打开它并复制并通过以下代码:

<?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>
Run Code Online (Sandbox Code Playgroud)

完成后,将此文件添加到Visual Studio项目中(右键单击项目图标,然后选择"添加" - >"现有项目".

将此清单文件添加到VS解决方案足以启用XP主题.

希望这可以帮助...


Chr*_*cke 5

你的构建环境是什么?如果是Visual Studio 2005或2008,则所有其他清单建议都不适用,因为VS8及以上版本已包含清单信息.

在这种情况下,添加清单依赖项的最简单方法是使用您添加到某些cpp或头文件的简单(特定于Microsoft的)编译器指令:

#pragma comment(linker,"/manifestdependency:\"type='win32' "\
                   "name='Microsoft.Windows.Common-Controls' "\
                   "version='6.0.0.0' "\
                   "processorArchitecture='x86' "\
                   "publicKeyToken='6595b64144ccf1df' "\
                   "language='*' "\
                   "\"")
Run Code Online (Sandbox Code Playgroud)

以这种方式包含清单可以避免弄乱c-runtime清单依赖项或弄乱UAC正常工作所需的设置.