在线程中处理时钟消息

xunknown 2003-03-28 02:05:52
我要达到一个目的,想通过多线程实现:
一个线程执行一个动画,但是不能是循环(它会导致程序不能即可响应鼠标键盘消息)
我想通过定时器来实现,我怎么在这个线程接收定时器消息?
另外,我期望在动画执行过程中随时使用鼠标(点击工具栏)或者键盘终止或者暂停或者继续动画。
我应该怎么做?
...全文
63 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xunknown 2003-03-28
  • 打赏
  • 举报
回复
thanks.
foxustc 2003-03-28
  • 打赏
  • 举报
回复
放眼望去,全是星星,星星大集合,hoho。
NowCan 2003-03-28
  • 打赏
  • 举报
回复
就是啊,像你说的那样就没有多线程的优势了。
不明白你的程序怎么是这样?
webber84 2003-03-28
  • 打赏
  • 举报
回复
"一个线程执行一个动画,但是不能是循环(它会导致程序不能即可响应鼠标键盘消息)"

既然是多线程,那你为什么还担心这个呢? 处理鼠标和键盘消息应该是主线程干的事,你的线程只要负责动画就行了。
masterz 2003-03-28
  • 打赏
  • 举报
回复
unsigned long WINAPI Thread(PVOID pvoid)
{
MSG msg;
PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE);
UINT timerid=SetTimer(NULL,111,3000,NULL);
BOOL bRet;
int count =0;
while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
if(msg.message==WM_TIMER)
{
count++;
printf("WM_TIMER in work thread count=%d\n",count);
if(count>4)
break;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
KillTimer(NULL,timerid);
printf("thread end here\n");
return 0;
}

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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