es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo modificar el comportamiento del botón en el evento de pasar el ratón por encima en Graphical Installer para NSIS?

Soy nuevo en NSIS. Cuando me convertí en Instalador Gráfico, encontré que la reacción del botón en el evento de pasar el ratón es un poco diferente al predeterminado de Win10, que debería resaltarse cuando el ratón se mueve dentro (de lo contrario, apagarse). Pero los botones en el Instalador Gráfico se ven inactivos cuando el ratón se mueve encima y solo se resaltan cuando se hace clic con el ratón, como en versiones anteriores de Windows.

¿Cómo puedo modificar el comportamiento del botón para que coincida con el efecto en Win10?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para modificar el comportamiento del botón en NSIS Graphical Installer, puedes utilizar la macro MUI_UI y modificar el atributo ButtonHoverText. Establécelo como "highlight" para activar el resaltado cuando el mouse se mueve dentro y desactivarlo cuando el mouse se mueve fuera. Aquí hay un ejemplo de código:

    !include MUI2.nsh
    
    !define MUI_UI "nsDialogs.dll"
    !define MUI_UI_HEADERIMAGE_BITMAP "header.bmp"
    !define MUI_UI_HEADERIMAGE stretch
    
    !insertmacro MUI_PAGE_WELCOME
    !insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt"
    !insertmacro MUI_PAGE_COMPONENTS
    !insertmacro MUI_PAGE_DIRECTORY
    !insertmacro MUI_PAGE_INSTFILES
    !insertmacro MUI_PAGE_FINISH
    
    !insertmacro MUI_UNPAGE_WELCOME
    !insertmacro MUI_UNPAGE_CONFIRM
    !insertmacro MUI_UNPAGE_INSTFILES
    !insertmacro MUI_UNPAGE_FINISH
    
    !define MUI_FINISHPAGE_TITLE_3LINES
    !define MUI_FINISHPAGE_TEXT_TOP "$(^FinishTitle)"
    !define MUI_FINISHPAGE_TEXT_INSTALLED "$(INSTALLEDTEXT)"
    !define MUI_FINISHPAGE_TEXT_BUTTONS "$(^FinishButtonText)"
    !define MUI_FINISHPAGE_SHOWREADME "$(^ShowReadme)"
    !define MUI_FINISHPAGE_SHOWREADME_TEXT "$(^ShowReadmeText)"
    
    !insertmacro MUI_LANGUAGE "English"
    
    Function myPage
      nsDialogs::Create 1018
      Pop $0
      ${If} $0 == error
         Abort
      ${EndIf}
    
      ${NSD_CreateButton} 0 0 100% 50 "Hover Me"
      Pop $0
    
      ; Modificar el comportamiento del hover
      !define MUI_BUTTON_HOVER_TEXT highlight
    
      nsDialogs::Show
    FunctionEnd
    
    Section
      Call myPage
    SectionEnd
    

    En el código anterior, creamos una página personalizada utilizando la función myPage. Esta función crea un botón y modifica su comportamiento al pasar el mouse sobre él utilizando la macro MUI_BUTTON_HOVER_TEXT. Establécelo como “highlight” para que coincida con el efecto de Windows 10.

    Nota: El ejemplo anterior es para MUI2. Para MUI1, utiliza !define MUI_BUTTON_HOVER_STYLE highlight.

Comments are closed.