Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как в .NET понять что XP/Vista стиль активен? / 3 сообщений из 3, страница 1 из 1
11.09.2013, 20:19
    #38394103
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в .NET понять что XP/Vista стиль активен?
Рабочий код VB6:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Declare Function OpenThemeData Lib "uxtheme.dll" (ByVal hwnd As Long, _
 ByVal pszClassList As Long) As Long
Private Declare Function CloseThemeData Lib "uxtheme.dll" (ByVal hTheme As Long) As Long
Public Function ThemesEnabled(hwnd As Long) As Boolean
  Dim hTheme As Long
  
  hTheme = OpenThemeData(hwnd, StrPtr("Window"))
  CloseThemeData hTheme
  ThemesEnabled = hTheme <> 0
End Function



НЕрабочий код .NET
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  Private Declare Function OpenThemeData Lib "uxtheme.dll" (ByVal hwnd As IntPtr, _
   ByVal pszClassList As String) As IntPtr
  Private Declare Function CloseThemeData Lib "uxtheme.dll" _
   (ByVal hTheme As Integer) As Integer

  Public Function ThemesEnabled(ByVal hwnd As IntPtr) As Boolean
    Dim hTheme As IntPtr = OpenThemeData(hwnd, "Window")
     CloseThemeData(hTheme)
    Return hTheme <> 0
  End Function
...
   MsgBox(ThemesEnabled(Me.Handle))


Всегда возвращает False.
Ну и что не так делаю?
...
Рейтинг: 0 / 0
11.09.2013, 20:40
    #38394110
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в .NET понять что XP/Vista стиль активен?
Не, хорошо,
а методами .NET (раз он такой замечательный на все случаи жизни) можно понять
1) Я НА КЛАССИКЕ
или
2) Я НА "XP-стиле" или "на VISTA-стиле"

для системы, приложения, окна, мне (думаю) без разницы

Потому что если я на Vista/7/8 + "на VISTA-стиле" я хочу например установить шрифт Segoe UI 9 для чего-нибудь
А на Vista/7+ "НА КЛАССИКЕ" хочу оставить Microfoft Sans Serif 8.
(.NET "автоматом" всех этих вопросов не решает)
...
Рейтинг: 0 / 0
11.09.2013, 21:10
    #38394119
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в .NET понять что XP/Vista стиль активен?
Вот так вроде работает, ранее использовал только метод как выше.
Код: vbnet
1.
2.
3.
4.
5.
6.
  Private Declare Function IsThemeActive Lib "uxtheme.dll" () As Boolean
  Private Declare Function IsAppThemed Lib "uxtheme.dll" () As Boolean

  Public Function App_ThemesEnabled() As Boolean
    Return IsThemeActive AndAlso IsAppThemed
  End Function


Но непонятно в чем подвох в первом варианте.
StrPtr в .NET отсутствует, так понял можно объявить но не рекомендуется,
а мне конструкции StrPtr("строка") или их аналоги далее понадобятся,
например для
Код: vbnet
1.
      SetWindowTheme hwndLv, StrPtr("explorer"), 0 'VB6


в C++ документации обычно пишется L"explorer",
а к VB.Net-овской (как и VB-6-ой) as String доверия что-то маловато.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как в .NET понять что XP/Vista стиль активен? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]