Полупрозрачность фона
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Полупрозрачность фона
Ver 6.0(ABC)
Приветствую всех членов CLAнклава.
Вопрос к мэтрам Clariona -как можно сделать любое вызываемое окно (Browse или Form) непрозрачным к остальному полупрозрачному фону, по аналогии с просмотрщиком графических файлов Picasa от Google, т.е. появляется форма ввода или список на переднем плане, а остальное на заднем фоне в полупрозразчном виде (концентрация внимания и отличная визуализация)? - Программа преобрела бы совсем другой статус.
Дайте нужное направление для dribblinga.
Приветствую всех членов CLAнклава.
Вопрос к мэтрам Clariona -как можно сделать любое вызываемое окно (Browse или Form) непрозрачным к остальному полупрозрачному фону, по аналогии с просмотрщиком графических файлов Picasa от Google, т.е. появляется форма ввода или список на переднем плане, а остальное на заднем фоне в полупрозразчном виде (концентрация внимания и отличная визуализация)? - Программа преобрела бы совсем другой статус.
Дайте нужное направление для dribblinga.
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
- StillZero
- Ветеран
- Сообщения: 454
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Контактная информация:
Re: Полупрозрачность фона
Не совсем понятно... не видел я пикасу... не скажу точно, надо пробывать, с первого взгляда должно получиться... но есть над чем подумать, а функции там две всего вроде...
The SetLayeredWindowAttributes function sets the opacity and transparency color key of a layered window.
Syntax
BOOL SetLayeredWindowAttributes( HWND hwnd,
COLORREF crKey,
BYTE bAlpha,
DWORD dwFlags
);
Parameters
hwnd
[in] Handle to the layered window. A layered window is created by specifying WS_EX_LAYERED when creating the window with the CreateWindowEx function or by setting WS_EX_LAYERED via SetWindowLong after the window has been created.
crKey
[in] COLORREF structure that specifies the transparency color key to be used when composing the layered window. All pixels painted by the window in this color will be transparent. To generate a COLORREF, use the RGB macro.
bAlpha
[in] Alpha value used to describe the opacity of the layered window. Similar to the SourceConstantAlpha member of the BLENDFUNCTION structure. When bAlpha is 0, the window is completely transparent. When bAlpha is 255, the window is opaque.
dwFlags
[in] Specifies an action to take. This parameter can be one or more of the following values.
LWA_COLORKEY
Use crKey as the transparency color.
LWA_ALPHA
Use bAlpha to determine the opacity of the layered window.
Return Value
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
The SetLayeredWindowAttributes function sets the opacity and transparency color key of a layered window.
Syntax
BOOL SetLayeredWindowAttributes( HWND hwnd,
COLORREF crKey,
BYTE bAlpha,
DWORD dwFlags
);
Parameters
hwnd
[in] Handle to the layered window. A layered window is created by specifying WS_EX_LAYERED when creating the window with the CreateWindowEx function or by setting WS_EX_LAYERED via SetWindowLong after the window has been created.
crKey
[in] COLORREF structure that specifies the transparency color key to be used when composing the layered window. All pixels painted by the window in this color will be transparent. To generate a COLORREF, use the RGB macro.
bAlpha
[in] Alpha value used to describe the opacity of the layered window. Similar to the SourceConstantAlpha member of the BLENDFUNCTION structure. When bAlpha is 0, the window is completely transparent. When bAlpha is 255, the window is opaque.
dwFlags
[in] Specifies an action to take. This parameter can be one or more of the following values.
LWA_COLORKEY
Use crKey as the transparency color.
LWA_ALPHA
Use bAlpha to determine the opacity of the layered window.
Return Value
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
Все сайты закрыты...
- Admin
- Администратор
- Сообщения: 3963
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 29 раз
- Поблагодарили: 22 раза
- Контактная информация:
Re: Полупрозрачность фона
SetLayeredWindowAttributes делает прозрачным окно а не весь фон (AppFrame) программы под окном...
Так что не совсем то.
Так что не совсем то.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Re: Полупрозрачность фона
Admin все понял, смотрел я все эти функции в Visual Studio, но ни одна не подходит - а если какой-то handle рабочего стола вместе с открытыми окнами?
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
- StillZero
- Ветеран
- Сообщения: 454
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Контактная информация:
Re: Полупрозрачность фона
картинку давай...
хэндл окна рабочего стола есть, и окна открытые можно все перечислить...
... и сделайте все окна полупрозрачными, а активное не делайте...
зы
попробовал... какая то херня с дочерними окнами, впрочем как обычно
а с SDI все ок
хэндл окна рабочего стола есть, и окна открытые можно все перечислить...
Код: Выделить всё
HWND GetDesktopWindow(VOID);
BOOL EnumChildWindows(
HWND hWndParent,
WNDENUMPROC lpEnumFunc,
LPARAM lParam
);
зы
попробовал... какая то херня с дочерними окнами, впрочем как обычно
![Smile :)](./images/smilies/icon_smile.gif)
Все сайты закрыты...
Re: Полупрозрачность фона
А какая нужна картинка?
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
- StillZero
- Ветеран
- Сообщения: 454
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Контактная информация:
Re: Полупрозрачность фона
как оно выглядитmuskin писал(а):А какая нужна картинка?
Все сайты закрыты...
- StillZero
- Ветеран
- Сообщения: 454
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Контактная информация:
Re: Полупрозрачность фона
совсем не так представлял... по взрослому, полагаю, никто не сделает ибо http://rsdn.ru/forum/usability/3324030.aspx
приколхозить фичу ... хз...
приколхозить фичу ... хз...
Все сайты закрыты...
- StillZero
- Ветеран
- Сообщения: 454
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Контактная информация:
Re: Полупрозрачность фона
вопрос еще возник... приложение, стартануто два дочерних окна, переключаемся по Ctrl+F6 между ними... какое должно быть поведение?
а то мне тут со стороны говорят, что так делают для модального окна, то бишь для одного... а для модального одного можно конечно реализовать
а то мне тут со стороны говорят, что так делают для модального окна, то бишь для одного... а для модального одного можно конечно реализовать
Все сайты закрыты...
Re: Полупрозрачность фона
Поведение такое -> активное окно - непрозрачное, все остальное - полупрозрачный фон.
Я тут прикинул, хотя бы реализовать все это в рамках AppFrame. Наверное проще, не замахиваться на весь DeskTop.
Перед открытием, например, Form-ы, открываю фиктивное пустое Child-окно размером на весь AppFrame:
W_Window WINDOW,AT(,,800,600),CENTER,NOFRAME,MDI
END
Затем вдогонку к открытому фиктивному окну пытаюсь применить SetLayeredWindowAttributes - никакого эффекта, фон остается по умолчанию(наверное, неправильно описал прототип функции).
Затем открываю саму форму. Все срабатывает - на сплошном белом фоне нужная форма, все остальные открытые окна - за ним.
Помогите правильно описать прототип вызываемой функции.
Я тут прикинул, хотя бы реализовать все это в рамках AppFrame. Наверное проще, не замахиваться на весь DeskTop.
Перед открытием, например, Form-ы, открываю фиктивное пустое Child-окно размером на весь AppFrame:
W_Window WINDOW,AT(,,800,600),CENTER,NOFRAME,MDI
END
Затем вдогонку к открытому фиктивному окну пытаюсь применить SetLayeredWindowAttributes - никакого эффекта, фон остается по умолчанию(наверное, неправильно описал прототип функции).
Затем открываю саму форму. Все срабатывает - на сплошном белом фоне нужная форма, все остальные открытые окна - за ним.
Помогите правильно описать прототип вызываемой функции.
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
- StillZero
- Ветеран
- Сообщения: 454
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Контактная информация:
Re: Полупрозрачность фона
да все верно... почти
вот у тебя две формы открыты одновременно, как тогда быть с "фиктивным пустым окном"? их ведь тоже два...одно то окно по сути надо убрать, оно уже не нужно, а дальше вопрос встает про переключение между этими окнами...
и дело не в прототипе скорее всего... попробуй сделать на окне без атрибута MDI...
вот у тебя две формы открыты одновременно, как тогда быть с "фиктивным пустым окном"? их ведь тоже два...одно то окно по сути надо убрать, оно уже не нужно, а дальше вопрос встает про переключение между этими окнами...
и дело не в прототипе скорее всего... попробуй сделать на окне без атрибута MDI...
Все сайты закрыты...
- Admin
- Администратор
- Сообщения: 3963
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 29 раз
- Поблагодарили: 22 раза
- Контактная информация:
Re: Полупрозрачность фона
Смотрим прикрепленный файлmuskin писал(а):Помогите правильно описать прототип вызываемой функции.
- Вложения
-
- trn.zip
- Transparent
- (43.47 КБ) 194 скачивания
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Re: Полупрозрачность фона
Спасибо Admin-у за шаблон.
Из шаблона взял все, что мне нужно, НО... с окнами MDI все эти Microsoft-овские штуки не работают (указано даже в шаблоне).
Любой тип окна, исключая MDI, - все нормально, и прозрачность, какую задал, и плавные открытия и закрытия как у Picasa, - одним словом - то, что хотел.
Но вот MDI? Не пойму, а чем эти окна с точки зрения транспарентности отличаюся от других?
А дальше бы плясал от координат всех открытых окон, координат клика мышки и от фокусов окон.
Проштудировал весь Help VStudio-2008, но на счет связи Child-окон и функции SetLayeredWindowAttributes не нашел ответа. А может я невнимателен.
Спасибо за советы и поддержку от StillZero и Admin-а.
И еще.
Наверняка Admin просмотрит этот ответ. Не хочу открывать новую тему по пустяковому вопросу, но если Admin сможет ответить на вопрос и сказать как -"я могу скачать весь форум и просматривать его в off-line (у меня коммутируемое соединение через модем, но у брата могу скачать любое кол-во Гигабайт)" - я был бы ему благодарен.
Из шаблона взял все, что мне нужно, НО... с окнами MDI все эти Microsoft-овские штуки не работают (указано даже в шаблоне).
Любой тип окна, исключая MDI, - все нормально, и прозрачность, какую задал, и плавные открытия и закрытия как у Picasa, - одним словом - то, что хотел.
Но вот MDI? Не пойму, а чем эти окна с точки зрения транспарентности отличаюся от других?
А дальше бы плясал от координат всех открытых окон, координат клика мышки и от фокусов окон.
Проштудировал весь Help VStudio-2008, но на счет связи Child-окон и функции SetLayeredWindowAttributes не нашел ответа. А может я невнимателен.
Спасибо за советы и поддержку от StillZero и Admin-а.
И еще.
Наверняка Admin просмотрит этот ответ. Не хочу открывать новую тему по пустяковому вопросу, но если Admin сможет ответить на вопрос и сказать как -"я могу скачать весь форум и просматривать его в off-line (у меня коммутируемое соединение через модем, но у брата могу скачать любое кол-во Гигабайт)" - я был бы ему благодарен.
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
- Admin
- Администратор
- Сообщения: 3963
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 29 раз
- Поблагодарили: 22 раза
- Контактная информация:
Re: Полупрозрачность фона
Смотрим в сторону программ типа Teleport или Offline Browsermuskin писал(а):Наверняка Admin просмотрит этот ответ. Не хочу открывать новую тему по пустяковому вопросу, но если Admin сможет ответить на вопрос и сказать как -"я могу скачать весь форум и просматривать его в off-line (у меня коммутируемое соединение через модем, но у брата могу скачать любое кол-во Гигабайт)" - я был бы ему благодарен.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса