在VC中,使得到焦点是WM_SETFOCUS消息,使失去焦点是WM_KILLFOCUS,那么 得到焦点是哪个消息?
想让用户点击状态栏时,状态栏得到焦点时又自动失去焦点,即写入WM_KILLFOCUS消息。现在的问题是,得到焦点的事件是什么?WM_?...
想让 用户点击状态栏时,状态栏得到焦点时又自动失去焦点,即写入 WM_KILLFOCUS 消息。
现在的问题是,得到焦点的事件是什么?
WM_? 展开
现在的问题是,得到焦点的事件是什么?
WM_? 展开
2个回答
展开全部
当windows将输入焦点从一个窗口转换到另一个窗口时,它首先给正在失去焦点的窗口发一个WM_KILLFOCUS消息,wParam参数是接收输入焦点的窗口的句柄,然后window向正在接收输入焦点的窗口发送一个WM_SETFOCUS消息,同时wParam是还在失去输入焦点的窗口的句柄,(WPARAM为NULL表示没有窗口拥有或正在接收输入焦点)
所以,得到焦点的事件就是WM_SETFOCUS
所以,得到焦点的事件就是WM_SETFOCUS
追问
在点击状态栏窗口时,状态栏自动获得焦点,这个自动获得焦点的消息是什么呢?
WM_SETFOCUS 是设置焦点,获得焦点 同设置焦点 应该不一样。
状态栏获得焦点的消息,倒是有点像WM_ACTIVATE。
但经过试验,WM_ACTIVATE、WM_SETFOCUS都没有响应事件。
在两个消息中,都加了MessageBox(NULL,"00","提示",MB_OK)消息,但点击状态栏时,都没有机会被执行。
追答
WM_ACTIVATE是窗口激活事件和WM_SETFOCUS获得焦点还是有区别的,比如你打开一个窗口或是从其他应用程序切换至,这是激活。但是其子窗口(控件),按钮什么的是获得焦点的,这在子类化就能容易试出来。
你说的状态栏若不是子类化的,就要看这控件有没相应的通知代码了,若不然就是HOOK或者在转化消息事件中过滤了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询