Попытаюсь примерами "подогреть" интерес к NSIS
System Plug-in и в частности к функции
CreateWindowEx .
Пример 1 :
Создаём на странице окно и помещаем в это окно WebBrowser :
(можно просматривать страницы, как в интернете, так и локально обычные htm html )
Код:
!AddPluginDir ".\"
!include MUI2.nsh
Page custom fnc_Create
;!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
Name "test2_CreateWindowEx"
Caption "test2 CreateWindowEx"
OutFile "test2_CreateWindowEx.exe"
Var dlg
Function fnc_Create
nsDialogs::Create 1018
Pop $dlg
System::Call `*(i,i,i,i)i(1,34,200,100).R0`
System::Call `user32::MapDialogRect(i$HWNDPARENT,iR0)`
System::Call `*$R0(i.s,i.s,i.s,i.s)`
System::Free $R0
FindWindow $R0 "#32770" "" $HWNDPARENT
System::Call `user32::CreateWindowEx(i,t"STATIC",in,i${DEFAULT_STYLES}|${SS_GRAYFRAME},i1,i1,i400,i200,iR0,i1100,in,in)i.R0`
WebCtrl::ShowWebInCtrl $R0 "http://www.google.ru"
;или
;WebCtrl::ShowWebInCtrl $R0 "$EXEDIR\index.htm"
nsDialogs::Show
FunctionEnd
Section
SectionEnd
Коротко, что для чего :
Функция
CreateWindowEx создает разнообразные окна с расширенным стилем для разнообразных объектов.
"STATIC" - (статический элемент) Обозначает простое
текстовое поле, окно или прямоугольник, используемый для надписей, окно или другие отдельные органы управления.
Координаты и размеры окна в данном примере, меняются в значениях - i1,i1,i400,i200
Стиль прямоугольника окна можно изменять (в примере это ${SS_GRAYFRAME} Наглядно видно что происходит, если менять например, на SS.BLACKRECT , SS_GRAYRECT и т.д. ,
не подгружая WebCtrl ),
Можно задавать тип объекта (создать кнопку, чекбокс, тултип, картинку, область текста и др.. )
Функция
MapDialogRect конвертирует (преобразует) заданные единицы измерения диалогового окна - в экранные единицы (пиксели).
Команда WebCtrl:: работает со специальной DLL (это модернизированный nsWeb плагин )