Winapi Win32 API:创建具有Aero效果的按钮

Winapi Win32 API:创建具有Aero效果的按钮,winapi,mingw,win32gui,Winapi,Mingw,Win32gui,我可以用CreateWindow函数创建按钮,如 CreateWindow(L"BUTTON", "Button label", WS_VISIBLE | WS_CHILD, 0, 0, 100, 25, parentWnd, ID, NULL, NULL); 它工作完美,但按钮并没有光泽效果,字体并没有抗锯齿 我还汇编了清单: <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

我可以用CreateWindow函数创建按钮,如

    CreateWindow(L"BUTTON", "Button label", WS_VISIBLE | WS_CHILD, 0, 0, 100, 25, parentWnd, ID, NULL, NULL);
它工作完美,但按钮并没有光泽效果,字体并没有抗锯齿

我还汇编了清单:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="Win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0"
                        processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
    </dependentAssembly>
  </dependency>
</assembly>
汇编时使用:

   i686-w64-mingw32-windres -i resources.txt -OCOFF resources.res
最后链接到
resources.res
,但没有任何结果


当我创建清单并将其放在exe文件附近时,一切正常。但当我试图将清单编译成资源时,我没有任何效果

如何修复它?我不喜欢使用任何libs,特别是像Qt这样大的libs

编辑:
确保
CREATEPROCESS\u MANIFEST\u RESOURCE\u ID
定义为
1

或将清单行替换为以下内容:

1 RT_MANIFEST "manifest.xml"


您没有链接.rc文件,而是链接了.res文件Aero效果,还是希望您的应用程序使用新的Windows XP/Vista/7样式的主题?如果是,则您必须使用创建应用程序清单并初始化公共控件。当我创建清单并将其放置在exe文件附近时,一切正常。但当我试图将清单编译成资源时,我没有任何效果。你做得不对。您没有提供完整的详细信息,因此我们无法告诉您做错了什么。@bukkojot您是否链接到comctl32并调用InitCommonControls?请参阅此页面:@bukkojot:这意味着您的开发环境没有定义
CREATEPROCESS\u MANIFEST\u RESOURCE\u ID
和/或
RT\u MANIFEST
常量,因此您最终将创建一个实际名称为
“CREATEPROCESS\u MANIFEST\u RESOURCE\u ID”
的资源,和/或实际名称为
“RT\u MANIFEST”
而不是类型为24的资源类型。使用资源编辑器/查看器验证错误的解决方案。最好嵌入资源。@DavidHeffernan你是什么意思?这应该是“嵌入式资源”解决方案。在分发包中不存在单独的“MYAPPNAME.exe.manifest”文件的情况下,它应该可以工作。除非OP另有说明。@DavidHeffernan Asker已经知道非嵌入式解决方案。请参阅原始帖子,其中写道“当我创建清单并将其放在exe文件附近时,一切正常。但当我试图将清单编译成资源时,我没有任何效果”整个问题都是关于嵌入式解决方案的。@DavidHeffernan我认为唯一的问题是
CREATEPROCESS\u MANIFEST\u RESOURCE\u ID
没有声明为
1
。我用MinGW在代码块上试过了,效果不错。有时我会在我的帖子中添加一些没有意义的迷信。我删除了那部分。
1 RT_MANIFEST "manifest.xml"
1 24 "manifest.xml"