У меня есть некоторый пользовательский интерфейс в VB 2005, который отлично смотрится в стиле XP, но отвратителен в классическом стиле.
Есть идеи о том, как определить, в каком режиме находится пользователь, и переформатировать формы на лету?
Опубликовать ответ Редактировать:
Спасибо, Даниэль, похоже, это сработает. Я использую первое решение, которое вы опубликовали с помощью функции GetCurrentThemeName ().
Я делаю следующее:
Объявление функции:
<code> Private Declare Unicode Function GetCurrentThemeName Lib "uxtheme" (ByVal stringThemeName As System.Text.StringBuilder, ByVal lengthThemeName As Integer, ByVal stringColorName As System.Text.StringBuilder, ByVal lengthColorName As Integer, ByVal stringSizeName As System.Text.StringBuilder, ByVal lengthSizeName As Integer) As Int32
Код тела:
<code>
Dim stringThemeName As New System.Text.StringBuilder(260)
Dim stringColorName As New System.Text.StringBuilder(260)
Dim stringSizeName As New System.Text.StringBuilder(260)</p>
<p>GetCurrentThemeName(stringThemeName, 260, stringColorName, 260, stringSizeName, 260)
MsgBox(stringThemeName.ToString)
MessageBox появляется пустым, когда я нахожусь в классическом стиле / теме Windows, и выводит "C: \ WINDOWS \ resources \ Themes \ luna \ luna.msstyles", если он в стиле / теме Windows XP Мне нужно будет немного больше проверить, чтобы увидеть, что произойдет, если пользователь установит другую тему, чем эти две, но это не должно быть большой проблемой.