Главная страница
    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.043 c
14-1126789705
Igorek
2005-09-15 17:08
2005.10.23
Журнал "Хакер"


2-1128091505
kreyl
2005-09-30 18:45
2005.10.23
Подскажите, пожалуйста, про диалоговое окно


3-1126681668
BorisMor
2005-09-14 11:07
2005.10.23
Надежность пароля к базам Access


3-1126531368
Os
2005-09-12 17:22
2005.10.23
Зеркало базы


4-1124138161
ronyn
2005-08-16 00:36
2005.10.23
Net Send по заданному адресу





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский