Set Focus to a Control: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
m (Updated author links.) |
m (Added category links.) |
||
Line 89: | Line 89: | ||
FunctionEnd | FunctionEnd | ||
</highlight-nsis> | </highlight-nsis> | ||
[[{{ns:14}}:User Interface Functions]] |
Revision as of 06:25, 1 May 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