Работа с SetLayeredWindowAttributes

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Rostik Ultra (2)
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 159
Зарегистрирован: 10.05.2005 (Вт) 2:41
Откуда: Антарктическая республика

Работа с SetLayeredWindowAttributes

Сообщение Rostik Ultra (2) » 24.05.2005 (Вт) 4:37

В апи гайде есть функция - SetLayeredWindowAttributes Если с её помощью сделать полупрозрачную форму то например выпадающие в цикле меню будут тормозиться... (даже если полупрозрачность устранить - 255 )

как сделать чтобы не тормозилось когда полупрозрачности уже нет ( как нибудь отключить работу этой функции )
Мой сайт http://mentalprograms.narod.ru/ - бесплатные развивающие программы

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 24.05.2005 (Вт) 7:24

Попробуй вот так:
Код: Выделить всё
    Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
    Ret = Ret Or Not WS_EX_LAYERED
    SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret

Так мы отменяем мультислойность из-за которой возникают тормоза
الفيجوال بيسك الرابح

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 24.05.2005 (Вт) 7:50

Rostik Ultra (2), ты походу какой-то большой проект разрабатываешь =)))) колись какой =)))
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 24.05.2005 (Вт) 20:28

Оптимизаторы мозгов он делает! В смысле, программы для развития памяти и навыков чтения у детей от 10 до 99. :D
Моду создают модоки, а распространяют модозвоны.

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 24.05.2005 (Вт) 20:52

Сорри, там вроде бы так должно быть:
Код: Выделить всё
Ret = Ret And Not (WS_EX_LAYERED)

Незнаю просто в апи-гайде похожый пример нашел, так вот там так написано.
الفيجوال بيسك الرابح

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 24.05.2005 (Вт) 20:56

А мне больше по душе
Код: Выделить всё
Ret = Ret Xor WS_EX_LAYERED
Моду создают модоки, а распространяют модозвоны.

Rostik Ultra (2)
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 159
Зарегистрирован: 10.05.2005 (Вт) 2:41
Откуда: Антарктическая республика

Сообщение Rostik Ultra (2) » 25.05.2005 (Ср) 3:43

Jenizix писал(а):Rostik Ultra (2), ты походу какой-то большой проект разрабатываешь =)))) колись какой =)))


Быстрое чтение 2
Мой сайт http://mentalprograms.narod.ru/ - бесплатные развивающие программы

Rostik Ultra (2)
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 159
Зарегистрирован: 10.05.2005 (Вт) 2:41
Откуда: Антарктическая республика

Сообщение Rostik Ultra (2) » 25.05.2005 (Ср) 3:55

GM

Первый код порождает глюк

исправление Ret = Ret And Not (WS_EX_LAYERED) устраняет глюк но прозрачность не создаётся

2 hCORe Код: Ret = Ret Xor WS_EX_LAYERED - тормозится точно также


ЗЫ : дядьки , ну зацените в чём фишка... есть форма на ней выпадают меню ( пока всё нормально ... ) потом какое-то событие делает окно прозрачным , ( пока оно прозрачно на форме ничё не двигается так что пиливать на тормоза... ( хотя если подскажете способ устранить тормоза буду благодарен ) потом окно снова становится нормальным ( не прозрачным ) и вот здесь проблема - меню продолжают до неприличия тормозиться

поэтому вопрос : как восстановить прежнее состояние окна без этой функции ( раз уж она такая $#%$%%$ ) типа как нибудь задать прежние аттрибуты окна ( и самое главное выгрузить функцию из оперативной памяти (или где она там сидит ) чтобы впредь не мешала ...)
Мой сайт http://mentalprograms.narod.ru/ - бесплатные развивающие программы

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 25.05.2005 (Ср) 7:54

Ну так запомни GetWindowLong, вначале программы, а потом восстановляй. Тормоза возникают из-за многослойности.
الفيجوال بيسك الرابح

Rostik Ultra (2)
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 159
Зарегистрирован: 10.05.2005 (Вт) 2:41
Откуда: Антарктическая республика

Сообщение Rostik Ultra (2) » 31.05.2005 (Вт) 3:05

Вопрос решён :

Сохранить стиль окна

lngOldWindowsStyle& = GetWindowLong&(hwnd&, GWL_EXSTYLE)

Восстановить стиль окна

aaa=SetWindowLong&(hwnd, GWL_EXSTYLE, lngOldWindowsStyle& And WS_EX_LAYERED)
Мой сайт http://mentalprograms.narod.ru/ - бесплатные развивающие программы

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 31.05.2005 (Вт) 7:31

Rostik Ultra (2) писал(а):Вопрос решён :

Сохранить стиль окна

lngOldWindowsStyle& = GetWindowLong&(hwnd&, GWL_EXSTYLE)

Восстановить стиль окна

aaa=SetWindowLong&(hwnd, GWL_EXSTYLE, lngOldWindowsStyle& And WS_EX_LAYERED)

Ну так я это и писал, только одно но. lngOldWindowsStyle& And WS_EX_LAYERED там должен быть Or.
الفيجوال بيسك الرابح

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 31.05.2005 (Вт) 11:17

GM, а по-моему, And Not... Rostik же этой строчкой снимает прозрачность?
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot, Yandex-бот и гости: 164

    TopList