社区
C++ Builder
帖子详情
压下一个按钮,不断的触发一个动作,直至放开按钮,怎么做?
Libran
2002-10-07 04:42:32
.
...全文
87
22
打赏
收藏
压下一个按钮,不断的触发一个动作,直至放开按钮,怎么做?
.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Libran
2002-10-12
打赏
举报
回复
多谢,不过应该修改一下:
{
if(Button==mbLeft)
{
UP = false;
int i = 0;
while (!UP)
{
Button1->Caption = AnsiString(i++);
Application->ProcessMessages();//防止进入死循环
}
}
}
网事随逢
2002-10-12
打赏
举报
回复
我回去试了一下,实现了这样一个结果不知道你是否满意?:
1、放一个Button1到窗体上。
2、定义全局变量 bool UP=false;
3、在OnMouseDown()事件里
{
if(Button==mbLeft)
{
UP=false;
if(!UP)
{
for(int i;i<=1000000;i++)
{
Button1->Caption=AnsiString(i);
Application->ProcessMessage;//防止进入死循环
if(UP) break;
}
}
}
}
4、在OnMouseUp事件里面:
{
UP=true;
}
5、从别人那里学来的,共享。如果有问题继续讨论。
注:Application->ProcessMessage实现系统资源的自动维护与配置,如果出现资源使用优先级问题或资源使用分配不足问题,该循环不会影响其他线程的进行,但是回减缓本身循环的速度。因此不一定使用线程去处理??!!
orcher
2002-10-09
打赏
举报
回复
智力题?设个全局变量+while循环就不错呀?
你还可以复杂一点,自定义消息,然后不停发送不停捕捉
更复杂一点可以用信号量和timer
最复杂的你可以把一个布尔量写到一个文件里,press和down的时候修改文件
mme
2002-10-08
打赏
举报
回复
timer控件好像不太好,占用太多cpu时间,而且不够准确
orcher
2002-10-08
打赏
举报
回复
用个回调函数怎么样?--乱说的,别骂我,呵呵
wzn0521
2002-10-08
打赏
举报
回复
是啊,用个Timer就可以了!
bequickly
2002-10-08
打赏
举报
回复
我觉得可以这样
在MOUSEDOWN的事件里
while(TRUE)
{
// do sth..
sleep(100); // <- 加一些延时
::PeekMessage(...)
::PumpMessage..
if (msg.. == MOUSEUP)
break
}
但是这样很无聊 效率肯定比其它方法高 但TIMER是最合适做这个工作的 如果要严格控制时间就去用THREAD
bcbsoft
2002-10-08
打赏
举报
回复
同意 cch7701(虾米) 的方法
liu76xt 考虑得更周全
风-君子
2002-10-08
打赏
举报
回复
楼上的程序有试过吗?这么做执行鼠标按下状态时就进入死循环了,根本执行不了MouseUp事件。
个人感觉用线程和用Timer控件就没意思了。
Click事件实在鼠标弹起后,OnMouseUp事件之前执行,我想这是难点吧。
keaiser
2002-10-08
打赏
举报
回复
用Timer应该可以
不过我觉得响应Button的MouseDown和MouseUp事件,
bool flag=true; //在头文件的private区
//一下在MouseDown中
if(Button==mbLeft)
{
while(flag)
{
.......
}
}
//一下在Button的MouseUp中
if(flag)
flag=false;
我觉得这样更好一些,各位看呢?
szbug
2002-10-07
打赏
举报
回复
用一个Timer就行了。。。有问题吗?
网事随逢
2002-10-07
打赏
举报
回复
如果这个需求是孤立的话,应该有很多方法,但是如果不是孤立的而是在一个整个的系统中可能用线程比较好,因为这样易于管理,可以设定优先级:
1、如果使用timer,那在触发onmouseup onmousedown 的时候如果有更高优先级的处理请求增么办?比如:在onmousedown 里我实现删除N条纪录,但是主进程同时在进行udp的收发,由于udp是不可靠的,应该尽量保持其足够的系统资源,这样的话是否会有问题。
2、如果使用线程,可以根据需要设置不同的处理优先级,可能会好一些。
3、我要回去试试。
烟波三千里人鬼五百年
2002-10-07
打赏
举报
回复
Application->ProcessMessage()
大大怪老张
2002-10-07
打赏
举报
回复
弄个while循环
循环的开关在button的onmousedown里设为true,onmouseup里设成false
当然了,如果不是把循环放到单独的线程里,记得要加 Application->xxxMessage(); //具体函数名字忘了 :(
shadowstar
2002-10-07
打赏
举报
回复
也可以用线程来实现呀!~
南郁
2002-10-07
打赏
举报
回复
不要用到去 new 一个 TTimer控件,最好直接调用API的Timer,在按下时建立,抬起后立即Kill掉,这样代码虽然比使用TTimer多一些,但程序负荷相当显得以便。
zlc990405
2002-10-07
打赏
举报
回复
也可以启动一个进程,还需要一个信号量进行控制。
Libran
2002-10-07
打赏
举报
回复
多谢虾米,已经用Timer实现过了,只是觉得应该有更好的办法
suerain
2002-10-07
打赏
举报
回复
哈哈,还是timer
zlc990405
2002-10-07
打赏
举报
回复
我的意见也是使用timer控件。
加载更多回复(2)
C# 实战项目——制作仿QQ软件
QQ 大家都用过,在现在这个互联网时代,越来越多的人使用 QQ 进行沟通交流,本章将使用 C# 制作
一个
仿 QQ 的聊天软件 —— Q 友。通过本课程学习,你将学到以下知识点:1、Form窗体关键属性、方法和事件的应用 2、如何
触发
窗体和控件的事件3、ListView控件和ImageList组件的结合使用 4、数据库及数据表的创建5、使用C#操作SQL Server数据库 6、Timer定时器组件的使用7、如何判断是否按下键 8、自定义最小化和关闭
按钮
同时将提供完整的项目开发流程,手把手的带你
做
完
一个
完整的项目。
一个
MMORPG游戏的常规技能系统
先说下技能模块每个部分的职责和原理: 技能信息管理:管理unit所拥有的技能以及技能的等级、cd等。在我们游戏中,这里还需要负责管理符文,符文会对技能信息进行修改。 技能调用接口:AI或者UI操作
触发
技能,
触发
技能时可能选择了
一个
目标(AI),也可能并没有目标。 技能流程管理:
一个
技能可能由多个子技能以移动的执行模式组合而成,而每
一个
最终执行的技能执行过程也存在
一个
流程,一般包括:前摇过程-结算点-后摇过程。技能在前摇结束时进入技能真正的结算流程,结算流程可能创建子弹,也可能
触发
buf或者...
前端基础部分习题
1.DOCTYPE 的作用是什么?标准模式与兼容模式各有什么区别? 声明文档的解析类型(document.compatMode),避免浏览器的怪异模式。 !DOCTYPE是一种标准通用标记语言的文档类型声明,它的目的是要告诉浏览器它应该使用什么样的文档类型定义(DTD)来解析文档。 标准模式,浏览器按照W3C的标准解析渲染页面,这样一来,你的页面在所有的浏览器里显示的就都是
一个
样子了。标准模式的排版 和 JS运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老
Pygame Event事件模块(详细示例)
Pygame Event事件模块(详细示例) 事件(Event)是 Pygame 的重要模块之一,它是构建整个游戏程序的核心,比如鼠标点击、键盘敲击、游戏窗口移动、调整窗口大小、
触发
特定的情节、退出游戏等等,这些都可以看
做
是“事件”,Pygame 会接受用户产生的各种操作(或事件),这些操作随时产生,并且操作量可大可小,那么 Pygame 是如何处理这些事件的呢? 事件类型 Pygame 定义了
一个
专门用来处理事件的结构,即事件队列,该结构遵循遵循队列“先到先处理”的基本原则,通过事件队列,我们可以有序的、
【Python】【进阶篇】八、Pygame的Event事件模块
【Python】【进阶篇】八、Pygame的Event事件模块
C++ Builder
13,822
社区成员
102,680
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章