SetSel on EN_SETFOCUS or WM_SETFOCUS doesn't work
- by Coder
I've ran into next mystic thing in Winapi/MFC, I have an edit box, contents of which I have to select on Tab, Lclick, Rclick, Mclick and so on.
The sort of obvious path is to handle the SETFOCUS message and call SetSel(0, -1), which should select all text. But it doesn't work!
What's wrong? I tried googling, everyone seems to override Lclilks or handle SetSel in parent windows, but this is wrong from encapsulation point of view, also multiple clicks (user wants to insert something in the middle of the text) will break, and so on.
Why isn't my approach working, I tried like 10 different ways, tried to trap all possible focus messages, looked up info on MSDN, but nothing works as expected.
Also, I need to recreate the carret on focus, which also doesn't seem to work.
SETFOCUS message gets trapped alright. If I add __asm int 3, it breaks every time.
It's the create carret and setsel that gets swallowed it seems.