Оказывается, умельцы с форума winamp.com смогли приспособить известную в Inno Setup, оформительскую
botva2.dll для NSIS.
Примечательно, что для оформления, к примеру, кнопки, код занимает по сути, всего одну строку ! В отличии от загородки из кучи кода в NSIS...
Код:
![Выделить весь код](images/misc/selectcode.png)
!include "MUI2.nsh"
Page custom custom.Create
!insertmacro MUI_LANGUAGE "English"
OutFile Test_botva2dll.exe
Function custom.Create
nsDialogs::Create 1018
Pop $0
InitPluginsDir
File /oname=$PLUGINSDIR\botva2.dll botva2.dll
File /oname=$PLUGINSDIR\Google.png Google.png
System::Call "botva2::BtnCreate(ir0,i0,i0,i157,i15,t'$PLUGINSDIR\Google.png',i0,i0)i.R0"
nsDialogs::Show
FunctionEnd
/*
;Functions declaration in Inno Setup Script
botva2::BtnCreate(hParent:HWND; Left,Top,Width,Height:integer; FileName:PAnsiChar; ShadowWidth:integer; IsCheckBtn:boolean):HWND;
botva2::BtnGetChecked(h:HWND):boolean;
botva2::BtnGetEnabled(h:HWND):boolean;
botva2::BtnGetPosition
botva2::BtnGetText
botva2::BtnGetVisibility
botva2::BtnRefresh(h:HWND);
botva2::BtnSetChecked(h:HWND; Value:boolean);
botva2::BtnSetCursor(h:HWND; hCur:Cardinal);
botva2::BtnSetEnabled(h:HWND; Value:boolean);
botva2::BtnSetEvent(h:HWND; EventID:integer; Event:Longword);
botva2::BtnSetFont(h:HWND; Font:Cardinal);
botva2::BtnSetFontColor(h:HWND; NormalFontColor, FocusedFontColor, PressedFontColor, DisabledFontColor: Cardinal);
botva2::BtnSetPosition(h:HWND; NewLeft, NewTop, NewWidth, NewHeight: integer);
botva2::BtnSetText(h:HWND; Text:PAnsiChar);
botva2::BtnSetTextAlignment(h:HWND; HorIndent, VertIndent:integer; Alignment:DWORD);
botva2::BtnSetVisibility(h:HWND; Value:boolean);
botva2::GetSysCursorHandle(id:integer):Cardinal;
botva2::ImgApplyChanges(h:HWND);
botva2::ImgGetVisibility(img:Longint):boolean;
botva2::ImgLoad(Wnd :HWND; FileName :PAnsiChar; Left, Top, Width, Height :integer; Stretch, IsBkg :boolean) :Longint;
botva2::ImgRelease(img :Longint);
botva2::ImgSetPosition(img :Longint; NewLeft, NewTop, NewWidth, NewHeight :integer);
botva2::ImgSetVisibility(img :Longint; Visible :boolean);
botva2::gdipShutdown();
*/
Section
SectionEnd
Как бы использовать ВСЕ возможности этой DLL в NSIS ? Тут нужны спецы по API... Может помогут расшифровать эту DLL и показать на примерах её прочие возможности...
И , конечно здорово было бы иметь подобную DLL, заточенную конкретно под NSIS... Почему то никто до сих пор не сделал такой замечательной полезности ...