Set Focus to a Control: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
m (Corrected link to System plug-in.) |
m (Added snippet from Afrow UK.) |
||
Line 84: | Line 84: | ||
Pop $2 | Pop $2 | ||
Pop $3 | Pop $3 | ||
FunctionEnd | |||
</highlight-nsis> | |||
== Snippet of usage (without "ioFile.ini") - by [[User:Afrow UK|Afrow UK]] == | |||
<highlight-nsis> | |||
Page Custom ShowCustom1 | |||
Var HWND | |||
Function .onInit | |||
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "ioFile.ini" | |||
FunctionEnd | |||
Function ShowCustom1 | |||
!insertmacro MUI_HEADERTEXT "blah" "blah" | |||
!insertmacro MUI_INSTALLOPTIONS_INITDIALOG "ioFile.ini" | |||
Pop $HWND ;HWND (handle) of dialog | |||
Push "$PLUGINSDIR\ioFile.ini" ;Page .ini file where the field can be found. | |||
Push "$HWND" ;Page handle you got when reserving the page. | |||
Push "1" ;Field number to set focus. | |||
Call SetFocus | |||
!insertmacro MUI_INSTALLOPTIONS_SHOW | |||
FunctionEnd | FunctionEnd |
Revision as of 15:27, 26 December 2005
Author: deguix (talk, contrib) |
Description
Required: InstallOptions or InstallOptionsEx and System plugins.
This function sets focus to a control using InstallOptions.
Function Call
Push "Page.ini" ;Page .ini file where the field can be found. Push "Handle" ;Page handle you got when reserving the page. Push "Number" ;Field number to set focus. Call SetFocus
Function Code
;---------------------------------------------------------------------------- ; Title : Set focus to a control ; Short Name : SetFocus ; Last Changed : 22/Feb/2005 ; Code Type : Function ; Code Sub-Type : One-way Input ;---------------------------------------------------------------------------- ; Required : InstallOptions and System plugins. ; Description : Sets focus to a control using InstallOptions. ;---------------------------------------------------------------------------- ; Function Call : Push "Page.ini" ; Page .ini file where the field can be found. ; ; Push "Handle" ; Page handle you got when reserving the page. ; ; Push "Number" ; Field number to set focus. ; ; Call SetFocus ;---------------------------------------------------------------------------- ; Author : Diego Pedroso ; Author Reg. Name : deguix ;---------------------------------------------------------------------------- Function SetFocus Exch $0 ; Control Number Exch Exch $2 ; Page Handle Exch Exch 2 Exch $3 ; Page INI File Exch 2 Push $1 Push $R0 Push $R1 Push $R2 Push $R3 Push $R4 Push $R5 IntOp $1 $0 + 1199 GetDlgItem $1 $2 $1 # Send WM_SETFOCUS message System::Call "user32::SetFocus(i r1, i 0x0007, i,i)i" ReadINIStr $R0 "$3" "Field $0" "Left" ReadINIStr $R1 "$3" "Field $0" "Right" ReadINIStr $R3 "$3" "Field $0" "Top" ReadINIStr $R4 "$3" "Field $0" "Bottom" IntOp $R2 $R1 - $R0 IntOp $R5 $R4 - $R3 System::Call "user32::CreateCaret(i r0, i, i R2, i R5)i" System::Call "user32::ShowCaret(i r0)i" Pop $R5 Pop $R4 Pop $R3 Pop $R2 Pop $R1 Pop $R0 Pop $1 Pop $0 Pop $2 Pop $3 FunctionEnd
Snippet of usage (without "ioFile.ini") - by Afrow UK
Page Custom ShowCustom1 Var HWND Function .onInit !insertmacro MUI_INSTALLOPTIONS_EXTRACT "ioFile.ini" FunctionEnd Function ShowCustom1 !insertmacro MUI_HEADERTEXT "blah" "blah" !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "ioFile.ini" Pop $HWND ;HWND (handle) of dialog Push "$PLUGINSDIR\ioFile.ini" ;Page .ini file where the field can be found. Push "$HWND" ;Page handle you got when reserving the page. Push "1" ;Field number to set focus. Call SetFocus !insertmacro MUI_INSTALLOPTIONS_SHOW FunctionEnd