社区
C++ Builder
帖子详情
如何解决按住系统按钮导致消息阻塞?
futurecs
2012-06-29 12:22:36
最近在做一个远程传输的项目,发现一个问题,程序中的任何一个窗口按住 最小化或者最大化、关闭按钮不放,会导致整个程序所有消息阻塞,线程中的数据传输也会停止,不知该如何解决?需要自己处理什么系统消息吗?
最简单的测试, 新建一个窗体,放一个Timer控件,按住最小化的时候 Timer里的代码就不运行了。
放一个CppWebBrowser控件,打开一个视频网页播放,按住最小化按钮的时候播放就停止了,而IE就没有这个问题。
CB2010,请问该如何解决。
...全文
275
10
打赏
收藏
如何解决按住系统按钮导致消息阻塞?
最近在做一个远程传输的项目,发现一个问题,程序中的任何一个窗口按住 最小化或者最大化、关闭按钮不放,会导致整个程序所有消息阻塞,线程中的数据传输也会停止,不知该如何解决?需要自己处理什么系统消息吗? 最简单的测试, 新建一个窗体,放一个Timer控件,按住最小化的时候 Timer里的代码就不运行了。 放一个CppWebBrowser控件,打开一个视频网页播放,按住最小化按钮的时候播放就停止了,而IE就没有这个问题。 CB2010,请问该如何解决。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
futurecs
2012-07-03
打赏
举报
回复
自己解决了,给需要绘制的窗体发自定义消息,然后处理自定义的消息中绘图就可以了。
futurecs
2012-06-30
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
考虑窗口处理为无标题栏的,并自己绘制标题栏,最大化,最小化以及关闭按钮,这样应该不会阻塞窗口的绘图事件……
[/Quote]
这是一种办法,但是代价有些大了,有没有什么办法在 WM_NCLBUTTONDOWN 或者 WM_CAPTURECHANGED
消息上做些手脚来实现呢。
「已注销」
2012-06-30
打赏
举报
回复
[Quote=引用 7 楼 的回复:]
...
另外一个问题谁能解决呢? 如何像IE或者WIN自带的远程协助/远程桌面 那样,按住系统按钮也不会阻塞该窗口的绘图事件。
[/Quote]
考虑窗口处理为无标题栏的,并自己绘制标题栏,最大化,最小化以及关闭按钮,这样应该不会阻塞窗口的绘图事件……
futurecs
2012-06-30
打赏
举报
回复
问题找到了,UDP的线程中 有一些向窗体输出记录的代码,涉及到VCL的东西可能自动同步调用了,所以按住主窗口上的系统按钮会导致线程也阻塞,把线程中VCL相关的代码都删掉就没问题了,按住系统按钮线程中的代码也会继续运行。
另外一个问题谁能解决呢? 如何像IE或者WIN自带的远程协助/远程桌面 那样,按住系统按钮也不会阻塞该窗口的绘图事件。
dataxdata
2012-06-29
打赏
举报
回复
你的程序有几个线程?
futurecs
2012-06-29
打赏
举报
回复
大多数的程序在按住系统按钮后就都停止工作了,比如WINRAR 在压缩过程中按住最小化,稍等一会儿鼠标移动到别处再松开,压缩进度还是跟按下之前一样的,Windows 自身的资源管理器在按住最小化的时候 里面的内容也停止刷新,但是例如IE 就不会,按住系统按钮的时候 网页的内容依然会播放, Windows 的远程协助,远程桌面,在按住系统按钮的时候,画面依然会更新,怎么才能实现呢
futurecs
2012-06-29
打赏
举报
回复
类似远程控制的程序,用UDP传输鼠标的指令,客户端发送WM_LBUTTONDOWN和WM_LBUTTONUP等领命到服务端,服务端接收后作出相应的操作,但是发现了一个问题,如果用客户端远程控制点击服务端主窗口的最小化按钮,服务端在只收到 WM_LBUTTONDOWN 后就会阻塞后续所有发来的消息,接下来的WM_LBUTTONUP 消息就被阻塞了,服务端就相当于按住了最小化按钮一直没松开,我用的Indy的UDP控件,会不会是控件的问题
dataxdata
2012-06-29
打赏
举报
回复
你的传输线程和主线程之间是什么关系?是否需要主线程不断向传输线程推送数据?
futurecs
2012-06-29
打赏
举报
回复
按住任意窗口上的系统按钮,线程中的代码也不运行了。
dataxdata
2012-06-29
打赏
举报
回复
把传输部分放在一个独立的线程中
Android
按住
说话,开始录音,停止录音,显示到列表,点击列表项播放。-IT计算机-毕业设计.zip
这个Android应用源码Demo主要展示了如何在Android平台上实现“
按住
说话”功能,即用户
按住
屏幕上的
按钮
开始录音,松开
按钮
时停止录音,并将录制的音频文件显示在一个列表中。点击列表中的任何一项,可以播放对应的...
如何禁止关闭操作
系统
如果用户使用强制手段(如
按住
电源
按钮
或物理断电),程序无法阻止
系统
关闭。因此,在设计这样的功能时,应充分考虑各种可能的情况,并确保在不影响
系统
稳定性和安全性的同时,提供良好的用户体验。
VC button 长按操作
8. **多线程考虑**:在某些情况下,长按操作可能会涉及复杂的计算或异步任务,这时可能需要在单独的线程中执行,以避免
阻塞
主线程
导致
用户界面无响应。 9. **兼容性问题**:在不同的设备和操作
系统
版本上,长按行为...
按住
说话,开始录音,停止录音,显示到列表,点击列表项播放。.zip
在Android开发中,实现“
按住
说话,开始录音,停止录音,显示到列表,点击列表项播放”的功能是一项常见的需求,通常应用于语音
消息
应用或者有声读物等场景。这个功能涉及到Android
系统
的多媒体处理、用户界面交互...
控制电机的几种控制电路原理图
点动控制指的是电机启动后,只要操作者
按住
启动
按钮
,电机就会运行;一旦释放
按钮
,电机则停止运行。这种控制方式适用于需要短暂运行电机的场景,如启动传送带。点动控制通常使用一个
按钮
和接触器来实现。 2. 连续...
C++ Builder
13,871
社区成员
102,693
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章