Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Прозрачность

404
28 января 2004 года
GooD
108 / / 04.12.2003
Доброго времени суток!

У меня возник такой вопрос:
Можно ли сделать форму прозрачной зная только её Handle???

Заранее благодарю!
1.9K
29 января 2004 года
AviDen
91 / / 26.12.2003
Цитата:
Originally posted by GooD
Доброго времени суток!

У меня возник такой вопрос:
Можно ли сделать форму прозрачной зная только её Handle???

Заранее благодарю!



Конечно, но только под win2k/winxp.

См. в MSDE SetLayeredWindowAttributes.

В Delphi эта функция не импортируется, тебе придется самому ее описать как External.

404
01 февраля 2004 года
GooD
108 / / 04.12.2003
Цитата:
Originally posted by AviDen


Конечно, но только под win2k/winxp.

См. в MSDE SetLayeredWindowAttributes.

В Delphi эта функция не импортируется, тебе придется самому ее описать как External.



А если ALPHABlend равен False???

1.9K
02 февраля 2004 года
AviDen
91 / / 26.12.2003
Цитата:
Originally posted by GooD


А если ALPHABlend равен False???



Ну и ничего страшного - ты попробуй!

Const
LWA_COLORKEY = $00000001;
LWA_ALPHA = $00000002;
WS_EX_LAYERED = $00080000;

Function SetLayeredWindowAttributes(hwnd: HWND; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): BOOL; Stdcall; External 'User32.dll';

Procedure TForm1.Button1Click(Sender: TObject);
Begin
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) Or WS_EX_LAYERED);
SetLayeredWindowAttributes(Handle, 0, 128, LWA_ALPHA);
End;

404
03 февраля 2004 года
GooD
108 / / 04.12.2003
Цитата:
Originally posted by AviDen


Ну и ничего страшного - ты попробуй!

Const
LWA_COLORKEY = $00000001;
LWA_ALPHA = $00000002;
WS_EX_LAYERED = $00080000;

Function SetLayeredWindowAttributes(hwnd: HWND; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): BOOL; Stdcall; External 'User32.dll';

Procedure TForm1.Button1Click(Sender: TObject);
Begin
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) Or WS_EX_LAYERED);
SetLayeredWindowAttributes(Handle, 0, 128, LWA_ALPHA);
End;



Спасибо AviDen!!!:) Работает на УРА!!!:)

1.9K
03 февраля 2004 года
AviDen
91 / / 26.12.2003
Цитата:
Originally posted by GooD


Спасибо AviDen!!!:) Работает на УРА!!!:)



Всегда пожалуйста. Только запустить такую прилогу на ОС ниже, чем Win2K не получится - будет ошибка при загрузке, что-то типа "не найдена функция SetLayeredWindowAttributes в библиотеке User32.dll".

Если все же надо - то не импортируй функцию жестко (External), а обьяви переменную процедурного типа (точно такую же, как в примере) и после старта проги инициализируй ее адресом функции, если она доступна. Если нет - ничего не делай.

Адрес получить легко:

h:= LoadLibrary('user32.dll');
addr:= GetProcAddress (h, 'SetLayeredWindowAttributes');

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог