settimer的很麻烦的问题,急于解决,望各位大侠指教!!!

lyh031112 2005-05-09 12:32:41
我自己建了一个类CImageDealing,继承于CWnd
然后我在这个类里新建了一个函数
void CImageDealing::BeginDetect()
{
::MessageBox(NULL,"开始计时了","^_^",MB_ICONERROR);
this->SetTimer(WM_TIMER+201,1000,NULL);
}
再在另一地方调用它
CImageDealing *CImgDel;
CImgDel = new CImageDealing();
CImgDel->BeginDetect();
能构显示出"开始计时了"的提示信息,可确定后就出现错误了,
出现:
debug assertion failed
file:afxwin2.inl
line:186

我将this->SetTimer(WM_TIMER+201,1000,NULL);语句去掉就能运行正常,不会出现前面的错误,请问这到底是什么原因啊,怎样才能解决这个问题!
...全文
131 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyh031112 2005-05-11
  • 打赏
  • 举报
回复
我知道原因了,我跟踪调试了一下,发现问题处在消息路由上,因为我是自己写的类,可我还是不知道我自己写的类为什么就不能接收消息?
dfyang 2005-05-09
  • 打赏
  • 举报
回复
WM_TIMER+201????---->one of numbers:0 ~ 99
zjg751206 2005-05-09
  • 打赏
  • 举报
回复
SetTimer(WM_TIMER+201,1000,NULL);就可以了
lyh031112 2005-05-09
  • 打赏
  • 举报
回复
是啊,我将它申明在了一个局部函数中了,可我后来将它放在外面,变成全局得,还是那个错误
xqk 2005-05-09
  • 打赏
  • 举报
回复
CImageDealing *CImgDel; //你别告诉我说把这个类对象指针声明建立在OnInitDialog中或者相关的局部函数中了!

CImgDel = new CImageDealing();
CImgDel->BeginDetect();

lyh031112 2005-05-09
  • 打赏
  • 举报
回复
SetTimer这样用是肯定没有问题的,因为我已在其它地方试验过了,没有错误.但我不知道它为什么还会出错
lyh031112 2005-05-09
  • 打赏
  • 举报
回复
我又换了好几个ID,还是不行
开始我还换过好几个继承的类,我将CWnd 换成过CView,CDialog等,后来结果都出现相同的错误
xqk 2005-05-09
  • 打赏
  • 举报
回复
SetTimer() 第一个参数是UINT类型 ,标识了这个TIMER的ID,而返回值也是这个指定的标识

这个参数可以是任意无符号的整数都可以

你跟踪一下程序,看是不是执行了两遍这个函数,而创建了两个标识ID一样的定时器?而出现的错误
myhaocat 2005-05-09
  • 打赏
  • 举报
回复
gz
oyljerry 2005-05-09
  • 打赏
  • 举报
回复
SetTimer(0,1000,NULL);

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧