为什么对话框不能响应WM_KILLFOCUS消息

时间:2022-05-16 18:11:47
想在窗口失去焦点时 捕获这个消息 然后自动切换回来
但是添加OnKillFocus后 却始终捕捉不到该消息
怎么回事呢?

6 个解决方案

#1


怎么会呢?

#2


是单个对话框,Onkillfocus是在***dlg里添加的,我切换到别的程序或者桌面的时候,不执行Onkillfocus

#3


发现killfocus在onclose之后,那要做到我要求的功能怎么做呢?
附:
MFC应用程序中关闭模式对话框的顺序

1.OnClose()        消息响应函数,响应WM_CLOSE消息,当"关闭"按钮被单击的时候,该函数被调用

2.OnKillFocus()    消息响应函数,响应WM_KILLFOCUS消息,当一个窗口即将失去键盘输入焦点以前被发送

3.OnDestroy()      消息响应函数,响应WM_DESTROY消息,当一个窗口即将被销毁时,被发送

4.OnNcDestroy()    消息响应函数,响应WM_NCDESTROY消息,当一个窗口被销毁以后被发送

5.PostNcDestroy()  重载函数,作为处理OnNcDestroy()函数的最后动作被CWnd调用

#4


这个问题看起来不简单,我也没做过类似的,只能谈谈我的理解吧

当你的对话框不是模态对话框的时候,你用鼠标点击windows的其他地方,你的程序此时就已经失去了对鼠标的控制了,除非你的进程有监听鼠标点击位置的功能。程序本身的lbuttondown肯定是不行的。

解决办法:1,我想你可以在鼠标离开窗口的时候截获它
WM_MOUSELEAVE消息:这个消息可以使你知道鼠标何时离开窗口。与此相关的API函数是::TrackMouseEvent(),通过它,一个程序可以注册,当光标离开窗口时接收WM_MOUSELEAVE消息,而光标在窗口中停滞时接收WM_MOUSEHOVER消息。::TrackMouseEvent()函数只有一个参数,是一个指向TRACKMOUSEEVENT结构的指针。
2,直接设置dlg为模态窗口
3,如果你想切换到别的程序或者桌面的时候再自动切换回来,你就得再查查资料了。我也不董。了

#5


好像要利用到hook技术吧,反正我猜应该是种监听进程。

#6


http://www.microsoft.com/china/msdn/archives/library/dnwxp/html/xpvisualstyles.asp#xpvisualstyles_topic3

#1


怎么会呢?

#2


是单个对话框,Onkillfocus是在***dlg里添加的,我切换到别的程序或者桌面的时候,不执行Onkillfocus

#3


发现killfocus在onclose之后,那要做到我要求的功能怎么做呢?
附:
MFC应用程序中关闭模式对话框的顺序

1.OnClose()        消息响应函数,响应WM_CLOSE消息,当"关闭"按钮被单击的时候,该函数被调用

2.OnKillFocus()    消息响应函数,响应WM_KILLFOCUS消息,当一个窗口即将失去键盘输入焦点以前被发送

3.OnDestroy()      消息响应函数,响应WM_DESTROY消息,当一个窗口即将被销毁时,被发送

4.OnNcDestroy()    消息响应函数,响应WM_NCDESTROY消息,当一个窗口被销毁以后被发送

5.PostNcDestroy()  重载函数,作为处理OnNcDestroy()函数的最后动作被CWnd调用

#4


这个问题看起来不简单,我也没做过类似的,只能谈谈我的理解吧

当你的对话框不是模态对话框的时候,你用鼠标点击windows的其他地方,你的程序此时就已经失去了对鼠标的控制了,除非你的进程有监听鼠标点击位置的功能。程序本身的lbuttondown肯定是不行的。

解决办法:1,我想你可以在鼠标离开窗口的时候截获它
WM_MOUSELEAVE消息:这个消息可以使你知道鼠标何时离开窗口。与此相关的API函数是::TrackMouseEvent(),通过它,一个程序可以注册,当光标离开窗口时接收WM_MOUSELEAVE消息,而光标在窗口中停滞时接收WM_MOUSEHOVER消息。::TrackMouseEvent()函数只有一个参数,是一个指向TRACKMOUSEEVENT结构的指针。
2,直接设置dlg为模态窗口
3,如果你想切换到别的程序或者桌面的时候再自动切换回来,你就得再查查资料了。我也不董。了

#5


好像要利用到hook技术吧,反正我猜应该是种监听进程。

#6


http://www.microsoft.com/china/msdn/archives/library/dnwxp/html/xpvisualstyles.asp#xpvisualstyles_topic3