Rebar через win api - что поменялось в win 7/10/11?
Все примеры с Rebar, которые я смог найти:
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\winui\controls\common\rebar
MS_2020, MS_2024, git, ещё git, stackoverflow
Работают только если добавить:
#define _WIN32_WINNT _WIN32_WINNT_WINXP
Если указать _WIN32_WINNT_WIN7 или _WIN32_WINNT_WIN10 то вместо Rebar отображается узкая полоска.
Что нужно исправить / добавить чтобы примеры заработали в современных windows?
Или покажите работающий пример.
Ответы (1 шт):
Нашёл, что проблему можно решить добавлением манифеста и это сработало:
Comctl32.dll версия 6 не распространяется, но она включена в Windows. Чтобы использовать Comctl32.dll версию 6, укажите ее в манифесте. Дополнительные сведения о манифестах см. в разделе Включение визуальных стилей.
Причём нашёл это предупреждение на странице про Toolbar, который хоть и не "стильно", но работает без манифеста, а там где пишут про Rebar (который без манифеста совсем не отображается) везде про это тишина.
Вот пример минимального манифеста, который делает упомянутые в вопросе примеры Rebar рабочими в современных windows без ограничения до ..._WINXP
<?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="CompanyName.ProductName.YourApplication"
type="win32"
/>
<description>Your application description here.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Он и отвечает на вопрос что изменилось в win 7/10/11 и нарушило работу примеров Rebar.
PS: Ещё нашёлся забавный набор примеров, где даже есть попытка настроить манифест, но и там работают все CommonControls... кроме Rebar, и даже тамошний вариант манифеста не помог.