releasecapture怎么做成:像BCB设计界面时可以多选控件并可拖动效果求解

releasecapture  时间:2021-06-10  阅读:()

SetCapture到底是什么?

函数功能:该函数在属于当前线程的指定窗口里设置鼠标捕获。

一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。

同一时刻只能有一个窗口捕获鼠标。

如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。

函数原型:HWND SetCapture(HWND hwnd); 参数: hWnd:当前线程里要捕获鼠标的窗口句柄。

返回值:返回值是上次捕获鼠标的窗口句柄。

如果不存在那样的句柄,返回值是NULL。

备注:只有前台窗口才能捕获鼠标。

如果一个后台窗口想捕获鼠标,则该窗口仅为其光标热点在该窗口可见部份的鼠标事件接收消息。

另外,即使前台窗口已捕获了鼠标,用户也可点击另一个窗口,将其调入前台。

当一个窗口不再需要所有的鼠标输入时,创建该窗口的线程应当调用函数ReleaseCapture来释放鼠标。

此函数不能被用来捕获另一进程的鼠标输入。

鼠标事件: setCapture捕获以下鼠标事件:onmousedown、onmouseup、onmousemove、onclick、ondblclick、onmouseover和onmouseout。

程序中主要是要捕获onmousemove和onmouseup事件。

msdn的介绍中还说到setCapture有一个bool参数,用来设置在容器内的鼠标事件是否都被容器捕获。

容器就是指调用setCapture的对象,大概意思就是: 参数为true时(默认)容器会捕获容器内所有对象的鼠标事件,即容器内的对象不会触发鼠标事件(跟容器外的对象一样); 参数为false时容器不会捕获容器内对象的鼠标事件,即容器内的对象可以正常地触发事件和取消冒泡。

Delphi如何实现无边框窗体的移动?

在控件的MouseDown事件中加入 if (ssleft in Shift) then begin ReleaseCapture; Perform(WM_mand, $F012, 0); end; 如form1: procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (ssleft in Shift) then begin ReleaseCapture; Perform(WM_mand, $F012, 0); end; end; end.

如何获取鼠标是否进入控件(按钮tips显示

作者:黎哲_海情 答:现mandbutton控件举例,其他控件一样: 1.首先声明两个API函数//获得焦点Function ulong SetCapture(ulong hWnd) Library "USER32.DLL"//释放焦点Function BOOLEAN ReleaseCapture() Library "USER32.DLL" 2.自定义用户事件鼠标在控件上移动mousemove(EventID号为pbm_mousemove),鼠标进入控件mousewithin,鼠标离开控件mousewithout。

3.声明一些Instance变量 boolean ib_mousecaptured//控件是否已经获得焦点 boolean ib_mousewithin//鼠标是否进入控件 integer ii_losecapture=0//控件是否要失去焦点 4.在mousemove事件中写入 if ii_losecapture 1 then if not ib_mousecaptured then//没有捕获鼠标移动 //捕获鼠标移动 SetCapture(handle(this)) ib_mousecaptured = TRUE else //已经捕获鼠标移动 if xpos < 0 or ypos < 0 or xpos width or ypos height then//鼠标不在该控件上//释放鼠标ReleaseCapture() ib_mousecaptured = FALSE //触发mousewithout事件 this.post event mousewithout() ib_mousewithin=false ii_losecapture=0 //this.of_set()elseif not ib_mousewithin then //触发mousewithin事件 this.post event mousewithin() ib_mousewithin=trueend ifend ifend ifelseii_losecapture=ii_losecapture + 1end if 5.最后你就可以在mousewithin和mousewithout中写入你想要的效果或事件。

of_set()可能是重置某些值的操作源码天空

怎么做成:像BCB设计界面时可以多选控件并可拖动效果求解

其中单个控件拖动方法: 其一:用mouseDown,mouseMove,mouseUp可实现,但占CPU大. 其二:在OnMouseDown: ReleaseCapture(); SendMessage(Button1-> Handle,WM_SYSCOMMAND,0XF012,0); 但不会触发mouseUp,Click,startDrag,DragDrop,EndDrag. 其三:在OnStartDrag: ReleaseCapture(); SendMessage(Button3-> Handle,WM_NCLBUTTONDOWN,HTCAPTION,0); 拖动好后,还要再在无任何处多点一下能恢复鼠标事件. 现要做成:在程序运行时,能动态添加/删除控件,且可以多选控件进行拖动,如BCB设计界面. ------解决方案--------------------------------------------------------这个 不知道你得最终意图

  • releasecapture怎么做成:像BCB设计界面时可以多选控件并可拖动效果求解相关文档

物语云-VPS-美国洛杉矶VPS无限流量云windows大带宽100M不限流量 26/月起

物语云计算怎么样?物语云计算(MonogatariCloud)是一家成立于2016年的老牌国人商家,主营国内游戏高防独服业务,拥有多家机房资源,产品质量过硬,颇有一定口碑。本次带来的是特惠活动为美国洛杉矶Cera机房的不限流量大带宽VPS,去程直连回程4837,支持免费安装Windows系统。值得注意的是,物语云采用的虚拟化技术为Hyper-v,因此并不会超售超开。一、物语云官网点击此处进入物语云...

PacificRack(年付低至19美元),夏季促销PR-M系列和多IP站群VPS主机

这几天有几个网友询问到是否有Windows VPS主机便宜的VPS主机商。原本他们是在Linode、Vultr主机商挂载DD安装Windows系统的,有的商家支持自定义WIN镜像,但是这些操作起来特别效率低下,每次安装一个Windows系统需要一两个小时,所以如果能找到比较合适的自带Windows系统的服务器那最好不过。这不看到PacificRack商家有提供夏季促销活动,其中包括年付便宜套餐的P...

RAKsmart 2021新年新增韩国服务器及香港美国日本VPS半价

RAKsmart 商家我们肯定不算陌生,目前主要的营销客户群肯定是我们。于是在去年的时候有新增很多很多的机房,比如也有测试过的日本、香港、美国机房,这不今年有新增韩国机房(记得去年是不是也有增加过)。且如果没有记错的话,之前VPS主机也有一次磁盘故障的问题。 这不今天有看到商家新增韩国服务器产品,当然目前我还不清楚商家韩国服务器的线路和速度情况,后面我搞一台测试机进行...

releasecapture为你推荐
iso20000认证为什么ISO20000认证能够风靡全球?它对整个企业的发展有什么好处?企业资源管理系统企业内部管理系统有哪些网络审计网络安全审计系统的背景vga接口定义vga线有几种腾讯年终奖腾讯工作怎么样star413匡威jack star 的后标是不是真的?如图数据挖掘项目怎样利用大数据挖掘农业项目发展前景assemblyinfo关于ASP.NET中使用log4net记录日志assemblyinfoLOL的 X、L、CS 是什么意思微信智能机器人有一个人加我微信,他说他自己是图灵机器人,我想问一下这是啥软件怎么可以自动回复微信?
北京域名注册 edgecast stablehost linode代购 免备案cdn 免备案空间 最好看的qq空间 杭州电信宽带优惠 免备案cdn加速 北京主机托管 免费的加速器 vpsaa 免费php空间申请 电脑主机配置 魔兽世界网通服务器 关闭qq空间申请 网站服务器硬件配置 web服务器软件 789电影 上海联通网上营业厅 更多