Применеие в NSIS функции CreateWindowEx
Пример 2.
Размещение текста на странице.
Код:

StrCpy $R0 "Текст Текст Текст Текст"
FindWindow $0 "#32770" "" $HWNDPARENT
System::Call 'USER32::CreateWindowEx(i0,t "STATIC",t "$R0",i ${WS_CHILD}|${WS_VISIBLE},i140,i50,i200,i100,i $0,i222,i0,i0) $R2'
Этот пример малоинтересен для кастомной страницы, но полезен для стандартных страниц - для размещения текста в любом месте страницы.
Теперь, изменим создаваемый элемент управления (встроенного класса ) "STATIC" - на класс
"EDIT"
Цитата:
EDIT (ОКНО РЕДАКТИРОВАНИЯ ТЕКСТА) - Окно, внутри которого пользователь может напечатать с клавиатуры текст. Пользователь дает ему фокус клавиатуры, инициируя мышью или перемещая в него, каретку путем нажатия клавиши ТАБУЛЯЦИИ (TAB).
Пользователь может вводить текст, когда окно редактирования текста отображает мигающую каретку
|
К знакомым уже стилям окна (WS_CHILD и WS_VISIBLE ) добавим
WS_VSCROLL - для создания в окне вертикальной полосы просмотра (прокрутки) .
Ещё раз про установленные стили окна:
Цитата:
WS_CHILD - Дочернее окно.
WS_VISIBLE - Создается окно, которое сразу становится видимым. По умолчанию окна создаются невидимыми,
и для их отображения требуется вызывать функцию ShowWindow .
|
Установим следующие стили поля редактирования для класса EDIТ :
ES_MULTILINE ES_WANTRETURN ES_AUTOVSCROLL
Цитата:
ES_MULTILINE - Многостроковое окно редактирования текста. По умолчанию - одностроковое окно.
ES_WANTRETURN - Определяет, чтобы код возврата каретки был вставлен тогда, когда пользователь нажимает клавишу ENTER при вводе текста в многострочное поле.
ES_AUTOVSCROLL - Автоматически перемещает текст вверх на одну страницу, при нажатии клавиши ENTER на последней строке.
|
В итоге сделаем на странице "кусочек" текстового редактора :
Код:

!include MUI2.nsh
Page custom fnc_Create
;!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
OutFile "test3_CreateWindowEx.exe"
Var dlg
Function fnc_Create
nsDialogs::Create 1018
Pop $dlg
StrCpy $R0 "Текст Текст Текст Текст"
FindWindow $0 "#32770" "" $HWNDPARENT
System::Call 'user32::CreateWindowEx(i0,t "EDIT",t "$R0",i ${WS_VISIBLE}|${WS_CHILD}|${WS_VSCROLL}|${ES_MULTILINE}|${ES_WANTRETURN}|${ES_AUTOVSCROLL},i50,i100,i200,i60,i $0,i222,i0,i0) $R2'
nsDialogs::Show
FunctionEnd
Section
SectionEnd
В этом "псевдоредакторе" можно вызвать контестное меню для вставки , копирования и т.д., но не ясно как сохранять текст, точнее как передавать текст в скрипт, далее для обработки... У кого какие мысли по поводу ?