Полупрозрачность фона

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
muskin
Активист
Сообщения: 114
Зарегистрирован: 08 Декабрь 2009, 21:16
Откуда: РК

Полупрозрачность фона

Сообщение muskin »

Ver 6.0(ABC)

Приветствую всех членов CLAнклава.
Вопрос к мэтрам Clariona -как можно сделать любое вызываемое окно (Browse или Form) непрозрачным к остальному полупрозрачному фону, по аналогии с просмотрщиком графических файлов Picasa от Google, т.е. появляется форма ввода или список на переднем плане, а остальное на заднем фоне в полупрозразчном виде (концентрация внимания и отличная визуализация)? - Программа преобрела бы совсем другой статус.
Дайте нужное направление для dribblinga.
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Re: Полупрозрачность фона

Сообщение StillZero »

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

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: Полупрозрачность фона

Сообщение Admin »

SetLayeredWindowAttributes делает прозрачным окно а не весь фон (AppFrame) программы под окном...
Так что не совсем то.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
muskin
Активист
Сообщения: 114
Зарегистрирован: 08 Декабрь 2009, 21:16
Откуда: РК

Re: Полупрозрачность фона

Сообщение muskin »

Admin все понял, смотрел я все эти функции в Visual Studio, но ни одна не подходит - а если какой-то handle рабочего стола вместе с открытыми окнами?
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Re: Полупрозрачность фона

Сообщение StillZero »

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

Код: Выделить всё

HWND GetDesktopWindow(VOID);

BOOL EnumChildWindows(
    HWND hWndParent,
    WNDENUMPROC lpEnumFunc,
    LPARAM lParam
);
... и сделайте все окна полупрозрачными, а активное не делайте...

зы
попробовал... какая то херня с дочерними окнами, впрочем как обычно :) а с SDI все ок
Все сайты закрыты...
Аватара пользователя
muskin
Активист
Сообщения: 114
Зарегистрирован: 08 Декабрь 2009, 21:16
Откуда: РК

Re: Полупрозрачность фона

Сообщение muskin »

А какая нужна картинка?
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Re: Полупрозрачность фона

Сообщение StillZero »

muskin писал(а):А какая нужна картинка?
как оно выглядит
Все сайты закрыты...
Аватара пользователя
muskin
Активист
Сообщения: 114
Зарегистрирован: 08 Декабрь 2009, 21:16
Откуда: РК

Re: Полупрозрачность фона

Сообщение muskin »

Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Re: Полупрозрачность фона

Сообщение StillZero »

совсем не так представлял... по взрослому, полагаю, никто не сделает ибо http://rsdn.ru/forum/usability/3324030.aspx
приколхозить фичу ... хз...
Все сайты закрыты...
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Re: Полупрозрачность фона

Сообщение StillZero »

вопрос еще возник... приложение, стартануто два дочерних окна, переключаемся по Ctrl+F6 между ними... какое должно быть поведение?

а то мне тут со стороны говорят, что так делают для модального окна, то бишь для одного... а для модального одного можно конечно реализовать
Все сайты закрыты...
Аватара пользователя
muskin
Активист
Сообщения: 114
Зарегистрирован: 08 Декабрь 2009, 21:16
Откуда: РК

Re: Полупрозрачность фона

Сообщение muskin »

Поведение такое -> активное окно - непрозрачное, все остальное - полупрозрачный фон.
Я тут прикинул, хотя бы реализовать все это в рамках AppFrame. Наверное проще, не замахиваться на весь DeskTop.
Перед открытием, например, Form-ы, открываю фиктивное пустое Child-окно размером на весь AppFrame:
W_Window WINDOW,AT(,,800,600),CENTER,NOFRAME,MDI
END
Затем вдогонку к открытому фиктивному окну пытаюсь применить SetLayeredWindowAttributes - никакого эффекта, фон остается по умолчанию(наверное, неправильно описал прототип функции).
Затем открываю саму форму. Все срабатывает - на сплошном белом фоне нужная форма, все остальные открытые окна - за ним.
Помогите правильно описать прототип вызываемой функции.
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Re: Полупрозрачность фона

Сообщение StillZero »

да все верно... почти
вот у тебя две формы открыты одновременно, как тогда быть с "фиктивным пустым окном"? их ведь тоже два...одно то окно по сути надо убрать, оно уже не нужно, а дальше вопрос встает про переключение между этими окнами...
и дело не в прототипе скорее всего... попробуй сделать на окне без атрибута MDI...
Все сайты закрыты...
Аватара пользователя
Admin
Администратор
Сообщения: 3963
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 29 раз
Поблагодарили: 22 раза
Контактная информация:

Re: Полупрозрачность фона

Сообщение Admin »

muskin писал(а):Помогите правильно описать прототип вызываемой функции.
Смотрим прикрепленный файл
Вложения
trn.zip
Transparent
(43.47 КБ) 194 скачивания
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
muskin
Активист
Сообщения: 114
Зарегистрирован: 08 Декабрь 2009, 21:16
Откуда: РК

Re: Полупрозрачность фона

Сообщение muskin »

Спасибо Admin-у за шаблон.
Из шаблона взял все, что мне нужно, НО... с окнами 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: Полупрозрачность фона

Сообщение Admin »

muskin писал(а):Наверняка Admin просмотрит этот ответ. Не хочу открывать новую тему по пустяковому вопросу, но если Admin сможет ответить на вопрос и сказать как -"я могу скачать весь форум и просматривать его в off-line (у меня коммутируемое соединение через модем, но у брата могу скачать любое кол-во Гигабайт)" - я был бы ему благодарен.
Смотрим в сторону программ типа Teleport или Offline Browser
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить