Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница:

 

  Вопрос: Косяк с transparent Добавлено: 16.01.07 08:53  

Автор вопроса:  Calhoon | Web-сайт: 4elovekssn.blog.ru | ICQ: 789764 
Иногда возникает подобный косяк при использовании transparent окна:
Форма-то прозрачной становится, но вот если есть поверх нее окно "on top" другой программы, то мое окно перекрывает его, хотя я "on top" не ставил. Но это не все. Такая фишка: Закрываю своим окно окно этой программы, и нажимаю сквозь свое окно кнопки на программе, которая визуально находится ЗА моим окном! Т.е. когда применяю transparent, форма визуально отрисовывается поверх всех onTop-окон, даже дочерних модальных окон этой же программы с не выставленным transparent'ом. С обычными окнами нормальньно. Причем, это не всегда, раз на раз...
Могу даж пояснить картинкой: http:\\truerezult.nm.ru\kosyak.gif


Для transparentа использую след. код:

Option Explicit

'Функция определяет стиль окна
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
'Функция задаёт стиль окна
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'Функция делает окно прозрачным
Public Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, _
ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
'Константы
Public Const LWA_ALPHA = &H3
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_LAYERED = &H80000


'hWnd - манипулятор окна, Layered - степень прозрачности от 0 до 255
Public Function SetTransparent(hWnd As Long, Layered As Byte) As Boolean
On Error GoTo er
Dim Ret As Long

Ret = GetWindowLong(hWnd, GWL_EXSTYLE) 'Определяем стиль нужного окна
Ret = Ret Or WS_EX_LAYERED
SetWindowLong hWnd, GWL_EXSTYLE, Ret 'Задаём стиль окна как заслоённый
SetLayeredWindowAttributes hWnd, 1, Layered, LWA_ALPHA 'Задём степень прозрачности окна
SetTransparent = True

er: Exit Function
End Function

Ответить

  Ответы Всего ответов: 0  

Нет ответов

Страница:

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам