Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Мне "на вистах" и на XP/классике нужен разный вид границ одной и той же формы / 2 сообщений из 2, страница 1 из 1
16.06.2013, 00:57
    #38298837
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мне "на вистах" и на XP/классике нужен разный вид границ одной и той же формы
На классике нужно границы как в случае
BorderStyle = 1 Fixed Single (черный контур)

На виста-темах нужна классическая граница соответствующая

BorderStyle = 2 Sizable

Дополнительно: форма
ControlBox = false
Caption = <пусто>
Она всегда "fixed", но при 2 Sizable (соответствует WS_THICKFRAME, ради вида границы), НЕ Sizable обеспечивается сабклассингом.

Я задолбался

Пытался так:

Код: vbnet
1.
   Me.BorderStyle = 1 ' 2



Пытался так:
Код: vbnet
1.
2.
3.
4.
  Dim aStyle As Long
  aStyle = GetWindowLong(Form1.hwnd, GWL_EXSTYLE)
  aStyle = aStyle And Not WS_THICKFRAME ' Or WS_THICKFRAME 
  Call SetWindowLong(Me.hwnd, GWL_EXSTYLE, aStyle)



Пытался смотреть какие-то примеры в интернете
типа этого
, все глючные какие-то.

Проблема в том что я не могу в конструкторе задать два разных значения в зависимости от IsVista and ThemesEnabled.
Мне достаточно чтоб вид задавался один раз при старте формы.
...
Рейтинг: 0 / 0
19.06.2013, 07:31
    #38302533
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мне "на вистах" и на XP/классике нужен разный вид границ одной и той же формы
Вот странно.. действительно никто не знает?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
'Конструктор
'BorderStyle=2 Sizable (или 1 - неважно)
'Caption = " " (пробел, но не пустой)
'ControlBox= False

'===============

Private Sub Form_Load()
  Me.BorderStyle = RND_CalcRND(1, 2)
  Me.Caption = "" 'пустой
End Sub

Public Function RND_CalcRND(lowerbound As Long, upperbound As Long) As Long
  Randomize
  RND_CalcRND = Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
End Function



Для случая который нужен мне будет так

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Form_Load()
  If sys_WinVista And ThemesEnabled(Me.hwnd) Then
    Me.BorderStyle = 2
  Else
    Me.BorderStyle = 1
  End If
  Me.Caption = ""
  ...


Это стиль границ окна FlyOut -кто хочет может проверить на Висте или 7-ке "Date and Time" -при включенной и отключенной теме.

Чистый VB-трюк, а на форумах полотнища из API и при этом глючат.

Если форму создавать через API, то таких проблем конечно не возникнет.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Мне "на вистах" и на XP/классике нужен разный вид границ одной и той же формы / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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