Форум 3DNews
Вернуться   Форум 3DNews > Программирование > Программирование

Ответ Создать новую тему
Опции темы Опции просмотра
Непрочитано 24.01.2004, 17:50   [включить плавающее окно]   #1
morfeusys
Новенький
Автор темы
 
Регистрация: 14.12.2003
Как сделать полупрозрачное окно на Delphi?

Как сделать полупрозрачное окно на Delphi?
morfeusys вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 24.01.2004, 20:03   [включить плавающее окно]   #2
legozaur
Мужской Общительный
 
Аватар для legozaur
 
Регистрация: 14.11.2003
Адрес: Новосибирск
Как это сделать стандартными средствами не в курсе (хотя можно подумать!), но я на WinApi делал прозрачное окно.
Можно задать в качестве фона окна (hbrBackground = 0 в классе окна) - прозрачный цвет. А также убрать полосу меню (т. е. сделать то, что называется Form1.BordarStyle := bsNone). После этого можно припомощи alpha смешения (командами OpenGL, например) наложить любое изображение. А может, если не мудрить, то можно сделать и при помощи побитовых операций к месту экрана с окном.
legozaur вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 25.01.2004, 10:57   [включить плавающее окно]   #3
Krionix
Мужской Администратор
 
Аватар для Krionix
 
Регистрация: 08.02.2003
Адрес: Новосибирск
полупрозрачное окно стандартными средствами можно делать только на 6 и выше.
Krionix вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 25.01.2004, 18:03   [включить плавающее окно]   #4
legozaur
Мужской Общительный
 
Аватар для legozaur
 
Регистрация: 14.11.2003
Адрес: Новосибирск
Если не секрет, то как?
legozaur вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 26.01.2004, 10:32   [включить плавающее окно]   #5
Darthman
Мужской Опытный
 
Аватар для Darthman
 
Регистрация: 10.02.2003
Адрес: Москва
При задании стиля:
Код:
  // Задание стиля создаваемого окна
  dwStyle:= WS_POPUP or WS_CLIPCHILDREN or WS_CLIPSIBLINGS;
    // Задание дополнительного стиля создаваемого окна
  dwExStyle:= WS_EX_STATICEDGE
              or WS_EX_TOOLWINDOW;  // Верхний уровень
              or WS_EX_LAYERED; //  для прозрачности
После создания окна:
Код:
SetLayeredWindowAttributes(h_Wnd, $FFFFFFFF, $FF,  LWA_ALPHA);
Где $FF - альфа, $FFFFFFFF - цветовой ключ, если флаг поставлен.
__________________
Если работает, лучше не трогай!
Darthman вне форума  
Ответить с цитированием
Непрочитано 26.01.2004, 10:34   [включить плавающее окно]   #6
Krionix
Мужской Администратор
 
Аватар для Krionix
 
Регистрация: 08.02.2003
Адрес: Новосибирск
legozaur
Немогу сказать, т.к. у меня стоит 5 дельфя.
Вроде бы Alphablend или Transparent
Krionix вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 26.01.2004, 15:03   [включить плавающее окно]   #7
legozaur
Мужской Общительный
 
Аватар для legozaur
 
Регистрация: 14.11.2003
Адрес: Новосибирск
Krionix
Там действительно есть свойства AlphaBlend и AlphaBlendValue, но они ни на что не влияют. Я пробовал.
А почему на Delphi 5 программируешь? Неоткуда более позднюю версию взять, или считаешь, что пятая версия лучше?
morfeusys
То что сказал Darthman верно, но только надо пользоваться CrateWindowEx вместо CreateWindow.
legozaur вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 26.01.2004, 15:42   [включить плавающее окно]   #8
Krionix
Мужской Администратор
 
Аватар для Krionix
 
Регистрация: 08.02.2003
Адрес: Новосибирск
Цитата
Там действительно есть свойства AlphaBlend и AlphaBlendValue, но они ни на что не влияют. Я пробовал.
Значит надо еще что-то поставить. Т.к. есть прога которая использует именно это (друг писал).
Цитата
А почему на Delphi 5 программируешь? Неоткуда более позднюю версию взять, или считаешь, что пятая версия лучше?
Да нет, дело не в этом. Просто давно уже не программирую что-то, она просто стоит и все :)
Krionix вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 26.01.2004, 15:46   [включить плавающее окно]   #9
Darthman
Мужской Опытный
 
Аватар для Darthman
 
Регистрация: 10.02.2003
Адрес: Москва
legozaur
Угу, ты прав. Я забыл об этом упомянуть совсем
__________________
Если работает, лучше не трогай!
Darthman вне форума  
Ответить с цитированием
Непрочитано 26.01.2004, 17:44   [включить плавающее окно]   #10
legozaur
Мужской Общительный
 
Аватар для legozaur
 
Регистрация: 14.11.2003
Адрес: Новосибирск
Вопрос всем.
При создании окна в dwStyle задаю ws_ClipSiBlings or ws_Popup or ws_ClipChildren. Окошко СВОРАЧИВАЕТСЯ при нажатии правой клавиши мыши. Может дело в ws_Popup'е? Я имею виду, что Popup Menu - всплывающее меню появляется/убирается при клике правой клавишей, дак не здря же константа тоже ws_Popup называется, может это она и обуславливает такое поведение окна? Хотя с другой стороны везде написано, что мол хочешь создать полноэкранное приложение, тогда используй ws_Popup. Так в чём же дело?
legozaur вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 26.01.2004, 18:11   [включить плавающее окно]   #11
Darthman
Мужской Опытный
 
Аватар для Darthman
 
Регистрация: 10.02.2003
Адрес: Москва
legozaur
Ты делаешь не полноэкранное, а развернутое на весь десктоп, в это я поверю куда больше. Полноэкранное можно создать только используя DirectDraw (например) или DevModeChange.
__________________
Если работает, лучше не трогай!
Darthman вне форума  
Ответить с цитированием
Непрочитано 27.01.2004, 17:27   [включить плавающее окно]   #12
legozaur
Мужской Общительный
 
Аватар для legozaur
 
Регистрация: 14.11.2003
Адрес: Новосибирск
Ну да, наверно. Только суть дела от этого не меняется. Почему же всё-таки окно сворачивается. Кстати подмечено, что первый запуск проходит как надо, это потом почему-то глюки начинаются.
legozaur вне форума  
Конфигурация ПК
Ответить с цитированием
Ответ Создать новую тему

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 06:48. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 2000-2017 3DNews. All Rights Reserved.
Администрация 3DNews требует соблюдения на форуме правил и законов РФ
Серверы размещены в Hostkey