请问各位,我想在对话框程序上实现报警提示的功能,即达到报警的条件后,有一个红色的报警灯在闪烁,否则该报警灯是绿色的。报警灯其实 就是一个或两个位图,不报警时画绿色的位图,报警时画红色的位图,不过要实现闪烁的效果。
我想用画位图的方法就可以实现,可是思路还是不具体。希望那个大家指点一下。我考虑先在Onpaint()函数中调用了一个函数画出绿色的位图。做一个定时器,当报警时将设置的一个标记量变为真,然后在定时器相应的函数里根据标记变量的真值画红色的位图。这样就可以达到闪烁了。可是因为我之前已经用了一个定时器,所以一共有两个定时器了。结果运行画出一次红色位图后程序就崩溃了。大家看看为什么啊。两个定时器如何使用,还有没有更好的方法来实现这个报警闪烁功能。
我觉得问题好像出在定时器上,可又找不出问题来。我的定时器:#define TIMER_UPDATETIME 1
#define TIMER_UPDATELIGHT 2//分别在需要的时候开启定时器,第一个是做其他用途的,和报警没关系
::SetTimer(m_hWnd,TIMER_UPDATETIME,1000,NULL);::SetTimer(m_hWnd,TIMER_UPDATELIGHT,2000,NULL);//处理函数,其中第二个是作画图的,具体内容就省略了。因为第一次可以画
void CTmCETCirDlg::OnTimer(UINT_PTR nIDEvent)
{
switch (nIDEvent)
{
case TIMER_UPDATETIME:
{
.....
}
break;
case TIMER_UPDATELIGHT:
{
.......
}
break;
}
}
//这个是在需要的时候关掉第二个定时器
::KillTimer(m_hWnd,TIMER_UPDATELIGHT);多谢大家给点建议吧
我想用画位图的方法就可以实现,可是思路还是不具体。希望那个大家指点一下。我考虑先在Onpaint()函数中调用了一个函数画出绿色的位图。做一个定时器,当报警时将设置的一个标记量变为真,然后在定时器相应的函数里根据标记变量的真值画红色的位图。这样就可以达到闪烁了。可是因为我之前已经用了一个定时器,所以一共有两个定时器了。结果运行画出一次红色位图后程序就崩溃了。大家看看为什么啊。两个定时器如何使用,还有没有更好的方法来实现这个报警闪烁功能。
我觉得问题好像出在定时器上,可又找不出问题来。我的定时器:#define TIMER_UPDATETIME 1
#define TIMER_UPDATELIGHT 2//分别在需要的时候开启定时器,第一个是做其他用途的,和报警没关系
::SetTimer(m_hWnd,TIMER_UPDATETIME,1000,NULL);::SetTimer(m_hWnd,TIMER_UPDATELIGHT,2000,NULL);//处理函数,其中第二个是作画图的,具体内容就省略了。因为第一次可以画
void CTmCETCirDlg::OnTimer(UINT_PTR nIDEvent)
{
switch (nIDEvent)
{
case TIMER_UPDATETIME:
{
.....
}
break;
case TIMER_UPDATELIGHT:
{
.......
}
break;
}
}
//这个是在需要的时候关掉第二个定时器
::KillTimer(m_hWnd,TIMER_UPDATELIGHT);多谢大家给点建议吧
解决方案 »
- 如何将DC加载的位图镜像?
- 请问IXMLDOMDocument中load(或loadXML)对应的释放操作是哪个?
- 事件选择模型下,在不通过发送心跳连接情况下,怎样才能获得客户端非法断开通知,比如客户端非法关机、断电等情况
- 这样的界面如果做?
- 怎样知道用户目前是否按下了Shift按钮?
- 在一个聊天程序中怎么实现分组聊天????????
- 求助
- 在线等待高手:为什么我在COM中的一个接口函数中new-delete老是出错?(有源代码)
- 多个dll向框架的不同View上显示视频容易照成卡死吗?
- 从HWND到文件路径
- 你们说说VC、MFC会象VFP那样被淘汰吗、VB也落寞了!看样子VC、MFC也不远了吧!
- 请问你们经常说的OD是什么?
{
if (status & 0x0001 == 0x0001) //red
DrawRed();
else if (status & 0x0002 == 0x0002 //green
DrawGreen();
else //画灰色的
DrawNothing();
}