CEdit框的焦点问题

dxk01 2009-01-16 07:53:49
一个对话框上的Edit控件,如果要让它获得焦点,用控件变量或控件指针调用SetFocus方法都可以实现。
但如果用SendMessage(hwnd,WM_SETFOCUS,0,0)或SendDlgItemMessage(IDC_EDIT1,WM_SETFOCUS)
可以获得焦点,但Edit就无法输入字符了,而且失去焦点后鼠标点击也不能再获得焦点。
不知道是什么原因?
...全文
307 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
tobealv 2011-09-21
  • 打赏
  • 举报
回复
激动啊,,终于找到了
boboyouling 2011-03-25
  • 打赏
  • 举报
回复
正需要的东西,跟楼主一样,原来窗体没有激活。
沧海笑科技 2010-09-27
  • 打赏
  • 举报
回复
此贴似救命稻草!
Raul_Shao 2009-11-26
  • 打赏
  • 举报
回复
UP !UP !好贴啊!
dxk01 2009-01-22
  • 打赏
  • 举报
回复
谢谢各位,结帖
levelmouse 2009-01-22
  • 打赏
  • 举报
回复
恩,8楼的可行。
楼上分析很透彻啊!
Show_Mike 2009-01-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 shequay 的帖子:]
一个对话框上的Edit控件,如果要让它获得焦点,用控件变量或控件指针调用SetFocus方法都可以实现。
但如果用SendMessage(hwnd,WM_SETFOCUS,0,0)或SendDlgItemMessage(IDC_EDIT1,WM_SETFOCUS)
可以获得焦点,但Edit就无法输入字符了,而且失去焦点后鼠标点击也不能再获得焦点。
不知道是什么原因?
[/Quote]
你的问题实际上就是"SetFocus()"与"SendMessage()"的区别在哪?
回答如下:
1.SetFocus函数要做3件事:1)发送kill_focus到前一个窗口;2)发送set_focus到现有窗口;3)让现有窗口出于激活状态.
2.SendMessage只做第2件事,并通过回调函数wndproc处理相应事件.
由此对比,不难发现出现你所说现象的原因.
BenzKuai 2009-01-21
  • 打赏
  • 举报
回复
经过仔细读了MSDN后发现。如果要获得键盘输入,就要是 active窗口。所以LZ用消息当然是可以的,只是你少一步没做。

如下代码片段:
m_edtTest.SendMessage(WM_SETFOCUS,0,0);
m_edtTest.SendMessage(WM_ACTIVATE, WA_ACTIVE,0);
这样就可以获得键盘输入。
www.bysj580.cn
schlafenhamster 2009-01-21
  • 打赏
  • 举报
回复
The framework calls this member function after gaining the input focus.
所以SetFocus()函数不是WM_SETFOCUS消息.SetFocus()需要把原始输入队列连接到Edit窗口.
schlafenhamster 2009-01-21
  • 打赏
  • 举报
回复
是不是bug?
dxk01 2009-01-21
  • 打赏
  • 举报
回复
4楼,你的方法仅仅是给对话框本身发消息,与要求不符
levelmouse 2009-01-21
  • 打赏
  • 举报
回复
::SendMessage(this->m_hWnd,WM_SETFOCUS,0,0);
dxk01 2009-01-18
  • 打赏
  • 举报
回复
2楼误会我的意思了,通过控件指针或控件变量是可以实现的,我想知道为什么用发送消息的方法不行。
nkwanglei 2009-01-16
  • 打赏
  • 举报
回复
我猜测啊,可能你用的全局的::SendMessage,这样不知道是哪个窗体上的Edit控件,所以出了问题
如果 GetDlgItem(IDC_EDIT1)->SetFocus(),就可以,可以考虑通过给这个窗体对象发消息,让窗体设置焦点。
冰霜icefrost 2009-01-16
  • 打赏
  • 举报
回复
之前没注意到这个问题,我测试了一下,确实如此。
我查了一下,SetFocus函数执行了两个操作,一个是向最后一个有焦点的Window发了一个WM_KILLFOCUS,之后又发了一个WM_SETFOCUS。
但不知道和这个有什么关系 。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧