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

Показать сообщение отдельно
MKN MKN вне форума

Ветеран


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

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


Применеие в 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
В этом "псевдоредакторе" можно вызвать контестное меню для вставки , копирования и т.д., но не ясно как сохранять текст, точнее как передавать текст в скрипт, далее для обработки... У кого какие мысли по поводу ?

Последний раз редактировалось MKN, 20-01-2013 в 18:12.

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

Отправлено: 18:05, 20-01-2013 | #90