启用视觉样式

时间:2015-05-03 01:23:23

标签: c++ windows winapi g++ common-controls

我目前正在尝试使用Windows GUI API,而且我看到的更多......让我们明白一点:我基本上按照msdn的说法操作本指南从Win7启用视觉样式,但InitCommandcontrolsEx返回false: 我正在做以下事情:

包括标题

#include <windows.h>
#include <commctrl.h>

使用所需的视觉样式初始化

INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_STANDARD_CLASSES;
if(InitCommonControlsEx(&icex)) {
    cout << "Visual styles loaded" << endl;
} else {
    cout << "Error while loading visual styles" << endl;
    cout << GetLastError() << endl;
}

创建一个将编译清单

的资源文件
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "GUI.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="*"
    name="Company.Project.Name"
    type="win32"
/>
<description>Some Description.</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type='win32'
            name='Microsoft.Windows.Common-Controls'
            version='6.0.0.0'
            processorArchitecture='*'
            publicKeyToken='6595b64144ccf1df'
            language='*'
        />
    </dependentAssembly>
</dependency>
</assembly>

为此,我使用GNU binutils的windres

windres GUI.rc GUI.res

最后,我链接到它和ComCtl32.dll

g++ "-LC:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Lib\\x64" -mwindows -o GUI.exe "src\\main.o" -lmingw32 -lComCtl32 "src\\GUI.res"

但正如引言中所提到的,InitCommonControlsEx总是会跳转到false块,而不是显示更新的视觉样式,这证明了错误。有什么想法吗?

系统: Win7 64Bit g ++编译64位 IDE Eclipse CDT

0 个答案:

没有答案