我在Winapi / MFC中遇到了下一个神秘的东西,我有一个编辑框,我必须在Tab,Lclick,Rclick,Mclick等上选择内容。
一种明显的路径是处理SETFOCUS消息并调用SetSel(0,-1),它应该选择所有文本。但它不起作用!
怎么了?我试过谷歌搜索,每个人似乎都覆盖Lclilks或在父窗口中处理SetSel,但从封装的角度来看这是错误的,也是多次点击(用户希望在文本中间插入一些东西)会破坏,依此类推。 / p>
为什么我的方法不起作用,我尝试了10种不同的方法,尝试捕获所有可能的焦点消息,在MSDN上查找信息,但没有任何工作按预期进行。
另外,我需要在焦点上重新创建carret,这似乎也不起作用。
SETFOCUS消息被困了。如果我添加__asm int 3
,它每次都会中断。
这似乎是创造的carret和setsel吞噬了它。
答案 0 :(得分:3)
在处理EM_SETSEL
时将修改发布到WM_SETFOCUS
。可能在焦点切换后处理鼠标输入。或者发布用户消息并在接收时创建插入符然后进行选择。