Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];

Вниз

Прозрачность в 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.041 c
14-1128167883
Softwood inc.
2005-10-01 15:58
2005.10.23
ProgDVB


14-1128410907
Антоний
2005-10-04 11:28
2005.10.23
Соотношение шфрита и мм.


5-1104426662
Stanislav_SM
2004-12-30 20:11
2005.10.23
Отображение события в инспекторе объектов


8-1117266368
MaFon
2005-05-28 11:46
2005.10.23
Здесь была тема про детектор движения.


14-1128316417
Ega23
2005-10-03 09:13
2005.10.23
С днем рождения! 2 октября





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский