2017-09-13 144 views
2

创建按钮,我可以用CreateWindow函数创建按钮像的Win32 API:使用的Aero效果

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> 

不知道,这令牌我一定要用,我从一些网站得到了样品。然后,我创建的资源列表:

CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "manifest.xml" 

编译时:

i686-w64-mingw32-windres -i resources.txt -OCOFF resources.res 

最后又用resources.res联系,但没有任何结果。

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

如何解决?我更喜欢不使用任何库,尤其是Qt。

+1

你不链接。 rc文件,你链接.res文件 –

+0

Aero效果还是你想让你的应用程序使用新的Windows XP/Vista/7风格的主题?如果是,那么你将不得不使用创建应用程序清单并初始化公共控制 – Asesh

+0

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

回答

0

编辑:
确保CREATEPROCESS_MANIFEST_RESOURCE_ID被定义为1

或与下列替换清单行:

1 RT_MANIFEST "manifest.xml" 

1 24 "manifest.xml" 


尝试Ç挂xml文件名到MYAPPNAME.exe.manifest,其中MYAPPNAME是您的exe文件的名称。

加入这一行的资源文件:

1 24 "MYAPPNAME.exe.manifest" 

MYAPPNAME.exe.manifest文件将这个:

<?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="MYAPPNAME.exe" type="win32" /> 
    <dependency> 
    <dependentAssembly> 
    <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="x86"/> 
    </dependentAssembly> 
    </dependency> 
</assembly> 

再次,改变MYAPPNAME到您的应用程序名称

+0

'1 24“MYAPPNAME.exe.manifest” - - 此固定我的应用!谢谢! – bukkojot

+2

@bukkojot:这意味着你的开发环境没有定义'CREATEPROCESS_MANIFEST_RESOURCE_ID'和/或'RT_MANIFEST'常量,因此你最终会创建一个实际名称为“CREATEPROCESS_MANIFEST_RESOURCE_ID”而不是ID为1的资源,并且/或实际名称为“RT_MANIFEST”的资源类型,而不是类型24.使用资源编辑器/查看器来验证 –

+0

错误的解决方案。最好嵌入资源。 –