Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Как узнать поддерживает ли виндос Alpha?


Автор: WaReZMEN 31.3.2008, 00:59
Как узнать поддерживает ли текущая винда AlphaBlend? И если вдрук не поддерживает то как программа себя поведет?

Автор: Rrader 31.3.2008, 02:58
Посмотри, как это в VCL сделано:
Код

Type
  TSetLayeredWindowAttributes = Function (Hwnd: THandle; crKey: COLORREF;
    bAlpha: Byte; dwFlags: DWORD): Boolean; Stdcall;

Var
  SetLayeredWindowAttributes: TSetLayeredWindowAttributes = NIL;
...

Procedure InitProcs;
Const
  sUser32 = 'User32.dll';
Var
  ModH: HMODULE;
Begin
  ModH := GetModuleHandle(sUser32);
  If ModH <> 0 Then
     @SetLayeredWindowAttributes := GetProcAddress(ModH, 'SetLayeredWindowAttributes');
End;

А здесь идет присвоение AlphaBlend:
Код

Procedure TCustomForm.SetLayeredAttribs;
Const
  cUseAlpha: array [Boolean] of Integer = (0, LWA_ALPHA);
  cUseColorKey: array [Boolean] of Integer = (0, LWA_COLORKEY);
Var
  AStyle: Integer;
Begin
  If Not (csDesigning in ComponentState) And
    (Assigned(SetLayeredWindowAttributes)) And HandleAllocated Then
  Begin
    ...
  End;
End;

Если система не поддерживает AlphaBlend, то просто ничего не произойдет. 

Автор: WaReZMEN 31.3.2008, 06:35
Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)