Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Alpha-blending (прозрачность формы) Добавлено: 16.11.02 11:20  

Автор вопроса:  Виталиум | Web-сайт: www.infosoft.tk

Подскажите, как сделать для формы эффект альфа-смешения?..

И желательно чтобы под 98 и 2000 Винду одновременно :-))

Ответить

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

Номер ответа: 1
Автор ответа:
 SeMa



ICQ: 166433794 

Вопросов: 9
Ответов: 143
 Профиль | | #1 Добавлено: 17.11.02 12:46

Под 2000,а под 98 нету

Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crey As Byte, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Ответить

Номер ответа: 2
Автор ответа:
 Иван



Администратор

ICQ: 147688925 

Вопросов: 24
Ответов: 708
 Web-сайт: www.vbnet.ru
 Профиль | | #2
Добавлено: 17.11.02 18:20
Невозможно в Win98! Там это не поддерживается.

Ответить

Номер ответа: 3
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 17.11.02 21:08

 в Win98

Для контролов можно и на том спасибо

Ответить

Номер ответа: 4
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #4
Добавлено: 17.11.02 22:05

Если тебе нужен не постоянный альфа-блендинг формы, а только при загрузке
(например появление меню в Windows 2000), то ты можешь послать Dc формы и всех контролов на DesktopWindow. А затем сверху поместить форму.
Ну сначала посылаешь Dc формы, а затем по координатам top и left контролов
все контролы на форме.
Смотри, рисует прозрачную форму с кнопкой. Правда контролбокс не рисует.
Попробуй сам как нибудь его послать туда.
Dim cdc As Long
cdc = GetDC(Command1.hwnd)
AlphaBlend GetWindowDC(GetDesktopWindow), 0, 0, picMain.ScaleWidth, picMain.ScaleHeight, Me.hDC, 0, 0, picMain.ScaleWidth, picMain.ScaleHeight, &H460000
AlphaBlend GetWindowDC(GetDesktopWindow), 0, 0, Command1.Width, Command1.Height, cdc, 0, 0, Command1.Width, Command1.Height, &H460000

P.S. Для плавного появления запусти в цикле.
И ещё. Контролы удобнее перебирать в цикле For each control in Form.

Ответить

Номер ответа: 5
Автор ответа:
 Ян



ICQ: 816105 

Вопросов: 38
Ответов: 198
 Web-сайт: www.yan.net.ru
 Профиль | | #5
Добавлено: 19.11.02 14:00
2 Иван: в Win98 такая фича возможна, я даже видел пример!

Ответить

Номер ответа: 6
Автор ответа:
 Korjavin



Вопросов: 5
Ответов: 11
 Web-сайт: нету.сайта.вот
 Профиль | | #6
Добавлено: 21.11.02 12:06

Странно, но у меня механизм SetLayeredWindowAttributes не работает, т.е. программа запускается, ошибок не выдает, а результата нет... Приведите пожалуйста пример использования, может у меня руки кривые...

Ответить

Номер ответа: 7
Автор ответа:
 Виталиум



Вопросов: 9
Ответов: 10
 Web-сайт: www.infosoft.tk
 Профиль | | #7
Добавлено: 23.11.02 09:07

Да, было дело...

http://octal.narod.ru/trans.rar - для Win98.

Только там при загрузке формы постепенно появлялся рисунок в форме.

А я хотел бы чтобы програ при загрузке определяла какая винда установлена и постепеннно появлялась нужным методом, какой поддерживается установленной виндой.

А использовать контроллы не хочется... Моя прога и так весит 144 Кб (1 контролл, штуки 4 модуля, 1 модуль класса, 5-6 форм).

Хорошо, хоть UPX помогает сжать до 45,5 Кб...

:-) Кстати, посмотрите - в примерах должна быть эта программка (InfoSoft Quick Access 1.1.2) :-)

Ответить

Страница: 1 |

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



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