如何防止用户切换窗口焦点
在一本书上说有2种方式
1.重新处理WM_KILLFOCUS消息,重新使本窗口成为焦点
2.让本程序抓住鼠标.
但是他没有进一步解释以及给出代码。
有人能帮我吗?
问题点数:20、回复次数:10Top
1 楼demetry(智者橡木)回复于 2002-12-28 00:04:14 得分 0
在WM_KILLFOCUS的映射函数代码中,添加SetFocusTop
2 楼oyd() oyd() oyd() oyd() oyd()回复于 2002-12-28 11:48:17 得分 0
那么抓住鼠标该怎么做呢?
就是说无论用户在哪单击鼠标,应用程序都可以收到鼠标消息Top
3 楼cniou(混混)回复于 2002-12-28 12:28:08 得分 0
Lose focus can also be caused by keyboard messages, simply capture the mouse message will not help much.
Anyway, if you call setfocus in onkillfocus, it might cause deadlock in the message loop (see MSDN)
If you really want to keep your window from losing focus, why not use win32 hook? this might help.Top
4 楼guojun007(guojun)回复于 2002-12-28 15:54:57 得分 0
to cniou:please more detailTop
5 楼qrlvls( 空 气 )回复于 2002-12-29 21:12:46 得分 5
一旦 WM_KILLFOCUS 就直接返回算了
SetMouseCaptureTop
6 楼wanglh(宏)回复于 2002-12-30 14:55:39 得分 5
用SetCapture函数
然后所有的消息都发到这个窗口上Top
7 楼hyamw(林锋)回复于 2002-12-30 17:24:14 得分 5
同意wanglh的看法。使用SetCapture()后,所有的鼠标消息都会返回给该程序。
要终止的话,使用ReleaseCapture()交还控制权;Top
8 楼oyd() oyd() oyd() oyd() oyd()回复于 2002-12-31 10:56:55 得分 0
那么如果别的程序用了SetCapture函数,在他还没有用ReleaseCapture交换控制权时,有没有代码可以暂时夺回控制权,因为我在编写游戏修改器,遇到了一些切换不出来的游戏程序Top
9 楼richardtmp(星際菜鳥)回复于 2003-01-02 16:21:13 得分 5
奇怪,怎麼大家都建議用SetCapture呢,我記得好象有本書上講過被設置了Capture的窗口只有在程式調用函數ReleaseCapture或指定另一個捕捉窗口再或是用戶單擊另一個線程創建的窗口之前才會接獲所有的mouse消息,亦即是說,如果用戶單擊了另一個線程創建的窗口,那原來被SetCapture的函口也就失效了,不再會收到屬於他窗口之外的mouse消息,同樓主的要求不是差了很多.
我是菜鳥,或許我的理解一直都錯了,但我記得我試過噢.......Top
10 楼oyd() oyd() oyd() oyd() oyd()回复于 2003-01-05 20:43:48 得分 0
有没有谁能给出代码Top




