win32中SetCapture 和 ReleaseCapture的使用(查一下在VCL中的使用)

时间:2022-07-01 01:50:53

比来在用win32写《visual C++经典游戏措施设计》中的扫雷游戏,在写到鼠标点击雷区的时候用到了SetCapture,和ReleaseCapture这对系统函数。

那么为什么需要用到鼠标捕获的函数呢?

我错误地认为鼠标的跟踪可以由Point进行传值措置惩罚惩罚,就能实现我想要的成果,但是我却疏忽了如果我的鼠标按下的时候把鼠标移除窗口外面的情况,这种情况的时候鼠标是在外面的,那么当我把鼠标弹起的时候鼠标的位置就不在扫雷窗口里面了,因此我需要在按下鼠标的时候捕获鼠标的位置,这样就解决了鼠标不在窗口里面的问题。

下面我引用百度百科里的关于SetCapture的介绍:

 函数成果:该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的界限内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。

  函数原型:HWND SetCapture(HWND hwnd);   参数:   hWnd:当前线程里要捕获鼠标的窗口句柄。   返回值:返回值是上次捕获鼠标的窗口句柄。如果不存在那样的句柄,返回值是NULL。   备注:只有前台窗口才华捕获鼠标。如果一个后台窗口想捕获鼠标,则该窗口仅为其光标热点在该窗 口可见部份的鼠标事件接收动静。此外,即使前台窗口已捕获了鼠标,用户也可点击另一个窗口,将其调入前台。当一个窗口不再需要所有的鼠标输入时,创建该窗 口的线程该当挪用函数ReleaseCapture来释放鼠标。此函数不能被用来捕获另一进程的鼠标输入。   Windows 95:挪用SetCaptune会引起掉去鼠标捕获的窗口接收一个WM_CAPTURECHANGED动静。   速查:头文件:Winuser.h:输入库:user32.lib。   Javascript 鼠标捕获   鼠标捕获(setCapture)感化是将鼠标事件捕获到当前文档的指定的东西。这个东西会为当前应用措施或整个系统接收所有鼠标事件。

ReleaseCapture,是一种计算机用语,函数成果是该函数从当前线程中的窗口释放鼠标捕获,并恢复凡是的鼠标输入措置惩罚惩罚。

函数成果:该函数从当前线程中的窗口释放鼠标捕获,并恢复凡是的鼠标输入措置惩罚惩罚。捕获鼠标的窗口接收所有的鼠标输入(无论光标的位置在哪里),除非点击鼠标键时,光标热点在另一个线程的窗口中。

函数原型:BOOL ReleaseCapture(VOlD)

返回值:如果函数挪用告成,返回非零值;如果函数挪用掉败,返回值是零。若想获得更多的错误信息,请挪用GetlastError函数。

备注:应用措施在挪用函数SetCaPture之后挪用此函数。

下面我举一个例子,能简单地舆解SetCapture和ReleaseCapture的感化:

当你在浏览即日志的时候,你会拉动右手边的滑动条来调解内容上下位置,那么当你按下左键的时候,移动鼠标到非滚动条处,你会发明上下移动鼠标滚动条仍然后控制,对,,这就是俘获鼠标函数SetCapture的感化。

https://blog.csdn.net/haussuden/article/details/5853365

win32中SetCapture 和 ReleaseCapture的使用(查一下在VCL中的使用)

标签:

原文地点:https://www.cnblogs.com/findumars/p/8964116.html