![]() |
|
|
|
|
#1
|
||||
|
||||
|
Ув. Программисты
. Помоги мне сдлеать форму прозрачнуюВообщем есть Form1 , На ней очень много визуальных объектов. Беда лишь в одном. Форма прозрачная а объекты нет. Если можно то подкиньте функцию. Что то типа : Код:
function Trans( СилаПрозрачности : byte , КакуюФорму : String ); begin ?????? end; |
|
#2
|
||||
|
||||
|
У формы есть свойства AlphaBlend и AlphaBlendValue (точно не помню, поправьте если что). Первое ставишь True, второе собсно коэффициент прозрачности от 0 до 255. Работает только под Win 2k\XP. Насчет Висты не знаю.
|
|
#3
|
||||
|
||||
|
Переводил из асма, мог ошибиться:
Код:
var
pSLWA: Double;
hHandle: THandle;
begin
//... тут добавляем к стилю окна WS_EX_LAYERED
hHandle := GetModuleHandleA('User32.dll');
pSLWA := GetProcAddress(hHandle,'SetLayeredWindowAttributes');
asm
push LMA_ALPHA
push 240 // это уровень непрозрачности
push 0
push hWin
call pSLWA
end;А вот оригинал (MASM), на всяк случай: Код:
invoke GetWindowLongA,hWin,GWL_EXSTYLE
or eax,WS_EX_LAYERED
invoke SetWindowLongA,hWin,GWL_EXSTYLE,eax
invoke GetModuleHandleA,ADDR User32
invoke GetProcAddress,eax,ADDR SLWA
mov pSLWA,eax
push LMA_ALPHA
push 240
push 0
push hWin
call pSLWA |
|
#4
|
||||
|
||||
|
Цитата:
А как добавить WS_EX_LAYERED ??? ![]() |
|
#5
|
||||
|
||||
|
X-rem
написано же на масме как ![]() мысленно конвертим в делфи: Код:
SetWindowLong(Form1.Handle,GWL_EXSTYLE,GetWindowLong(Form1.Handle,GWL_EXSTYLE) or WS_EX_LAYERED); ![]() |
|
#6
|
||||
|
||||
|
Спс народ . Проблема решена. zip000 Thanks вери мачь
.Жаль что сразу не использовал его вариант. |