Страница: 1 |
Подскажите, как сделать для формы эффект альфа-смешения?.. И желательно чтобы под 98 и 2000 Винду одновременно :-))
Под 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 в Win98 Для контролов можно и на том спасибо Если тебе нужен не постоянный альфа-блендинг формы, а только при загрузке P.S. Для плавного появления запусти в цикле. Странно, но у меня механизм SetLayeredWindowAttributes не работает, т.е. программа запускается, ошибок не выдает, а результата нет... Приведите пожалуйста пример использования, может у меня руки кривые... Да, было дело... http://octal.narod.ru/trans.rar - для Win98. Только там при загрузке формы постепенно появлялся рисунок в форме. А я хотел бы чтобы програ при загрузке определяла какая винда установлена и постепеннно появлялась нужным методом, какой поддерживается установленной виндой. А использовать контроллы не хочется... Моя прога и так весит 144 Кб (1 контролл, штуки 4 модуля, 1 модуль класса, 5-6 форм). Хорошо, хоть UPX помогает сжать до 45,5 Кб... Кстати, посмотрите - в примерах должна быть эта программка (InfoSoft Quick Access 1.1.2) Страница: 1 |
Вопрос: Alpha-blending (прозрачность формы)
Добавлено: 16.11.02 11:20
Автор вопроса: Виталиум | Web-сайт:
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
SeMa
ICQ: 166433794
Вопросов: 9
Ответов: 143
Профиль | | #1
Добавлено: 17.11.02 12:46
Номер ответа: 2
Автор ответа:
Иван
Администратор
ICQ: 147688925
Вопросов: 24
Ответов: 708
Web-сайт:
Профиль | | #2
Добавлено: 17.11.02 18:20
Невозможно в Win98! Там это не поддерживается.
Номер ответа: 3
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #3
Добавлено: 17.11.02 21:08
Номер ответа: 4
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #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
И ещё. Контролы удобнее перебирать в цикле For each control in Form.
Номер ответа: 5
Автор ответа:
Ян
ICQ: 816105
Вопросов: 38
Ответов: 198
Web-сайт:
Профиль | | #5
Добавлено: 19.11.02 14:00
2 Иван: в Win98 такая фича возможна, я даже видел пример!
Номер ответа: 6
Автор ответа:
Korjavin
Вопросов: 5
Ответов: 11
Web-сайт:
Профиль | | #6
Добавлено: 21.11.02 12:06
Номер ответа: 7
Автор ответа:
Виталиум
Вопросов: 9
Ответов: 10
Web-сайт:
Профиль | | #7
Добавлено: 23.11.02 09:07