唉,SetTimer之后,OnTimer却不响应。解决思路
唉,SetTimer之后,OnTimer却不响应。
如题,我是用VS 2005做的一个基于Dialog的程序,当我在我的程序中添加了SetTimer之后,在OnTimer这里打了个断点,但调试时始终不响应,进不了OnTimer这个函数内部。。不知道是不是因为我在程序中用了OnEraseBkgnd画背景的原因。唉,不知道为什么。
开始以为是这个开发平台有问题,就另建了一个小程序,把SetTimer添加进去,并添加了WM_TIMER响应,这一次有用,是好的。
代码太多了,贴上了不好看。看看各位有没有碰到这个情况。
------解决方案--------------------
WM_TIMER消息的优先级比较低,当消息缓冲区里没有其他的消息时,应用程序才会处理该消息,当消息队列里等待处理的消息比较多的时候,WM_TIMER就好像始终无法处理!
------解决方案--------------------
是不是你的程序中有死循环,阻塞了WM_TIMER消息
或是你在处理其他窗口消息影响到了这个Dialog的消息
------解决方案--------------------
你也可以试试自己用线程实现一个定时器
网上这样的代码很多
------解决方案--------------------
不是瞒清楚你说的,能看下程序么 ??
大概是调用出了问题。自习检查下,单步调试下看问题究竟在哪儿。
------解决方案--------------------
看看SetTimer调用了没有, 窗口句柄对不对,检查SetTimer的返回值
还没有线索就override CWnd::WindowProc, 看看message有传进来WM_TIMER没
------解决方案--------------------
我看了你的程序了,CPU平均90%以上。
问题出在你的CMyComboBox::OnPaint()里面。
把
CDC * pDC=this->GetDC();
改成
PAINTSTRUCT ps;
CDC* pDC = BeginPaint(&ps);
把
ReleaseDC(pDC);
改成
EndPaint(&ps);
就可以了。
------解决方案--------------------
OnPaint里面用CPaintDC dc(this)获取画图的DC。
------解决方案--------------------
不要用Debug调试Ontimer,用MessageBox()试一试。
如题,我是用VS 2005做的一个基于Dialog的程序,当我在我的程序中添加了SetTimer之后,在OnTimer这里打了个断点,但调试时始终不响应,进不了OnTimer这个函数内部。。不知道是不是因为我在程序中用了OnEraseBkgnd画背景的原因。唉,不知道为什么。
开始以为是这个开发平台有问题,就另建了一个小程序,把SetTimer添加进去,并添加了WM_TIMER响应,这一次有用,是好的。
代码太多了,贴上了不好看。看看各位有没有碰到这个情况。
------解决方案--------------------
WM_TIMER消息的优先级比较低,当消息缓冲区里没有其他的消息时,应用程序才会处理该消息,当消息队列里等待处理的消息比较多的时候,WM_TIMER就好像始终无法处理!
------解决方案--------------------
是不是你的程序中有死循环,阻塞了WM_TIMER消息
或是你在处理其他窗口消息影响到了这个Dialog的消息
------解决方案--------------------
你也可以试试自己用线程实现一个定时器
网上这样的代码很多
------解决方案--------------------
不是瞒清楚你说的,能看下程序么 ??
大概是调用出了问题。自习检查下,单步调试下看问题究竟在哪儿。
------解决方案--------------------
看看SetTimer调用了没有, 窗口句柄对不对,检查SetTimer的返回值
还没有线索就override CWnd::WindowProc, 看看message有传进来WM_TIMER没
------解决方案--------------------
我看了你的程序了,CPU平均90%以上。
问题出在你的CMyComboBox::OnPaint()里面。
把
CDC * pDC=this->GetDC();
改成
PAINTSTRUCT ps;
CDC* pDC = BeginPaint(&ps);
把
ReleaseDC(pDC);
改成
EndPaint(&ps);
就可以了。
------解决方案--------------------
OnPaint里面用CPaintDC dc(this)获取画图的DC。
------解决方案--------------------
不要用Debug调试Ontimer,用MessageBox()试一试。