Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.02;
Скачать: CL | DM;

Вниз

Прозрачное окно, созданное с помощью CreateWindow   Найти похожие ветки 

 
Vulix ©   (2006-11-29 08:50) [0]

Привет всем.

Есть класс, который создает окно и пытается сделать его прозрачным :

function SetLayeredWindowAttributes(hWindow : HWND; crKey : DWORD; bAlpha : Byte; dwFlags : DWORD) : BOOL; stdcall; external user32 name "SetLayeredWindowAttributes";

...
constructor TTestButton.Create(x,y,w,h,dx,dy:integer;sHint:string;hParent:THandle);
//dx и dy нужные мне параметры, в данном случае неважны
...

initialization
ZeroMemory(@WndClass,SizeOf(TWndClassEx));
WndClass.hInstance:=HInstance;
With WndClass do
 Begin
  cbSize:=SizeOf(TWndClassEx);
  lpfnWndProc:=@TestWndProc;
  lpszClassName:="TestButtonWindow";
  hCursor:=LoadCursor(0, IDC_ARROW);
 End;
RegisterClassEx(WndClass);

в методе Create я делаю
...
Handle:=CreateWindow("TestButtonWindow",nil,WS_CHILD,x,y,w,h,Parent,0,HInstance, nil);
//где HInstance принадлежит другому (родительскому) окну
SetWindowLong(Handle,GWL_USERDATA,Integer(Self));
//ниже я пытаюсь сделать созданное окно прозачным
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(Handle, 0, Byte(100), 2);

В процедуре TestWndProc я перехватываю WM_PAINT и закрашиваю окно черным цветом. ПРи запуске, окно все черное, прозрачности не наблюдается.
Окно показываю из другого места методом ShowWindow  с параметром SW_SHOW.
Подскажите, где косяк?


 
Vulix ©   (2006-11-29 08:51) [1]

//где HInstance принадлежит другому (родительскому) окну
попровка, не HInstance, а Parent


 
Vulix ©   (2006-11-29 09:28) [2]

Странно, а почему
Handle:=CreateWindowEx(WS_EX_LAYERED,"VxButtonWindow",nil,WS_CHILD,x,y,w,h,Paren t,0,HInstance,nil);
не работает (возвращает 0), а
Handle:=CreateWindowEx(0,"VxButtonWindow",nil,WS_CHILD,x,y,w,h,Parent,0,HInstanc e,nil);
работает...


 
Vulix ©   (2006-11-29 09:53) [3]

Спасибо всем, разобрался...
"Note that WS_EX_LAYERED cannot be used for child windows."
Вот облом



Страницы: 1 вся ветка

Текущий архив: 2007.09.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
2-1186565147
russo@78
2007-08-08 13:25
2007.09.02
поблемы с подключение к Word


2-1186488500
Roun
2007-08-07 16:08
2007.09.02
Как удалить пустые строки из Memo?


15-1186394190
palva
2007-08-06 13:56
2007.09.02
Снимок дня


2-1186662007
Gamer
2007-08-09 16:20
2007.09.02
работа с Firebird из Delphi 2006


11-1168848047
MTsv DN
2007-01-15 11:00
2007.09.02
TVBeginEdit и TVEndEdit