У меня есть приложение MDI, написанное на C++, которое отлично выглядит под Windows XP. Все дочерние окна MDI выглядят как их родительское окно. Ницца. Однако в Windows 7 (и, вероятно, в Vista) родительские окна имеют aero glass, а дочерние окна - это отвратительный неизменный голубой цвет ребенка (такой же, как и для Windows 7 Basic). Поэтому мое приложение действительно выглядит очень плохо.изменение цвета дочерних окон MDI под Windows 7
Вы можете увидеть это же уродливое поведение, запустив Office 2003 и попробуй посмотреть на дочерние окна MDI (возможно, в Excel). Однако Office 2007 фактически имеет три цветовые темы - синий, серебристый и черный. Эти темы каким-то образом переносятся на дочерние окна MDI в Excel.
Я не знаю, как Microsoft делает это в Office 2007. Я хотел бы знать трюк. Мне нужно перехватить чертеж моих дочерних окон MDI и воспроизвести то, что команда Office 2007 сняла. Проблема в том, что я хочу использовать все вызовы DrawTheme *, поэтому получаю градиенты и закругленные ребра и кнопки, которые все рисуются правильно. И всем этим системным вызовам нужен дескриптор темы. Но, похоже, не представляется возможным, например, использовать SetWindowTheme для изменения цветовой схемы из другой темы. По крайней мере, насколько я могу судить.
Кто-нибудь знает, как Microsoft это сделала?
Мне очень нравится делать что-то подобное, так как оно нарушает стандарты графического интерфейса пользователя, но я даже не должен был об этом думать, если бы Microsoft предоставила некоторую возможность настроить цвета детей MDI под Windows 7. – dsmtoday