vc下禁止按钮连续点击的方法

 最近接手的项目需要(其实就是一个桌面小软件),需要通过MFC上的上一页和下一页按钮,控制CHTMLCTRL的显示。但CHTMLCTRL显示是有延迟的,一旦按钮点击过快,该控件会无法及时响应。所以,需要做一个禁止按钮连续点击的功能。

 

该过程主要使用ontimer来实现的。

1. 先点击对话框,找到可添加的事件(属性里面)WM_TIMER,添加ontimer事件。

  注意,ontimer事件,在vc 6.0 和vs2008中的声明是有区别的。

  vc 6中是:

  vs2008中:

当然,通过系统生成的方式是最方便的而且不会出错。

 

2. 在按钮的点击时间函数里面,先要禁用该按钮,然后执行所要处理的过程,之后设置时钟。这里需要注意的是时钟的启动与该函数的执行仍然是线性的,即当当前函数执行完成之后,才会执行Ontimer。

这样就设置好了一个时钟,一旦点击该按钮,就会执行该时钟,间隔100ms执行。

 

3. 在ontimer里面进行按钮的失效和有效设置:

 

这样每次按了上一页的按钮,就会执行一次Ontimer()函数,并且判断其状态,如果有效状态,就kill掉该timer。其中的m_bButtonEnable_pre可以在按钮的处理程序中动态改变。

 

以上是本人执行成功的例子。下面介绍一个网上给的另外的解决方案。

 

=============================传说中的分割线=============================

 

 可以重新设置按钮的焦点,也就是转移焦点的做法。

 

 

 这个未经试验,可能会奏效吧。

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @ 2011-04-05 16:06  wangicter的博客  阅读(570)  评论(0编辑  收藏  举报