如题!
SetActiveView是设置活动视图,设置成活动视图的试图可以捕获鼠标和按钮消息,那它和SetFocus作用好像一样啊
SetActiveView是设置活动视图,设置成活动视图的试图可以捕获鼠标和按钮消息,那它和SetFocus作用好像一样啊
解决方案 »
- 关于GDI+按钮的问题
- 请问 能实现使用假IP访问网站并读取网页内容吗?
- 月历中如何得到当前选择的时间
- 网址:http://www.film888.com/film.asp?id=pengnick绝对的高速电影网站《星光影视网》(赶快注册)
- 利用VC的向导可以生成这4个类,这4个类的关系是什么呢?
- CSocket connect 连接失败 GetLastError == 10065
- 串口 + WAVECOM WISMO2C2-G900/1800 + 手机短信编程, 救命!!!!!!!!!
- 怎样才能捕获浏览器中点击的键接。谢谢
- 关于对话框的简单问题
- 在用FMC建立的程序中怎样使用API函数?
- 遍历文件夹时显示进度条
- 想实现鼠标移至某处显示图片,移开则不显示图片怎么办?
SetCapture是设置某个窗口接收鼠标的输入,与setFocus类似。
2. SetFocus是SDK中的函数(当然MFC中也有这个, 作用是一样的), 拥有Focus的窗口能接受键盘的输入
3. SetCapture设置当前线程的特定窗口的鼠标捕获, 也就是说当前线程一旦设定了某个窗口SetCapture, 那么在调用 ReleaseCapture 之前, 鼠标的消息都会发送到这个窗口
他们都还是有区别的
SetCapture
This function sets the mouse or style capture to a specified window that belongs to the current thread. After you call this function for a window, the window captures mouse input that occurs while the mouse cursor remains within the window. The window also captures mouse input that occurs when the user presses a mouse button while the mouse cursor is located within the window and continues to hold the mouse button down while moving the mouse. Only one window at a time can capture the mouse or stylus. SetFocus Function
The SetFocus function sets the keyboard focus to the specified window. The window must be attached to the calling thread's message queue.
在MFC中SetActiveView函数中调用了SetFocus, 所以你的ActiveView就能捕获键盘消息. 另外鼠标中键滚动消息是发送给拥有Focus的窗口的视图B能捕获浮动工具条的按钮消息
主要是因为视图b仍是ActiveView, 而MFC中浮动工具条会发送给当前的ActiveView
其他消息你是指比如工具栏, 菜单栏消息吧
在MFC框架中, 那些是将消息发送给ActiveView, 而不是发送给当前拥有Focus的窗口的
1、工具栏、菜单栏按钮消息,即所谓的命令消息,它们的消息传递的方式是拐弯上溯(侯俊杰老师的说法),消息会先到view那里,这里view就是MFC的活动视图,用SetActiveView来设置
2、鼠标、键盘消息是一般windows消息,它们消息传递的方式是直线上溯,消息会到拥有Focus的视图那里然后再请教你一个问题:
对于我说的第二种情况,如果没有视图拥有Foucs,那消息会到哪里呢?是发给活动视图,还是发给鼠标点击时位于最上端的试图?
这种能力是
当鼠标不在窗口区域或范围内移动时让窗口依然可以感知到鼠标在移动.
没错,不过你在窗口区域外点击的后会解除当前对视图A的captrue状态的.
setfocus从来没说过自己有captrue mouse的功能.
但他可以capture keyboard input;
而setCaptrue和它相反可以capture mouse input 但不能capture keyboard的,
这样说应该更清晰一些
1、工具栏、菜单栏按钮消息,即所谓的命令消息,它们的消息传递的方式是拐弯上溯(侯俊杰老师的说法),消息会先到view那里,这里view就是MFC的活动视图,用SetActiveView来设置。
2、鼠标、键盘消息是一般windows消息,它们消息传递的方式是直线上溯。其中,滚轮、键盘消息会传到拥有Focus的视图那里,用setfocus来设置,如果没有设置Focus,则会传到ActiveView那里;单击、双击、右键等消息会传到拥有Capture的试图那里,用SetCapture来设置,如果没有设置,则会到WindowFromPoint(获取包含指定点的窗口的句柄)那里。
有什么不足的还请各个补充一下,感激不尽!