Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как создать прозрачное окно?

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

OOSL

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 Вроде есть способ создания окна на основе чего-то вроде битмапки с альфа каналом, Причем прозрачные области окна являются прозрачными не только визуально , но и для ввода
Якобы подобное окно применяется в последних Оффисах для всяких "помошников",
Вопрос : как его реализовть
 
Добавлено
Я имел ввиду не полностью прозрачное с прозрачными областями

Всего записей: 85 | Зарегистр. 16-07-2003 | Отправлено: 18:24 24-09-2003
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кажется вот так...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_2b00.asp

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 19:36 24-09-2003
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OOSL
А чем тебе регионы не нравятся. Или тебе для анимации вроде screenmate ов надо. Если да то уменя есть пример одного такого. Там челдобрек бегает по экрану. Но вот там к сожалению оно все же квадратное, просто задник залит фоном. Хотя выглядит симпатично.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:29 25-09-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OOSL
Глянь на этот пример
http://www.codeproject.com/miscctrl/csplashscreenex.asp
там как раз
Цитата:
на основе чего-то вроде битмапки с альфа каналом


Всего записей: 1520 | Зарегистр. 22-04-2002 | Отправлено: 13:45 25-09-2003
OOSL

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На самом деле оказалось вот так:,  
 
SetWindowLong(hWnd,GWL_EXSTYLE,GetWindowLong(hWnd,GWL_EXSTYLE)^WS_EX_LAYERED);  
SetLayeredWindowAttributes(hWnd,RGB(0,0,0),(значение прозрачности),LWA_ALPHA);
 
Всем спасибо

Всего записей: 85 | Зарегистр. 16-07-2003 | Отправлено: 17:28 25-09-2003
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
SetWindowLong(hWnd,GWL_EXSTYLE,GetWindowLong(hWnd,GWL_EXSTYLE)^WS_EX_LAYERED);  
SetLayeredWindowAttributes(hWnd,RGB(0,0,0),(значение прозрачности),LWA_ALPHA);  

Ничего подобного. Это способ создания (полу)прозрачного окна, без всяких там  

Цитата:
Я имел ввиду не полностью прозрачное с прозрачными областями

Оно все прозрачное. Ты вначале правильно формулируй вопрос, а потом создавай сабж. Так бы и написал, хочу сделать полупрозрачное окно, (н-р как корзина FlashGet) под Вынь2К. Просто если бы вопрос был сформулирован попонятнее, я бы тебе этот пример сразу дал, сам его юзал недавно.
ЗЫ. Ктсати эта функция работает именно начиная с Вынь2К. Под Вынь9х она не канает.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 00:56 26-09-2003
UncoNNecteD



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ShIvADeSt абсолютно прав.
Причем то что хотел сам OOSL -  

Цитата:
окна являются прозрачными не только визуально , но и для ввода  

делается ТОЛЬКО регионами и никак иначе.

Всего записей: 4040 | Зарегистр. 21-03-2002 | Отправлено: 16:21 28-09-2003
OOSL

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
UncoNNecteD
 
SetWindowLong(hWnd,GWL_EXSTYLE,GetWindowLong(hWnd,GWL_EXSTYLE)^WS_EX_LAYERED);  
SetLayeredWindowAttributes(hWnd,RGB(0,0,0),(значение прозрачности),LWA_ALPHA);  
 
Делает окно на (значение прозрачности) прозрачным
 
 
тоже самое
-но вместо
LWA_ALPHA  используем LWA_COLORKEY
а вместо
RGB(0,0,0)  используем цвет который будет прозрачным, И ДЛЯ ВВОДА ТОЖЕ
 
 
Окно может быть либо полупрозрачным либо непрозрачное с абсолютно прозрачными зонами

Всего записей: 85 | Зарегистр. 16-07-2003 | Отправлено: 16:28 29-09-2003
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
SetLayeredWindowAttributes(hWnd,RGB(0,0,0),(значение прозрачности),LWA_ALPHA);

Я еще раз говорю, что она работает начиная с Win2K. Если тебе надо делать прозрачные окна под любой Вынь юзай регионы иначе что хочешь. И еще всякие помощники в последних версиях работают и под любой версией Винды. Так что они реализованы нет так как ты пишешь.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 03:44 30-09-2003
OOSL

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
А мне не надо под любой,
LWA_COLORKEY реально работает под Win2k и WinXP
 

Цитата:
И еще всякие помощники в последних версиях работают и под любой версией Винды. Так что они реализованы нет так как ты пишешь

 
А как ?

Всего записей: 85 | Зарегистр. 16-07-2003 | Отправлено: 07:58 30-09-2003
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А как ?

Я видел пару прог, которые реализовывали такие же фичи. Есть предположение это хорошая отрисовка на десктопе. Вроде того как это делаю скринмэйты. Но вот только нормальных исходников найти не удалось. Есть один типа бета. Без драг и дропа мультяшек. Просто ходит анишка по десктопу за мышой. Но те которые я видел, они гораздо круче. А вот реализация их меня всегда интересовала.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 09:04 30-09-2003
orbb

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть способ и без прозрачного окна, скачал исходники скринмэйта с wzona.com, вроде все просто




не поднимай старые темы

Всего записей: 1 | Зарегистр. 22-05-2006 | Отправлено: 05:09 22-05-2006 | Исправлено: ShIvADeSt, 09:31 22-05-2006
Wizard_in_blacK



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
извиняюсь, но ещё раз подниму... у orbb'а кстати исходники только спонсорам с ценой sms'ки 1 бакс без НДС
 
подскажите пожалуйста, как сделать окно частично-прозрачное визуально, и полностью -- для мышки (а закрывать к примеру иконкой в tray'е можно). хочу повесить пару картинок и часики поверх всего что на мониторе, чтоб глазам видно было (30% прозрачноть скажем), а для мышки -- нет. WinXP, язык не принципиален, скорость и прожорливость важны. flick'и не желательны

Всего записей: 75 | Зарегистр. 29-12-2001 | Отправлено: 13:22 30-08-2006
GrafOS



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
У меня поинтереснее задача. Можно ли под Вин2к, ХР... Сделать регион окна с альфа прозрачностью? У кого нибудь мысли есть как это можно реализовать?

Всего записей: 1 | Зарегистр. 20-09-2006 | Отправлено: 12:01 20-09-2006
TP09H

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OOSL
SetWindowLayeredAttributes worx only in WinNT starting from 2000.If you want it to work without transparency in Win9x use next code:
Option Explicit
Private L as Long
...
L=LoadLibrary("User32")'Can't remember lib,maybe SHell32(Super Hell 32)
If L<>0 Then L=GetProcAddress(L,"SetWindowLayeredAttributes")
If L<>0 Then ...'Calling SetWindowLayeredAttributes
...
FreeLibrary L'Not important
Warning:this code in Win9x willn't make wnd transparent
If anybody have code to make non-std form,send it to me

Всего записей: 18 | Зарегистр. 19-09-2006 | Отправлено: 14:57 20-09-2006
eugenij

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Причем прозрачные области окна являются прозрачными не только визуально , но и для ввода

приношу извинения, не мог не написать правильно это делается так:
 
SetWindowLong(hWnd, GWL_EXSTYLE,GetWindowLong(hWnd, GWL_EXSTYLE)|\
        WS_EX_LAYERED|WS_EX_TRANSPARENT);
SetLayeredWindowAttributes(hWnd, 0, 200, LWA_ALPHA);
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
 
 
так делается прозрачное/призрачное окно, для мышки тоже! ))))

Всего записей: 1 | Зарегистр. 20-07-2009 | Отправлено: 00:18 14-07-2011
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как создать прозрачное окно?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru