static int Iscyclerun=1//循环有效
switch (message)
{
 case  WM_LBUTTONUP:
     Iscyclerun=0;//停止循环 case WM_TIMER:
KillTimer(hwnd,1);
while(Iscyclerun==1)
{}
case WM_LBUTTONDOWN: 
.....
SetTimer(hwnd,1,1000,NULL);
以上代码模拟左键按下并在循环体内做相关处理,释放左键,停止处理.问题是当进入循环体时,WM_LBUTTONUP就响应不了了,进入死循环了,这是什么原因,则么解决啊

解决方案 »

  1.   

    case WM_TIMER 里的 while 所致, 因此要改一下, 如:
    case WM_TIMER:
    if (Iscyclerun==1)
    {
     // 做左键按下的处理
    }
    else
    {
      KillTimer(hwnd,1);
     // 释放左键,停止处理
    }
      

  2.   

    while(Iscyclerun==1)
    {}
    如果里面没对Iscyclerun作重新赋值处理,明显一个死循环
      

  3.   

    在WM_LBUTTONUP响应函数里Iscyclerun=0;//停止循环,看清楚再回帖好不好,有了循环响应不了WM_LBUTTONUP消息了,所以死在那了
      

  4.   

    窗口又不是多线程的,怎么可能同时响应 WM_LBUTTONUP 和 WM_TIMER 呢,你当这是单片机啊。
      

  5.   

    在WM_LBUTTONUP响应函数里Iscyclerun=0;//停止循环,看清楚再回帖好不好
    ---------
    问题就在这,你以为能跳出while循环去响应WM_LBUTTONUP然后置0?
    单线程,怎么可能从一个while死循环中跳出去