Пользователь
Сообщения: 110
Благодарности: 5
|
Профиль
|
Сайт
|
Отправить PM
| Цитировать
Цитата K.A.V:
0x08000000L - даёт понять команде, какой стиль удалять, в нашем случае это "WS_DISABLED.»
|
Это, по образу и подобию, я скопипастил в первую очередь
читать дальше »
PHP код:
Function RemoveDISABLEDStyle GetDlgItem $0 $HWNDPARENT 1028 ${NSD_RemoveStyle} $0 0x08000000L SetCtlColors $0 "0xFF0000" transparent ; Красный цвет текста
GetDlgItem $1 $HWNDPARENT 1043 ${NSD_RemoveStyle} $1 0x08000000L SetCtlColors $1 "0xFF0000" transparent ; Красный цвет текста
FunctionEnd
Только для текста "Position your mouse over a component to see its description" этот вариант не прошел.
У элемента 1043 не оказалось параметра " WS_DISABLED". Там стоит " WS_VISIBLE". Поэтому и спросил.
Способ номер 2 не работает - ничего нигде не перекрашивается и стиль не удаляется.
Вот код, на котором испытывался способ 2.
( Скрипт с ошибками, поэтому и неправильно работает)
читать дальше »
PHP код:
/* ВНИМАНИЕ! СКРИПТ С ОШИБКАМИ.
Hide Style.nsi Скрываем стили текстов и красим их Совет от K.A.V. */
!include "MUI2.nsh" ;!include "nsDialogs.nsh" - нужно-не нужно? Что с ним, что без него. !addplugindir "..\..\Win32\Release"
;--------------------------------
;General Name "Hide Style" OutFile "Hide_Style.exe" ;Default installation folder InstallDir "$TEMP" ;Request application privileges for Windows Vista RequestExecutionLevel user
;-------------------------------- ; макрос удаления стиля текста (K.A.V.) !define NSD_RemoveStyle "!insertmacro _NSD_RemoveStyle_Call" !macro _NSD_RemoveStyle_Call CONTROL EXSTYLE Push `${CONTROL}` Push `${EXSTYLE}` System::Store SR1R0 IntOp $R1 $R1 ~ System::Call `user32::GetWindowLong(iR0,i${GWL_STYLE})i.R2` IntOp $R2 $R1 & $R2 System::Call `user32::SetWindowLong(iR0,i${GWL_STYLE},iR2)` System::Store L !macroend !define MUI_ABORTWARNING
;-------------------------------- !define MUI_PAGE_CUSTOMFUNCTION_SHOW RemoveDISABLEDStyle_Description ; Команда отключения стиля текста ;!define MUI_CUSTOMFUNCTION_GUIINIT onGUIInit ; Команда использования скина !insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ;-------------------------------- ;Languages !insertmacro MUI_LANGUAGE "English"
;--------------------------------
Section "Первая секция" SectionEnd
Section "Вторая секция" SectionEnd
Function .onMouseOverSection FindWindow $R0 "#32770" "" $HWNDPARENT GetDlgItem $R0 $R0 1043
StrCmp $0 -1 "" +2 SendMessage $R0 ${WM_SETTEXT} 0 "STR:$(MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO)" ; текст "Наведите курсор мыши на название компонента, чтобы прочесть его описание." в зависимости от языка графического интерфейса
StrCmp $0 0 "" +2 SendMessage $R0 ${WM_SETTEXT} 0 "STR:Описание первой секции"
StrCmp $0 1 "" +2 SendMessage $R0 ${WM_SETTEXT} 0 "STR:Описание второй секции" FunctionEnd
;РАБОТАЮЩАЯ функция (для текста "Nullsoft Install System")
Function RemoveDISABLEDStyle_Description GetDlgItem $0 $HWNDPARENT 1028 ${NSD_RemoveStyle} $0 0x08000000L SetCtlColors $0 "0xFF0000" transparent ; Красный цвет текста ;SetCtlColors $0 "0x808080" transparent ; Серый цвет текста FunctionEnd
/* ; НЕ РАБОТАЮЩАЯ функция (для текста описания "Position your mouse over a component to see its description"
Function RemoveDISABLEDStyle_Description FindWindow $0 "#32770" "" $HWNDPARENT GetDlgItem $1 $0 1043 ${NSD_RemoveStyle} $1 0x08000000L SetCtlColors $1 "0xFF0000" "0xFFFFFF" ; Красный цвет текста на белом фоне GetDlgItem $1 $0 1042 SetCtlColors $1 "" "0xFFFFFF" ; Ставим белый фон на слово "Описание", элемент рамки, цвет текста не меняется FunctionEnd
; Использование скинов SkinH (совет от Flix) Function onGUIInit InitPluginsDir SetOutPath $PLUGINSDIR File "D:\NSIS\SkinSharp\DLL\ANSI\SkinH.dll" File "D:\NSIS\SkinSharp\Skins\0012.she" ; При помощи функции SkinH_AttachEx загружаем файл стиля с именем 0011.she
System::Call SkinH::SkinH_AttachEx(t'$PLUGINSDIR\0012.she') System::Call SkinH::SkinH_AdjustHSV(i-20,i,i) ; здесь можно красить скин
; Patches for SkinSharp System::Call Kernel32::GetModuleHandle(t"SkinH.dll")i.r0 IntOp $0 $0 + 0x0002CA98 System::Call Kernel32::GetCurrentProcess()i.s System::Call Kernel32::VirtualProtectEx(is,ir0,i4,i0x40,*i) System::Call "*$0(&i1 0)" FunctionEnd
Function .onGUIEnd System::Call Kernel32::GetModuleHandle(t"SkinH.dll")i.s System::Call Kernel32::FreeLibrary(is) System::Call Kernel32::SetCurrentDirectory(t"$EXEDIR\") FunctionEnd */
Снимки с использованием скина SkinH и без него:
Функция работает
Функция не работает
Может я накосячил чего?
Сам добавил позднее:
Накосячил 100 %.
Со способом номер 1 еще не разбирался.
|
Последний раз редактировалось Kopejkin, 01-03-2014 в 12:43.
Отправлено: 13:56, 27-02-2014
| #1056
|