我定义了一个全局数组:
POINT XY[7];
同时我又定义了一个全局数组:
POINT pt[10000];用来记录WM_MOUSEMOVE时的鼠标的点:
pt[count++].x=LOWORD(lParam);
pt[count++].y=HIWORD(lParam);
在WM_LBUTTONUP中我想把XY[i]中的已有的值改成鼠标松开时的坐标,既:
XY[I].x=pt[count-1].x;XY[i].y=pt[count-1].y;
同时我调用InvalidRect();
本以为行,但在执行程序时,执行到LBUTTONUP时,出现非法错误!!
不知道是为什么?如果在WM_LBUTTONUP去掉XY[I].x=pt[count-1].x;XY[i].y=pt[count-1].y;就没有毛病了,我怎么也想不明白,难道是不能该全局数组?
但pt这个可以啊?难道是不能该已经赋值了的数组??
我百思不得其解,所以发贴求助啊!
那位大哥知道这个问题啊?(虽然很菜)
小弟谢过了!

解决方案 »

  1.   

    同时我调用InvalidRect();是什么意思
      

  2.   

    不行啊,我稍微动下鼠标就非法啊,还有,XY[I].x没有写错
      

  3.   

    哦,我调用InvalidRect();是我大错了,是InvalidateRect(hWnd,&rt,FALSE);
    调用WM_PAINT消息啊!
      

  4.   

    case   WM_MOUSEMOVE:
            
                if (wParam & MK_LBUTTON && count < 1000)
            
                {        
                               pt[count++].x = LOWORD (lParam) ;
            
                               pt[count++].y = HIWORD (lParam) ;    
            
                }
    break;
    注:我在LBUTTONDOWN中有:count=0;
    case WM_LBUTTONUP:
    XY[flag].x=ptt[iCount-1].x;XY[flag].y=ptt[iCount-1].y;
                               InvalidateRect(hWnd,&rt,FALSE);
    break;
    我在WM_PAINT中有个DRAWB()函数;可以画XY重的点,本想通过鼠标改点,再调用画,可是不行啊!
      

  5.   

    自己定义一个异常处理 看看count的值是不是超过了10000 !