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

Вниз

Прозрачность в TglListBox (class(TCustomListBox))   Найти похожие ветки 

 
Kripton   (2005-08-19 05:57) [0]

Извините, это опять я.
Сначала приведу код. Ненужное удалено.

unit Unit1;

interface

uses

const
 cUseAlpha: array [Boolean] of Integer = (0, LWA_ALPHA);
 cUseColorKey: array [Boolean] of Integer = (0, LWA_COLORKEY);
 sUser32 = "User32.dll";

private
   SetLayeredWindowAttributes: TSetLayeredWindowAttributes;
   ModH : HMODULE;
   Style: integer;
   название процедуры;

type
 TSetLayeredWindowAttributes = function (Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; stdcall;

procedure TForm1.SetTransparentWindow(WND: HWND; AlphaBlend,
 TransparentColor: boolean; AlphaBlendValue: byte;
 TransparentColorValue: integer);
begin
ModH := GetModuleHandle(sUser32);
if ModH <> 0 then
 begin
 @SetLayeredWindowAttributes := GetProcAddress(ModH, "SetLayeredWindowAttributes");
 Style := GetWindowLong(WND, GWL_EXSTYLE);
 if AlphaBlend or TransparentColor then
   begin
   if (Style and WS_EX_LAYERED) = 0 then
     begin
      SetWindowLong(WND, GWL_EXSTYLE, Style or WS_EX_LAYERED);
      SetLayeredWindowAttributes(WND, TransparentColorValue, AlphaBlendValue,
      cUseAlpha[AlphaBlend] or cUseColorKey[TransparentColor]);
     end;
   end
 else
   begin
   SetWindowLong(WND, GWL_EXSTYLE, Style and not WS_EX_LAYERED);
    RedrawWindow(WND, nil, 0, RDW_ERASE or RDW_INVALIDATE or RDW_FRAME or RDW_ALLCHILDREN);
   end;
 end;
end;

Если кто-нибудь работал с этим, то очень прошу помочь. Когда я применяю данную процедуру, то пишу в FormShow
SetTransparentWindow(Listbox1.Handle,True,False,170,0);
Если оставить только Handle, то всё работает для всей формы со всем, что на ней находится. Объясните, пожалуйста, почему так нельзя сделать для только одного ListBox"а(TglListBox)? А как можно и можно ли?


 
alpet ©   (2005-08-19 07:10) [1]

See MSDN Layered Windows, UpdateLayeredWindow function.

"Note that WS_EX_LAYERED cannot be used for child windows"



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

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

Наверх




Память: 0.47 MB
Время: 0.053 c
10-1105916731
GanibalLector
2005-01-17 02:05
2005.10.23
между закладками ;)


4-1124656782
Шуршик
2005-08-22 00:39
2005.10.23
Взаимодействие с сервером Serv-U FTP (изменение конфига)


14-1128079411
oldman
2005-09-30 15:23
2005.10.23
Вера, Надежда, Любовь и мать их Софья.


3-1126079553
Term
2005-09-07 11:52
2005.10.23
CASE в FB1.5


8-1117526386
MrAndrey_ka
2005-05-31 11:59
2005.10.23
Прозрачность части формы