![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
прозрачность в win2k [D5, Win2k]
Vladimir Bolotin © (2002-01-10 20:33:00)Где можно прочитать про SetLayeredWindowAttributes? В старых
win32 API Reference и в 6м MSDNe эта АПИ-функция еще не описана.. :(
Olgerd (2002-02-20 17:16:00) [1]Посмотри прогу Window Manipulator.
http://freeware.ru/program.pl?prog_id=3755
Могу исхи подкинуть.
VuDZ (2002-02-20 12:46:00) [2]надо делать примерно так:
LONG l = GetWindowLong(hwnd, GWL_EXSTYLE);
l = l | WS_EX_LAYERED; // логиеское ИЛИ
SetWindowLong(hwnd, GWL_EXSTYLE, l);
SetLayeredWindowAttributes(hwnd, 0, it->second, LWA_ALPHA);
[NIKEL] (2002-02-20 11:07:00) [3]В Windows2000 есть для этого ф-я SetLayeredWindowAttributes, вот пример её использования:
unit Win2k;
interface
uses Graphics, Windows;
function SetLayeredWindowAttributes(
hwnd : HWND; // handle to the layered window
crKey : TColor; // specifies the color key
bAlpha : byte; // value for the blend function
dwFlags : DWORD // action
): BOOL; stdcall;
function SetLayeredWindowAttributes; external "user32.dll";
implementation
end.
program WinLayer;
uses
Windows, SysUtils,
Win2k in "Win2k.pas";
const
WS_EX_LAYERED= $80000;
LWA_COLORKEY = 1;
LWA_ALPHA = 2;
var
Hndl : THandle;
Transp : Byte;
begin
Writeln("Windows2000 Layer <- build by AK ->");
Writeln(" Usage: WINLAYER.EXE [window name] [Transp (0-255)]");
Writeln(" Example: WINLAYER "Calculator" 200");
Writeln;
if ParamCount <> 2 then exit;
Hndl := FindWindow(nil, PChar(ParamStr(1)));
Transp := StrToIntDef(ParamStr(2), 128);
if SetWindowLong(Hndl, GWL_EXSTYLE, GetWindowLong(Hndl, GWL_EXSTYLE) or WS_EX_LAYERED) = 0 then
Writeln("Error !");
if not SetLayeredWindowAttributes(Hndl, 0, Transp, LWA_ALPHA) then
// ^^^ степень прозрачности
// 0 - полная прозрачность
// 255 - полная непрозрачность
Writeln("Error !");
end.
Andrew! (2002-02-20 10:58:00) [4]А примерчик кто-нибудь может скинуть, а то у меня работа с этой функцией не получается, она просто игнорируется.
Vladimir Bolotin (2002-01-11 00:38:00) [5]Спасибо большое!
Макс Черных (2002-01-10 21:12:00) [6]Вроде бы http://msdn.microsoft.comеще не закрыли :)