I think you didn't forget my first request Translucent UI.В свободное время я переписываю ISSprite. Точнее пишу с нуля. Там будет другой движок и немного другая идеология. Постараюсь сохранить совместимость с текущей версией.
Собственно возник вопрос - какие дополнительные функции и возможности вам требуются?
А что ты подразумеваешь под "добавить поддержку fluent design"?@Shegorat, всё же как по мне, так лучше стоит добавить уже поддержку Fluent Design. Ибо отрисовка спрайтами устарела давно.
Yes, i remember your request.I think you didn't forget my first request Translucent UI.
Blur the particular area(Used as background for texts labels).
+
Like as always library size < 50Kb{If Possible}.
А смысл её скрывать? Так хотя бы будет интерес к ней, и развитие. Иначе проект зависнет, как это было со многими проектами группыДа и я думал что новая библиотека, станет эксклюзивом для RG Revenants, но раз так то очень круто...
Я верю, что ты сделаешь лучше, я ждуВ свободное время я переписываю ISSprite. Точнее пишу с нуля. Там будет другой движок и немного другая идеология. Постараюсь сохранить совместимость с текущей версией.
Собственно возник вопрос - какие дополнительные функции и возможности вам требуются?
@Shegorat , kindly give me a example code for creating the check box using issprite(ver 0.0.7.46 build 27), exactly like setup.exe in mega (ie.checkbox checked when we clicking the box icon or its description.).Вот что эта либа умеет
https://mega.nz/#!SNsCVaQb!m9s6cakxiiia7VPwPn5Mwuli3Zzsc3ID8KNpkh-kDtA
hTask:= spBtnCreateButton(WizardForm.Handle, ExpandConstant('{tmp}\checkbox1.png'), ScaleX(40), ScaleY(245), ScaleX(256), ScaleY(13), BTN_CHECKBOXEX, 0);
spBtnSetText(hTask, CustomMessage('TaskInstallSoft'));
spBtnSetFontColor(hTask, $FFFFFF, clSilver, $9F0B1A, clGray);
spBtnSetEvent(hTask, btnMouseClickEvent, WrapButtonProc(@BtnEvents, 1));
hTask:= spBtnCreateButton(WizardForm.Handle, 'CheckBox.png', ScaleX(40), ScaleY(245), ScaleX(256), ScaleY(12), BTN_CHECKBOX, 0);
[Setup]
AppName=MyApp
AppVername=MyApp
CreateAppDir=no
[Modules]
#include "Modules\ISSprite.iss"
[Files]
Source: "Files\*"; Flags: dontcopy;
[Code]
const
GWL_WNDPROC = -4;
DWL_DLGPROC = 4;
GWL_USERDATA = -21;
//
WM_LBUTTONDOWN = $201;
WM_SYSCOMMAND = $0112;
WM_MAGIC_MOVE = $F012;
type
TNewWndProc = function(Handle: HWND; Msg, wParam, lParam: LongInt): LongInt;
function WrapCallBackAddr(callback: TNewWndProc; ParamCount: Integer): LongWord; external 'wrapcallbackaddr@{tmp}\CallbackCtrl.dll stdcall delayload';
function GetWindowLong(hWnd: HWND; nIndex: Integer): LongInt; external 'GetWindowLongA@user32.dll stdcall';
function CallWindowProc(lpPrevWndFunc: LongInt; hWnd: HWND; Msg: UINT; wParam: LongInt; lParam: LongInt): LongInt; external 'CallWindowProcA@user32.dll stdcall';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: LongInt): LongInt; external 'SetWindowLongA@user32.dll stdcall';
function ReleaseCapture: LongInt; external 'ReleaseCapture@user32.dll stdcall';
var
Test: TForm;
btnTest,btn1: HWND;
imgTest,img1: LongWord;
Label1: TLabel;
CusPNL: TPanel;
procedure btnOnClick(hWnd: HWND);
begin
Test.Close;
end;
function DragForm(Handle: HWND; Msg, wParam, lParam: LongInt): LongInt;
begin
case Msg of
WM_LBUTTONDOWN: begin
Result:=CallWindowProc(GetWindowLong(Handle, GWL_USERDATA), Handle, Msg, wParam, lParam);
ReleaseCapture; SendMessage(Handle, WM_SYSCOMMAND, WM_MAGIC_MOVE, 0);
end;
else Result:=CallWindowProc(GetWindowLong(Handle, GWL_USERDATA), Handle, Msg, wParam, lParam);
end;
end;
function InitializeSetup: Boolean;
begin
//
ExtractTemporaryFile('ISSprite.dll');
//
spInitialize(True, True);
//
Test:=TForm.Create(nil);
with Test do begin
BorderStyle:=bsNone;
SetBounds(ScaleX(0), ScaleY(0), ScaleX(680), ScaleY(360));
Position:=poScreenCenter;
SetWindowLong(Handle, GWL_USERDATA, GetWindowLong(Handle, GWL_WNDPROC));
SetWindowLong(Handle, GWL_WNDPROC, WrapCallBackAddr(@DragForm, DWL_DLGPROC));
//
#ifdef IS_ENHANCED
imgTest:=spImgLoadImageFromBuffer(Handle, 'Fon.png', ScaleX(0), ScaleY(0), ScaleX(680), ScaleY(360), False, True);
#else
imgTest:=spImgLoadImage(Handle, 'Fon.png', ScaleX(0), ScaleY(0), ScaleX(680), ScaleY(360), False, True);
#endif
//
#ifdef IS_ENHANCED
btnTest:=spBtnCreateButtonFromBuffer(Handle, 'Button.png', ScaleX(0){290}, ScaleY(315), ScaleX(65), ScaleY(22), Btn_BUTTON, 0);
#else
btnTest:=spBtnCreateButton(Handle, 'Button.png', ScaleX(290), ScaleY(315), ScaleX(65), ScaleY(22), Btn_BUTTON, 0);
#endif
spBtnSetEvent(btnTest, BtnMouseClick, @btnOnClick);
spBtnSetFontColor(btnTest, clBlack, clGreen, clYellow, clBlack);
spBtnSetText(btnTest, 'Exit');
//
spApplyChanges(Handle);
spImgCreateFormFromImage(Handle, imgTest, True);
//
{ Label1 }
Label1 := TLabel.Create(Test);
with Label1 do
begin
Parent := Test;
Caption := 'Test Label';
//Color := clFuchsia;
Font.Color := clred;
Font.Height := -21;
Font.Name := 'Tahoma';
Font.Style := [];
ParentColor := False;
ParentFont := False;
Left := ScaleX(36);
Top := ScaleY(184);
Width := ScaleX(95);
Height := ScaleY(25);
end;
CusPNL := TPanel.Create(Test);
with CusPNL do
begin
Parent := Test;
SetBounds(ScaleX(0), ScaleY(20), Test.Width, Test.Height-ScaleY(100));
img1:= spImgLoadImage(CusPNL.Handle, 'Fon.png', ScaleX(0), ScaleY(-20), CusPNL.Width+ScaleX(0),CusPNL.Height+ScaleY(0),False,True);
btn1:= spBtnCreateButton(CusPNL.Handle, 'Button.png',0,0,116,32, $20, 0);
spApplyChanges(CusPNL.handle);
end;
Label1.Show;
ShowModal;
spShutdown;
Free;
end;
end;
[Setup]
AppName=MyApp
AppVername=MyApp
CreateAppDir=no
OutputDir=.
[Modules]
#include "Modules\ISSprite.iss"
[Files]
Source: "Files\*"; Flags: dontcopy;
[Code]
const
GWL_WNDPROC = -4;
DWL_DLGPROC = 4;
GWL_USERDATA = -21;
//
WM_LBUTTONDOWN = $201;
WM_SYSCOMMAND = $0112;
WM_MAGIC_MOVE = $F012;
type
TNewWndProc = function(Handle: HWND; Msg, wParam, lParam: LongInt): LongInt;
function WrapCallBackAddr(callback: TNewWndProc; ParamCount: Integer): LongWord; external 'wrapcallbackaddr@{tmp}\CallbackCtrl.dll stdcall delayload';
function GetWindowLong(hWnd: HWND; nIndex: Integer): LongInt; external 'GetWindowLongA@user32.dll stdcall';
function CallWindowProc(lpPrevWndFunc: LongInt; hWnd: HWND; Msg: UINT; wParam: LongInt; lParam: LongInt): LongInt; external 'CallWindowProcA@user32.dll stdcall';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: LongInt): LongInt; external 'SetWindowLongA@user32.dll stdcall';
function ReleaseCapture: LongInt; external 'ReleaseCapture@user32.dll stdcall';
var
Test: TForm;
btnTest,btn1: HWND;
imgTest,img1: LongWord;
Label1: TLabel;
CusPNL: TPanel;
procedure btnOnClick(hWnd: HWND);
begin
Test.Close;
end;
function DragForm(Handle: HWND; Msg, wParam, lParam: LongInt): LongInt;
begin
case Msg of
WM_LBUTTONDOWN: begin
Result:=CallWindowProc(GetWindowLong(Handle, GWL_USERDATA), Handle, Msg, wParam, lParam);
ReleaseCapture; SendMessage(Handle, WM_SYSCOMMAND, WM_MAGIC_MOVE, 0);
end;
else Result:=CallWindowProc(GetWindowLong(Handle, GWL_USERDATA), Handle, Msg, wParam, lParam);
end;
end;
function InitializeSetup: Boolean;
begin
//
ExtractTemporaryFile('ISSprite.dll');
//
spInitialize(True, True);
//
Test:=TForm.Create(nil);
with Test do begin
BorderStyle:=bsNone;
SetBounds(ScaleX(0), ScaleY(0), ScaleX(680), ScaleY(360));
Position:=poScreenCenter;
SetWindowLong(Handle, GWL_USERDATA, GetWindowLong(Handle, GWL_WNDPROC));
SetWindowLong(Handle, GWL_WNDPROC, WrapCallBackAddr(@DragForm, DWL_DLGPROC));
//
#ifdef IS_ENHANCED
imgTest:=spImgLoadImageFromBuffer(Handle, 'Fon.png', ScaleX(0), ScaleY(0), ScaleX(680), ScaleY(360), False, True);
#else
imgTest:=spImgLoadImage(Handle, 'Splash.png', ScaleX(0), ScaleY(0), ScaleX(680), ScaleY(360), False, True);
#endif
//
#ifdef IS_ENHANCED
btnTest:=spBtnCreateButtonFromBuffer(Handle, 'button.png', ScaleX(0){290}, ScaleY(315), ScaleX(65), ScaleY(22), Btn_BUTTON, 0);
#else
btnTest:=spBtnCreateButton(Handle, 'button.png', ScaleX(290), ScaleY(315), ScaleX(65), ScaleY(22), Btn_BUTTON, 0);
#endif
spBtnSetEvent(btnTest, BtnMouseClick, @btnOnClick);
spBtnSetFontColor(btnTest, clBlack, clGreen, clYellow, clBlack);
spBtnSetText(btnTest, 'Exit');
//
spApplyChanges(Handle);
spImgCreateFormFromImage(Handle, imgTest, True);
//
{ Label1 }
Label1 := TLabel.Create(Test);
with Label1 do
begin
Parent := Test;
Caption := 'Test Label';
//Color := clFuchsia;
Font.Color := clred;
Font.Height := -21;
Font.Name := 'Tahoma';
Font.Style := [];
ParentColor := False;
ParentFont := False;
Left := ScaleX(36);
Top := ScaleY(184);
Width := ScaleX(95);
Height := ScaleY(25);
end;
CusPNL := TPanel.Create(Test);
with CusPNL do
begin
Parent := Test;
SetBounds(ScaleX(0), ScaleY(20), Test.Width, Test.Height-ScaleY(100));
img1:= spImgLoadImage(CusPNL.Handle, 'fon.png', ScaleX(0), ScaleY(-20), CusPNL.Width+ScaleX(0),CusPNL.Height+ScaleY(0),False,True);
btn1:= spBtnCreateButton(CusPNL.Handle, 'Button.png',0,0,116,32, $20, 0);
spApplyChanges(CusPNL.handle);
end;
ShowModal;
SetWindowLong(Test.Handle, GWL_WNDPROC, GetWindowLong(Test.Handle, GWL_USERDATA));
Free;
end;
spShutdown;
end;
Ммм, нет, через WinApi получится поменять прозрачность только для всего контейнера. Текст неоконныё объект, рисуется на канве формы. А функцию для задания альфы я в текущей версии не добавлял.Доброго времени, может кто знает, есть ли возможность задать прозрачность для текста (Shd) созданного через ISSprite посредством WinApi. При создании TABCntroll получается применить прозрачность для Img и контейнера, а для Shd текста нет. Подскажите в какую сторону рыть, вроде текст рисуется через DrawTextA или нет...
procedure spInitialize(nUseLogicPixels: Boolean; nUseSmartPaint: Boolean); external 'spInitialize@{tmp}\ISSprite.dll stdcall delayload';
use the transparent image as button background,and apply the spBtnSetTransparent function to get transparent label.(cosmetic)Доброго времени, может кто знает, есть ли возможность задать прозрачность для текста (Shd) созданного через ISSprite посредством WinApi. При создании TABCntroll получается применить прозрачность для Img и контейнера, а для Shd текста нет. Подскажите в какую сторону рыть, вроде текст рисуется через DrawTextA или нет...Посмотреть вложение 5336