День добрый.
в виндах, начиная с ХР в пропертях экзешников есть вкладка Compatibility и там галочка "Disable visaul themes"
Скажите плз. как сделать то же самое программно. т.е. либо при старте приложения, что надо вызвать, дабы оно себя вело так, как будто эта галка включена, либо как ее включить программно, скажем из сетпа
Здравствуйте, Alex_st, Вы писали:
A_>День добрый. A_>в виндах, начиная с ХР в пропертях экзешников есть вкладка Compatibility и там галочка "Disable visaul themes" A_>Скажите плз. как сделать то же самое программно. т.е. либо при старте приложения, что надо вызвать, дабы оно себя вело так, как будто эта галка включена, либо как ее включить программно, скажем из сетпа
Можете посмотреть здесь (разделы Turning Off Visual Styles и When Visual Styles are not Applied)
Здравствуйте, Alex_st, Вы писали:
A_>День добрый. A_>в виндах, начиная с ХР в пропертях экзешников есть вкладка Compatibility и там галочка "Disable visaul themes" A_>Скажите плз. как сделать то же самое программно. т.е. либо при старте приложения, что надо вызвать, дабы оно себя вело так, как будто эта галка включена, либо как ее включить программно, скажем из сетпа SetThemeAppProperties + 0... не оно?
_>Можете посмотреть здесь (разделы Turning Off Visual Styles и When Visual Styles are not Applied)
спасибо конечно. и там я уже давно смотрел. но там совсем не про то, о чем я спрашивал
Здравствуйте, Alex_st, Вы писали:
A_>Здравствуйте, Carc, Вы писали:
C>>SetThemeAppProperties + 0... не оно? A_>не, не оно. совсем не тот вид у апликухи
Вообще, конечно, можно ручками поотключать через SetWindowTheme(HWND_контрола_окна,L"",L""). Но это соответственно в код надо лезть, и пробегать по всем контролам (да как угодно, через сабклассинг, хук на гуевый поток или еще как). Видимо это не подходит.
Но эксперименты показали следующее (проверял под XP SP3). Если рядом с exe-шником МояСуперПуперПрога.exe расположить ярлык МояСуперПуперПрога.lnk, и в нем отключить стили, то exe-шник стартанутый даже не через lnk, стили свои убирает. Может поможет?
Здравствуйте, Carc, Вы писали:
C>Здравствуйте, Alex_st, Вы писали:
A_>>Здравствуйте, Carc, Вы писали:
C>>>SetThemeAppProperties + 0... не оно? A_>>не, не оно. совсем не тот вид у апликухи C>Вообще, конечно, можно ручками поотключать через SetWindowTheme(HWND_контрола_окна,L"",L""). Но это соответственно в код надо лезть, и пробегать по всем контролам (да как угодно, через сабклассинг, хук на гуевый поток или еще как). Видимо это не подходит.
это не подходит потому. как через SetWindowTheme можно отключить именно для контрола, а для фрейма и тулбара не отключается таким образом, а у меня задача именно тулбар привести в приличный старый вид
C>Но эксперименты показали следующее (проверял под XP SP3). Если рядом с exe-шником МояСуперПуперПрога.exe расположить ярлык МояСуперПуперПрога.lnk, и в нем отключить стили, то exe-шник стартанутый даже не через lnk, стили свои убирает. Может поможет?
на ХеПе, да , разницы почти не видно, а на семерке — разница огромна
A_>>>не, не оно. совсем не тот вид у апликухи C>>Вообще, конечно, можно ручками поотключать через SetWindowTheme(HWND_контрола_окна,L"",L""). Но это соответственно в код надо лезть, и пробегать по всем контролам (да как угодно, через сабклассинг, хук на гуевый поток или еще как). Видимо это не подходит. A_>это не подходит потому. как через SetWindowTheme можно отключить именно для контрола, а для фрейма и тулбара не отключается таким образом, а у меня задача именно тулбар привести в приличный старый вид
Что-то я не уловил тогда проблемы
Ну позвали тогда SetWindowTheme + HWND_именно_Тулбара? Что мешает?
Здравствуйте, Carc, Вы писали:
C>Что-то я не уловил тогда проблемы C>Ну позвали тогда SetWindowTheme + HWND_именно_Тулбара? Что мешает?
позвать то SetWindowTheme для тулбара не мешает... просто не меняется при ентом позыве ничего
Здравствуйте, Alex_st, Вы писали:
A_>Здравствуйте, visual_wind, Вы писали:
_>>Можете посмотреть здесь (разделы Turning Off Visual Styles и When Visual Styles are not Applied) A_>спасибо конечно. и там я уже давно смотрел. но там совсем не про то, о чем я спрашивал
Как показывает ваша дискуссия с Carc-ом, это не "совсем не про то", но возни с контролами много. Можно тогда попробовать напрямую добавить ваше приложения в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers, как это указано здесь. Другой вопрос, что это требует админских прав. Если вы и это пробовали и вам не подошло, то остается еще совет, приведенный здесь. Но это выглядит уж слишком замороченно.
Здравствуйте, visual_wind, Вы писали:
_>Здравствуйте, Alex_st, Вы писали:
A_>>Здравствуйте, visual_wind, Вы писали:
_>>>Можете посмотреть здесь (разделы Turning Off Visual Styles и When Visual Styles are not Applied) A_>>спасибо конечно. и там я уже давно смотрел. но там совсем не про то, о чем я спрашивал
_>Как показывает ваша дискуссия с Carc-ом, это не "совсем не про то", но возни с контролами много. Можно тогда попробовать напрямую добавить ваше приложения в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers, как это указано здесь. Другой вопрос, что это требует админских прав. Если вы и это пробовали и вам не подошло, то остается еще совет, приведенный здесь. Но это выглядит уж слишком замороченно.
да, этот вариант пока рассматриваю как основной. более того. если добавлять локал машин, а в карент юзер, то даже админских прав не надо, единственная проблемма, при первом запуске апликухи, я в реестр то добавлю. но апликуха еще не схавает эти сетинги. т.е. первый раз будет запущена со стилями. и только во второй раз стили будут игнориться.
разумеется, это же делается из сетапа, но при старте каждый раз приходится проверять наличие этого ключа и прописывать его, если кастомер руками снял галочку
Здравствуйте, Alex_st, Вы писали:
A_>Здравствуйте, Carc, Вы писали:
C>>Что-то я не уловил тогда проблемы C>>Ну позвали тогда SetWindowTheme + HWND_именно_Тулбара? Что мешает? A_>позвать то SetWindowTheme для тулбара не мешает... просто не меняется при ентом позыве ничего
А GetWindowTheme Для него чего говорит?
_>Как показывает ваша дискуссия с Carc-ом, это не "совсем не про то", но возни с контролами много. Можно тогда попробовать напрямую добавить ваше приложения в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers, как это указано здесь. Другой вопрос, что это требует админских прав. Если вы и это пробовали и вам не подошло, то остается еще совет, приведенный здесь. Но это выглядит уж слишком замороченно.
Дык в конце трепа, мне так показалось, что проблема с конкретным контролом — с тулбаром. А не все убрать, хотя стартовая тема вроде как про всё разом.
Что я перепробовал.
WM_THEMECHANGE моему тулбарцу приходит, но только если я сам позову SetWindowTheme. Если не дергать SetWindowTheme, то нифига не приходит, хотя тулбар имеет явно отвижустиленный вид.
Второе. Если визуальные стили отключить (через манифест, ярлык и.т.д._, то все контролы ясное дело в старом стиле. А дык вот тулбар все-таки, на глаз если все таки посмотреть, вроде как со стилями.
GetWindowTheme на моему тулбаре в обработчике WM_CREATE возвращает NULL.
В общем, действительно, странно как-то все это.
Здравствуйте, Carc, Вы писали:
C>Здравствуйте, Alex_st, Вы писали:
A_>>Здравствуйте, Carc, Вы писали:
C>>>Что-то я не уловил тогда проблемы C>>>Ну позвали тогда SetWindowTheme + HWND_именно_Тулбара? Что мешает? A_>>позвать то SetWindowTheme для тулбара не мешает... просто не меняется при ентом позыве ничего C>А GetWindowTheme Для него чего говорит?
нули и для фрейма и для тулбара
Здравствуйте, Alex_st, Вы писали:
C>>А GetWindowTheme Для него чего говорит? A_>нули и для фрейма и для тулбара
У меня нули в WM_CREATE. А если потом попробовать, тупо таймеру? Тоже нули?