Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


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

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


Цитата K.A.V:
0x08000000L - даёт понять команде, какой стиль удалять, в нашем случае это "WS_DISABLED.»
Это, по образу и подобию, я скопипастил в первую очередь
читать дальше »

PHP код: Выделить весь код

Function RemoveDISABLEDStyle
  
  GetDlgItem 
$0 $HWNDPARENT 1028
  
${NSD_RemoveStyle} $0 0x08000000L
  SetCtlColors 
$"0xFF0000" transparent Красный цвет текста

  GetDlgItem 
$1 $HWNDPARENT 1043
  
${NSD_RemoveStyle} $1 0x08000000L
  SetCtlColors 
$"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 
$-"" +2
    SendMessage $R0 
${WM_SETTEXT"STR:$(MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO)" текст "Наведите курсор мыши на название компонента, чтобы прочесть его описание." в зависимости от языка графического интерфейса

    StrCmp 
$0 0 "" +2
      SendMessage $R0 
${WM_SETTEXT"STR:Описание первой секции"

    
StrCmp $0 1 "" +2
      SendMessage $R0 
${WM_SETTEXT"STR:Описание второй секции"
FunctionEnd


;РАБОТАЮЩАЯ функция (для текста "Nullsoft Install System")

Function 
RemoveDISABLEDStyle_Description
  GetDlgItem 
$0 $HWNDPARENT 1028
  
${NSD_RemoveStyle} $0 0x08000000L
  SetCtlColors 
$"0xFF0000" transparent Красный цвет текста
  
;SetCtlColors $"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