Set Focus to a Control: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
m (Added snippet from Afrow UK.) |
m (Added forum link to "Snippet of usage" section.) |
||
Line 89: | Line 89: | ||
== Snippet of usage (without "ioFile.ini") - by [[User:Afrow UK|Afrow UK]] == | == Snippet of usage (without "ioFile.ini") - by [[User:Afrow UK|Afrow UK]] == | ||
[http://forums.winamp.com/showthread.php?postid=1831384#post1831384 Forum link] | |||
<highlight-nsis> | <highlight-nsis> |
Revision as of 15:28, 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