Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


Dark_Delphin,
думаю через ботву
могу предложить такой вариант на основе ...\Inno Setup 5\Scripts\WindowEffects\Transperent Color.iss

читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

[Files]
Source: "S17Logo.bmp"; Flags: dontcopy solidbreak

[ Code]
const
  TransparentPercent = 80; // процент прозрачности
  TransparentColor = $506a5a; // прозрачный цвет
  WS_EX_LAYERED = $80000;
  WS_EX_TRANSPARENT = $20;
  LWA_COLORKEY = 1;
  LWA_ALPHA = 2;
  GWL_EXSTYLE = (-20);

function SetLayeredWindowAttributes(hwnd: hWnd; crKey: TColor; bAlpha: byte; dwFlags: DWORD): Boolean; external 'SetLayeredWindowAttributes@user32.dll stdcall';
function GetWindowLong(Wnd: HWnd; Index: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';
function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';
//
type
  TANewStatic = record
    Static  : TNewStaticText;
  end;

var
  ANewStatic : array of TANewStatic;

function ReleaseCapture(): Longint; external 'ReleaseCapture@user32.dll stdcall';

procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  SendMessage(WizardForm.Handle,$0112,$F012,0)
end;

procedure AddStaticToArray(st:TNewStaticText);
var
  i:integer;
begin
  i:=GetArrayLength(ANewStatic);
  SetArrayLength(ANewStatic,i+1);
  ANewStatic[i].Static:=st;
  ANewStatic[i].Static.OnMouseDown:=@MouseDown;
end;

procedure StaticChange(c:TWinControl);
var
  i:integer;
begin
  for i:=0 to c.ControlCount-1 do
    if c.Controls[i] is TWinControl then begin
      if c.Controls[i] is TNewStaticText then AddStaticToArray(TNewStaticText(c.Controls[i]));
      if TWinControl(c.Controls[i]).ControlCount>0 then StaticChange(TWinControl(c.Controls[i]));
    end;
end;
//
procedure InitializeWizard();
begin
  with WizardForm do
  begin
    OuterNotebook.Hide;
    WizardForm.Width := ScaleX(470);
    WizardForm.Height := ScaleY(525);
    BorderStyle := bsNone;
    CancelButton.Left := ScaleX(200);
    CancelButton.Top := ScaleY(230);
  end;
  
  with TBitmapImage.Create(WizardForm) do
  begin
    Parent := WizardForm;
    Align := alClient;
    Left := ScaleX(0);
    Top := ScaleY(0);
    ExtractTemporaryFile('S17Logo.bmp');
    Bitmap.LoadFromFile(ExpandConstant('{tmp}\S17Logo.bmp'));
    OnMouseDown := @MouseDown;
  end;

  SetWindowLong(WizardForm.Handle, GWL_EXSTYLE, GetWindowLong(WizardForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED)
  SetLayeredWindowAttributes(WizardForm.Handle, TransparentColor, (255 * TransparentPercent) / 100, LWA_COLORKEY)
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  WizardForm.NextButton.Hide;
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
end;


наглядный пример в архиве
прозрачный цвет здесь
$5а6a50 (фотошоп)
$506a5a (инно)

Последний раз редактировалось Johny777, 26-03-2013 в 15:57.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:35, 12-06-2012 | #254