想用POINT结构限制坐标点的数量,(仿照Programming Windows上面的一段)。先用static POINT point[1000];然后“case WM_MOUSEMOVE:
if(wParam&&iCount<1000){
point[iCount].x=LOWORD(lParam);  <------一加上这句运行时就崩溃
point[iCount++].y=HIWORD(lParam); <------同上
hdc=GetDC(hwnd);
SetPixel(hdc,LOWORD(lParam),HIWORD(lParam),0);
ReleaseDC(hwnd,hdc);
}
return 0; ”
只要把point那两句话去掉,运行正常,可以用鼠标绘出点。这是为什么?

解决方案 »

  1.   

    if(wParam&&iCount<1000)改成
    if(wParam&&iCount<1000&&iCount>=0)
      

  2.   

    改完后什麽也画不出来了?!代码:
    case WM_LBUTTONDOWN:
    iCount=0;
    InvalidateRect(hwnd,NULL,true);
    return 0; 
        case WM_MOUSEMOVE:

    if(wParam&&iCount<1000&&iCount>=0){
    point[iCount].x=LOWORD(lParam);
    point[iCount++].y=HIWORD(lParam);
    hdc=GetDC(hwnd);
    SetCursor(LoadCursor(NULL,IDC_UPARROW));
    ShowCursor(true);
    SetPixel(hdc,LOWORD(lParam),HIWORD(lParam),0);
    ReleaseDC(hwnd,hdc);
    }
    return 0; 
    case WM_LBUTTONUP:
    InvalidateRect(hwnd,NULL,false);
    return 0;
      

  3.   

    把这句:
       if(wParam&&iCount<1000&&iCount>=0)
    改成
       if(wParam&&(iCount<1000)&&(iCount>=0))
    试试。我象可能跟运算符的优先级有关,你没有跟踪一下吗?
      

  4.   

    iCount变量也应该设为静态变量
      

  5.   

    什么都画不出来说明iCount没有正确初始化,
    如果iCount是局部变量,每次函数结束都将销毁,没法正确保存你的点的数目
      

  6.   

    多谢楼上!你说对了!忘了static.谢谢大家,都有分!