Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Select text when the edit box is focus
#1
Hi,

I want to achieve an effect where the text inside the edit box is selected while the edit box is in focus
How to use the following code?
Code:
Copy      Help
PostMessage(EM_SETSEL, 0, -1)

Thanks in advance for any advice and help
david


Macro Macro3
Code:
Copy      Help
str dd=
;BEGIN DIALOG
;0 "" 0x90C80AC8 0x0 0 0 224 136 "Dialog" "4"
;3 Edit 0x54020080 0x200 16 24 96 12 ""
;4 Edit 0x54020080 0x200 16 48 96 12 ""
;5 Edit 0x54020080 0x200 16 72 96 12 ""
;1 Button 0x54030001 0x4 116 116 48 14 "OK"
;2 Button 0x54030000 0x4 168 116 48 14 "Cancel"
;END DIALOG
;DIALOG EDITOR: "" 0x2040C02 "*" "" "" ""

str controls = "3 4 5"
str e3 e4 e5
e3="hello"
e4="world"
e5="hello"
if(!ShowDialog(dd &sub.DlgProc &controls)) ret


#sub DlgProc
function# hDlg message wParam lParam

sel message
,case WM_INITDIALOG
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
ret 1
#2
Code:
Copy      Help
str dd=
;BEGIN DIALOG
;0 "" 0x90C80AC8 0x0 0 0 224 136 "Dialog" "4"
;3 Edit 0x54020080 0x200 16 24 96 12 ""
;4 Edit 0x54020080 0x200 16 48 96 12 ""
;5 Edit 0x54020080 0x200 16 72 96 12 ""
;1 Button 0x54030001 0x4 116 116 48 14 "OK"
;2 Button 0x54030000 0x4 168 116 48 14 "Cancel"
;END DIALOG
;DIALOG EDITOR: "" 0x2040C02 "*" "" "" ""

str controls = "3 4 5"
str e3 e4 e5
e3="hello"
e4="world"
e5="hello"
if(!ShowDialog(dd &sub.DlgProc &controls)) ret


#sub DlgProc
function# hDlg message wParam lParam

sel message
,case WM_INITDIALOG
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
,case else
,int loword=wParam&0xFFFF
,int hiword=wParam>>16    
,sel hiword
,,case EN_SETFOCUS
,,PostMessage(lParam EM_SETSEL, 0, -1)    
ret 1
#3
It works well, thank you so much!
#4
If the text is too long, only the text before the insertion point is selected

[Image: 8.png]
#5
I am not sure what you mean. all text is selected when controls gets focus
#6
Click in the edit box to bring it into focus
Demo:
https://download.ru/g/3uN0sBgk/GRSQorVNI...1675648069

Macro Macro1
Code:
Copy      Help
str dd=
;BEGIN DIALOG
;0 "" 0x90C80AC8 0x0 0 0 224 136 "Dialog" "4"
;3 Edit 0x54020080 0x200 16 24 96 12 ""
;4 Edit 0x54020080 0x200 16 48 96 12 ""
;5 Edit 0x54020080 0x200 16 72 96 12 ""
;1 Button 0x54030001 0x4 116 116 48 14 "OK"
;2 Button 0x54030000 0x4 168 116 48 14 "Cancel"
;END DIALOG
;DIALOG EDITOR: "" 0x2040C02 "*" "" "" ""

str controls = "3 4 5"
str e3 e4 e5
e3="hello world hello world hello world"
e4="world"
e5="hello"
if(!ShowDialog(dd &sub.DlgProc &controls)) ret


#sub DlgProc
function# hDlg message wParam lParam

sel message
,case WM_INITDIALOG
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
,case else
,int loword=wParam&0xFFFF
,int hiword=wParam>>16
,sel hiword
,,case EN_SETFOCUS
,,PostMessage(lParam EM_SETSEL, 0, -1)
ret 1
#7
@Kevin
I also found a problem:
I added the EM_SETCUEBANNER code, but the first edit box is not displayed by default, need to move the mouse pointer to display, is there a solution?
demo Gif:
https://download.ru/g/mttFLmSS/3tGl645iz...1675812332

Macro Macro5
Code:
Copy      Help
str dd=
;BEGIN DIALOG
;0 "" 0x90C80AC8 0x0 0 0 224 136 "Dialog" "4"
;3 Edit 0x54030080 0x200 16 16 96 12 ""
;4 Edit 0x54030080 0x200 16 40 96 12 ""
;5 Edit 0x54030080 0x200 16 64 96 12 ""
;1 Button 0x54030001 0x4 116 116 48 14 "OK"
;2 Button 0x54030000 0x4 168 116 48 14 "Cancel"
;END DIALOG
;DIALOG EDITOR: "" 0x2040C02 "*" "" "" ""

str controls = "3 4 5"
str e3 e4 e5
if(!ShowDialog(dd &sub.DlgProc &controls)) ret


#sub DlgProc
function# hDlg message wParam lParam

sel message
,case WM_INITDIALOG
,SendMessage id(3 hDlg) EM_SETCUEBANNER 1 @"input name"
,SendMessage id(4 hDlg) EM_SETCUEBANNER 1 @"input file name"
,SendMessage id(5 hDlg) EM_SETCUEBANNER 1 @"input folder name"
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
,case else
,int loword=wParam&0xFFFF
,int hiword=wParam>>16
,sel hiword
,,case EN_SETFOCUS PostMessage(lParam EM_SETSEL, 0, -1)
ret 1
#8
not having that problem on win10
#9
kevin,
I tested the win7 win10 win11 system version. I must add the following code to always select the text
Is there a better solution? thank you.

Code:
Copy      Help
,case EN_SETFOCUS<<16|3
,'E
,0.5
,PostMessage(lParam EM_SETSEL 0 -1)

Macro Macro20
Code:
Copy      Help
str dd=
;BEGIN DIALOG
;0 "" 0x90CC0AC8 0x0 0 0 224 136 "Dialog" "4"
;3 Edit 0x54030080 0x200 16 16 96 12 ""
;4 Edit 0x54030080 0x200 16 40 96 12 ""
;1 Button 0x54030001 0x4 116 116 48 14 "OK"
;2 Button 0x54030000 0x4 168 116 48 14 "Cancel"
;END DIALOG
;DIALOG EDITOR: "" 0x2040C02 "*" "" "" ""

str controls = "3 4"
str e3 e4
e3=
;hello world hello world hello world hello world
e4=e3
if(!ShowDialog(dd &sub.DlgProc &controls)) ret


#sub DlgProc
function# hDlg message wParam lParam

sel message
,case WM_INITDIALOG
,DT_SetAutoSizeControls hDlg "3sh 4sh"
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
,case EN_SETFOCUS<<16|3
,'E
,0.5
,PostMessage(lParam EM_SETSEL 0 -1)
,
,case EN_SETFOCUS<<16|4
,'E
,0.5
,PostMessage(lParam EM_SETSEL 0 -1)
,
ret 1


Forum Jump:


Users browsing this thread: 6 Guest(s)