Как установить фокус на элемент управления флажок лицензионного соглашения с помощью NSIS - PullRequest
0 голосов
/ 26 января 2019

Я хотел установить Focus по умолчанию на флажок «Лицензионное соглашение» на странице лицензионного соглашения, используя NSIS. И тогда должен работать табордер.

Пожалуйста, помогите мне, как установить фокус?

Ниже приведен фрагмент кода:

!include LogicLib.nsh

  !define MUI_TEXT_WELCOME_INFO_TITLE $(welcometitle)
  !define MUI_TEXT_WELCOME_INFO_TEXT $(welcometext)

  !insertmacro MUI_PAGE_WELCOME

  !define MUI_LICENSEPAGE_CHECKBOX ""
  !define MUI_INNERTEXT_LICENSE_BOTTOM ""
  !define MUI_INNERTEXT_LICENSE_TOP ""
  !define MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX ""

  !define MUI_TEXT_LICENSE_TITLE $(licensetitle)
  !define MUI_TEXT_LICENSE_SUBTITLE $(licensesubtitle)
  !define MUI_LICENSEPAGE_CHECKBOX_TEXT $(licensecheckboxtext)

  !insertmacro MUI_PAGE_LICENSE "C:\Program Files (x86)\NSIS\Docs\Modern UI 2\license.txt"

 !define MUI_DIRECTORYPAGE_TEXT_TOP $(mydirtoptext)
 !define MUI_TEXT_DIRECTORY_TITLE $(mydirtitle)
 !define MUI_TEXT_DIRECTORY_SUBTITLE $(mydirsubtitle)

  !insertmacro MUI_PAGE_DIRECTORY

  !insertmacro MUI_PAGE_INSTFILES

  !define MUI_TEXT_FINISH_INFO_TITLE $(Finishpagetitle)
  !define MUI_TEXT_FINISH_INFO_TEXT $(Finishpagesubtitle)

  !define MUI_FINISHPAGE_RUN ""
  !define MUI_FINISHPAGE_RUN_TEXT $(FinishonlineReg)

  !insertmacro MUI_PAGE_FINISH

  !insertmacro MUI_UNPAGE_INSTFILES

 ;--------------------------------
  !insertmacro MUI_LANGUAGE "English" 

; The stuff to install
Section "My TestApp (required)"
SectionEnd

1 Ответ

0 голосов
/ 26 января 2019

Руководство по пользовательскому интерфейсу Windows гласит:

Для навигации с помощью клавиатуры порядок табуляции должен располагаться в логическом порядке, обычно слева направо, сверху вниз.

но если вы думаете, что должны принуждать, вы можете сделать это:

!include WinMessages.nsh
!include MUI2.nsh

!insertmacro MUI_PAGE_WELCOME
!define MUI_LICENSEPAGE_CHECKBOX ""
!define MUI_PAGE_CUSTOMFUNCTION_SHOW myForceLicenseFocus
!insertmacro MUI_PAGE_LICENSE "${__FILE__}"
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE English

Function myForceLicenseFocus
!if ${MUI_SYSVERSION} >= 2.0
    FindWindow $0 "BUTTON" "" $mui.LicensePage
!else
    FindWindow $0 "#32770" "" $hWndParent
    FindWindow $0 "BUTTON" "" $0
!endif
System::Call 'USER32::SetFocus(pr0)'
!define /ifndef WM_CHANGEUISTATE 0x127
System::Call 'USER32::PostMessage(pr0,i${WM_CHANGEUISTATE},p0x30002,p0)' ; This forces the checkbox to display the focus rectangle
System::Call 'USER32::SetWindowPos(pr0,p0,i,i,i,i,i0x13)' ; Change tab order
FunctionEnd
...